マイクロサービスが主流になってきている今の時Deploy戦略をおさらいしておきたくて調べてまとめます。
今回は代表的なDeploy戦略としてRolling、Blue/Green、Canaryについて書きます。
Rolling
Rolling Deployは1つずつ旧バージョンを新バージョンへ交換していく戦略!
サービス中のサーバー1台を除き、そのサーバー以外に新しいサーバーを追加すます。
その間旧バージョンから新しいバージョンへトラフィックを移していきます。この戦略はサーバー数に制約がある場合有効だが、Deploy中にはインスタンス数が減るのでサーバー処理要領を考慮する必要があります。
Blue/Green
Blue/Green Deployentは旧バージョンから新バージョンへ一気に変換する戦略!
旧バージョンと新バージョンのサーバーを同時に並列で構成し、deploy時点になるとトラフィックを新バージョンへ向けます。一つのバージョンのみ本番になるのでバージョン管理問題を防げるのと、早いロールバックが可能となりメリットがあります。また他のメリットとしては運用環境に影響を与えずに実際のサービス環境で新バージョンのテストが可能になります。でもサーバーの台数が倍になるのでコストがかかるのと、新環境へのテストが必要になるのでテストに必要な時間も増えるデメリットがあります。
Canary
'Canary(カナリア)'の用語の語源を知ることで理解しやすいです。カナリアという鳥は体に悪いガスなどに敏感で、過去鉱山の労働者はこのカナリアを隣に置いてカナリアの具合が悪くなることで危機を検知し退避したと言われています。
カナリアデプロイは危機を早く検知するデプロイ戦略!
旧バージョンの新バージョンのサーバーを構成し、一部のトラフィックを新バージョンへ分散しエラーを検知します。この方法ではA/Bテストも可能で、エラー率や性能のもイーターにも有用です。分散後結果によって新バージョンの運用環境を変えれるし、また旧バージョンへ戻すことも可能です。