Ep 3: 継続的デリバリー - あらゆるコミットを1時間以内にデプロイ可能にする
最近私達はDavid Farley の”Modern Software Engineering” を読みましたが、最も重要な学びはこれでした:
… 目標として、あらゆるコミットを1時間以内に本番環境にデプロイ可能にするといったものを追い求めることを、私はよくおすすめしています。(訳: OpsBR)
この単純な原則を適応するだけで、皆さんのデプロイプロセスは様々な観点で最適化することになって、特により質の高いソフトウェアのリリースといった、たくさんの利点を得られます。まずは手早く利点を見てみましょう。続くニュースレターではどのように実現するかについてお話していきます。
ソフトウェア開発のパフォーマンスを計測する
“Modern Software Engineering“ によれば、そして私達も完全に賛同しますが、ソフトウェア開発のパフォーマンスには2つの鍵となる計測項目があり、それぞれに2つの指標が紐づいています:
安定性
変更による障害の発生率
障害からの回復時間
スループット
リードタイム
頻度
これらは信じられない程に単純で、しかしソフトウェア開発のパフォーマンスという曖昧な計測を可視化するのには十分に手頃です。もしあなたの開発プロセスがこのたった2つの計測で高いスコアを記録しているだけで、そのパフォーマンスは高いということになります。
例えば、より安定性が高いということは、デプロイするソフトウェアの質がより高くて、つまりデプロイによって負の価値を提供しにくくなっていることを意味します。すると、デプロイについて無用に怖がる必要がなくなり、創造的な仕事に集中することができます。
また、より良いスループットはデプロイによってより多くの価値を提供していることを意味します。高速なパイプラインを使ってより多くの機能をリリースでき、それによってお客さんは低いスループットのプロセスよりもたくさんの価値を受け取ることができます。
ただ、両者は互いに繋がっており、直交するものでもトレードオフでもありません。より安定していれば、デプロイを速くもっと頻繁にやることにより自信が持てます。より良いスループットは安定性改善のデプロイをより高速にしてくれ、例えばすぐにロールバックできるようになります。
1時間でデプロイ可能にすることはすべての計測に影響
“1時間でデプロイ可能“の原則は”リードタイム”の指標とは直接的に繋がっていることは明白です。そして、上で述べた様に、これは”リードタイム”以外にも影響を及ぼします。1時間でデプロイ可能にするために、例えば、デプロイ後のシステム監視を良くする必要があり、そうすることで新しいコードに関連する障害を素早く検知して、自動的にロールバックを実行するなどして、より良い安定性と高い頻度のデプロイに自信を与えることができるようになります。
まとめ
ソフトウェア開発のパフォーマンスは2つの簡潔な計測で測ることができます: 安定性とスループットです。双方は互いに関連しており、高いパフォーマンスのチームは両方の計測で高いスコアを持っています。”1時間でデプロイ可能”の原則は、恐ろしく単純ですが、両方の計測に対して様々な面から良い効果をもたらしてくれます。
English version: