ロールバックとは?
ロールバックとは、deploymentが失敗した後に、ソフトウェアを以前のknown-goodバージョンに戻す行為です。
テストがどれほど優れていても、いくつかの不良リリースは本番に届きます。rollbackはあなたの脱出ハッチです: 新しいバージョンをライブで慌てて修正する代わりに、最後に動作していたバージョンを素早く復元し、それから落ち着いて調査します。
ロールバックとは
rollbackは、通常は前のbuild artifactを再デプロイするか、トラフィックをそれに切り替えて戻すことで、システムを以前の動作する状態に戻します。鍵となる考え方は、復帰による回復です: 火中でデバッグするのではなく、まずknown-goodな動作を復元し、後で診断します。
仕組み
以前のリリースはバージョン管理され保存されたアーティファクトなので、rollbackは前のものを再デプロイするだけで済むことがあります。blue-green deploymentでは、古いバージョンがまだ実行中なので、rollbackはトラフィックを切り替えて戻すだけ、ほぼ即座です。データベースの変更は事情を複雑にし、それがmigrationがbackward compatibleに設計される理由です。
例
新しいリリースが出荷され、エラー率がすぐに上昇します。ライブでhotfixしようとする代わりに、on-callエンジニアが1つのコマンドで前のアーティファクトにrollbackします。1分以内にシステムは古いバージョンで再び健全になり、チームはアクティブな障害のプレッシャーなしにバグを調査します。
なぜ高速なrollbackが重要なのか
rollbackが速いほど、不良リリースのコストは小さくなり、そもそもより自信を持ってdeployできます。信頼できる高速なrollbackの経路こそが、頻繁なdeploymentを安全にするものです: どのリリースも数秒で取り消せるなら、頻繁に出荷することは怖くなくなります。
rollbackを信頼できるものにするもの
- 以前のアーティファクトをバージョン管理し、再デプロイ可能な状態に保つ。
- database migrationをbackward compatibleに設計する。
- 古いバージョンを利用可能に保つdeployment strategiesを使う。
- 必要なときに機能するよう、rollbackを練習する。
重要なポイント
- rollbackは、不良deploy後に以前のknown-goodバージョンを復元します。
- バージョン管理されたアーティファクトとblue-green deployがそれを高速にします。
- 高速なrollbackが、頻繁なdeploymentを安全にするものです。