デプロイ戦略について

アプリケーション

概要

デプロイ戦略についてまとめる。

デプロイ・リリース・ロールバックの定義

デプロイ戦略の前提知識として言葉の定義を明確にしておく。

デプロイとは、「実行環境に実行可能なプログラムを配置すること」 リリースとは、「ユーザーがアクセスできる状態にすること」 ロールバックとは、「古いバージョンのリリースをリリースすること」

デプロイ戦略の種類

代表的と思われるものを取り上げる。

インプレースデプロイ

既存環境に新しいバージョンを直接デプロイする手法。

余談だが、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つを用意し、新バージョンを片方にデプロイし、新旧バージョンの両方を一時的に展開する手法。 新バージョンに問題がなければ、旧バージョンから新バージョンにトラフィックを切り替える。 ブルーとグリーンそれぞれの環境は保たれる。

イミュータブルデプロイ

ブルーグリーンと概ね同じ手法だが、トラフィック切り替え後に旧環境の方を削除する点が異なる。

ローリングデプロイメント

一定数ずつ新しいバージョンをデプロイ、リリースしていく手法。 全数完了するまでは新旧両方の環境へのトラフィックが有効な状態が続く。

カナリアデプロイ

一部のユーザーやトラフィックに対してのみ新しいバージョンを展開することができるような形で、一部だけ新しいバージョンをデプロイ、リリースする手法。

デプロイ戦略の観点表

それぞれのデプロイ戦略について、選定する際に重要となりそうな観点をピックアップし、表にまとめる。

デプロイ手法 ゼロダウンタイム 本番環境のテスト ロールバック時間 運用コスト
インプレースデプロイ × ×
シンボリックリンクデプロイ ×
ブルーグリーンデプロイ 低(トラフィック切り替え前後でも低)
イミュータブルデプロイ 低(旧環境削除するまでに限る)
ローリングデプロイ ×
カナリアデプロイ
  • ゼロダウンタイム
    • デプロイ時にサービス停止が発生するかどうか
    • ゼロダウンタイムが可能な場合は○、不可な場合は✗
  • 本番環境でのテスト
    • 新しいバージョンへのトラフィックをルーティングできるかどうか
    • できる場合は○、できない場合は✗
  • ロールバック時間
    • ロールバックに必要な時間的コストの高低
    • 低・中・高で判定
  • 運用コスト
    • デプロイ手法を整理させるための運用コストの高低
    • 低・中・高で判定

リリース戦略


関連書籍