プログレッシブデリバリーとは何か?
プログレッシブデリバリーとは、ソフトウェアを段階的かつ制御された形でリリースするための包括的なアプローチであり、問題を監視しつつ素早くロールバックしながら、変更を拡大していく対象者に公開していくものです。
新しいリリースを一度に全員へ有効化するのではなく、プログレッシブデリバリーはそれを段階的に引き上げていきます。この戦略は、canary release・フィーチャーフラグ・traffic shifting といった技法を組み合わせ、単一の悪い変更が及ぼしうる害の大きさを限定します。
中核となる原則
プログレッシブデリバリーは、制御された公開という考え方で継続的デリバリーを拡張します。一度にすべてをリリースするのではなく、変更はまず少数の集団に到達し、良好に振る舞う場合にのみ拡大します。対象者は段階的に増えていき、問題の兆候があればロールアウトを停止または反転させます。
含まれる技法
- 新バージョンへトラフィックの一部を送る canary release。
- ユーザーごとに機能を制御するフィーチャーフラグ。
- 負荷を段階的に増やす traffic shifting。
- 内部ユーザーから外側へ広げるリングベースのロールアウト。
影響範囲を限定する
中心的な利点は封じ込めです。リリースが壊れていても、現在公開されている小さな割合だけが影響を受け、広がる前に止められます。これにより、全社規模になりかねない障害を、素早く修正される軽微な一時的トラブルへと変えます - 悪い変更のコストの劇的な削減です。
観測して判断する
プログレッシブデリバリーは、それが監視するシグナルの質に左右されます。各段階で、新バージョンのエラー率・レイテンシ・ビジネスメトリクスをベースラインと比較し、続行・一時停止・ロールバックの判断はそのデータによって導かれます - チームが成熟するにつれて、ますます自動化されていきます。
なぜ高速な CI と相性が良いのか
プログレッシブデリバリーは、build・出荷・ロールバックを迅速かつ確実に行えることを前提とします。高速で信頼できる pipeline は、プログレッシブデリバリーが依存する小さく頻繁なリリースを実用的にします。一方、遅かったり不安定だったりする pipeline は、チームを大きくリスクの高い一括リリースへと押し戻してしまいます。
重要なポイント
- プログレッシブデリバリーは、拡大していく対象者へ変更を段階的にリリースします。
- canary・フラグ・traffic shifting を組み合わせて影響範囲を限定します。
- 続行するかロールバックするかの判断は、観測されたメトリクスによって導かれます。