デプロイ戦略についてまとめる。
デプロイ戦略の前提知識として言葉の定義を明確にしておく。
デプロイとは、「実行環境に実行可能なプログラムを配置すること」 リリースとは、「ユーザーがアクセスできる状態にすること」 ロールバックとは、「古いバージョンのリリースをリリースすること」
代表的と思われるものを取り上げる。
既存環境に新しいバージョンを直接デプロイする手法。
余談だが、bmf-tech.comはdocker-composeを使っているのだが、デプロイはインプレースデプロイである...。 cf. [bmf-techを支える技術(https://bmf-tech.com/posts/bmf-tech%e3%82%92%e6%94%af%e3%81%88%e3%82%8b%e6%8a%80%e8%a1%93#5-%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4)
シンボリックリンクを使って、新旧バージョンを切り替える手法。
環境をブルーとグリーンの2つを用意し、新バージョンを片方にデプロイし、新旧バージョンの両方を一時的に展開する手法。 新バージョンに問題がなければ、旧バージョンから新バージョンにトラフィックを切り替える。 ブルーとグリーンそれぞれの環境は保たれる。
ブルーグリーンと概ね同じ手法だが、トラフィック切り替え後に旧環境の方を削除する点が異なる。
一定数ずつ新しいバージョンをデプロイ、リリースしていく手法。 全数完了するまでは新旧両方の環境へのトラフィックが有効な状態が続く。
一部のユーザーやトラフィックに対してのみ新しいバージョンを展開することができるような形で、一部だけ新しいバージョンをデプロイ、リリースする手法。
それぞれのデプロイ戦略について、選定する際に重要となりそうな観点をピックアップし、表にまとめる。
デプロイ手法 | ゼロダウンタイム | 本番環境のテスト | ロールバック時間 | 運用コスト |
---|---|---|---|---|
インプレースデプロイ | × | × | 高 | 低 |
シンボリックリンクデプロイ | ○ | × | 低 | 中 |
ブルーグリーンデプロイ | ○ | ○ | 低(トラフィック切り替え前後でも低) | 高 |
イミュータブルデプロイ | ○ | ○ | 低(旧環境削除するまでに限る) | 高 |
ローリングデプロイ | ○ | × | 低 | 中 |
カナリアデプロイ | ○ | ○ | 中 | 高 |
関連書籍