Skip to content
Latchkey

ロールバックとは?

ロールバックとは、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を安全にするものです。

関連ガイド