マイクロサービス化の一番美味しい所
マイクロサービス化、メリット、デメリット色々言われていますが、
マイクロサービス化(とセットで実施される継続的デリバリー)の一番美味しいところは
- 切り戻し可能(Blue-Green Deployment)
だと思います。
切り戻し例
- webサイトのlogin機能になんとかSNS連携ログイン機能を入れた
- 本番環境にアップした
- 本番環境では動かなかった(外部連携は本番サーバでしか確認出来ない、というのはありがち)
- あわてて元に戻す
この時、
- もう一度古いソースコードを配布し直す(docker再配布含む)
というのは、さえないやり方です。
表側 | 裏側 |
---|---|
ロードバランサー(nginx,AWS LB等) | apache (brue) |
apache (green) |
のような仕組みで、
- 本番環境は今apache(blue)で動いている
- 本番環境apache(green)にアップした
- 本番環境apacheをblue->greenに切り替える
- 本番環境apache(green)では動かなかった
- 本番環境apacheをgreen->blueに切り戻す
による秒単位の切り戻しを実現しましょう。
第2歩目以降
これができれば、第2歩目以降で
表側 | 裏側 |
---|---|
ロードバランサー(nginx,AWS LB等) | apache (brue) /login |
apache (brue) /login 以外 | |
apache (brue) 画像ファイル | |
apache (green) /login | |
apache (green) /login 以外 | |
apache (green) 画像ファイル |
だったり
表側 | 裏側 |
---|---|
ロードバランサー(nginx,AWS LB等) | apache (brue) php 7.0 |
apache (green) php 7.3 |
だったり
表側 | 裏側 |
---|---|
ロードバランサー(nginx,AWS LB等) | apache (brue) レガシーPHP |
apache (green) Laravel 5.1 | |
apache (yellow) Laravel 5.5 | |
apache (orange) golang 1.12 |
といった事が可能になります。
言語(php,ruby,golang,...)がどうの、
フレームワーク(Laravel,Symfony,Slim,...)がどうの、
といった話は、だいぶん先の話です。
レガシーPHPでもマイクロサービス化進められますよ。