パイプラインが完成した。次は?本当の仕事はここから始まる
パイプラインを構築した。ゴールデンパスも定義した。データベースマイグレーションは自動実行され、インフラストラクチャのプロビジョニングもCI/CDを通じて行われる。フィーチャーフラグも整っている。チームは誇りに思っている。それは当然だ。
しかし数週間後、誰かが奇妙なことに気づく。ある開発者はまだ自分のラップトップからデータベースマイグレーションを実行している。別のチームメンバーはクラウドコンソールからステージング環境をプロビジョニングしている。パイプラインは存在するが、人々はその周りを迂回しているのだ。
これは失敗ではない。実装が終わり、イテレーションが始まる瞬間だ。あなたが構築したロードマップはゴールラインではない。絶え間ない評価を必要とするスタート地点なのだ。
誰もパイプラインを使っていない?
最初に問うべき質問は「パイプラインは正しいか」ではなく「パイプラインは使われているか」だ。CI/CDツールで触れられずに放置されているパイプラインは価値を生んでいない。それはグリーンバッジを付けた技術的負債である。
まずは採用状況を見よう。先月、パイプラインを通じて何回のデプロイが行われたか確認する。それを全変更数と比較する。数字が一致しなければ、その理由を調べる。
人々がパイプラインを迂回する一般的な理由は次の通り:
- 小さな変更にはパイプラインが遅すぎる
- 承認プロセスが日常的な更新には重すぎる
- パイプラインが頻繁に発生するエッジケースを処理できない
- 人々がパイプラインを実際の問題をキャッチできると信頼していない
これらは誰かを責めるためのものではない。パイプラインに調整が必要だというシグナルだ。人々が手動の道を選ぶなら、自動化された道に何か問題がある。
データに語らせよう
パイプラインを評価する最も簡単な方法は数字を見ることだ。ほとんどのCI/CDツールは基本的なメトリクスを提供している。それらを取得して、いくつかの質問をしよう:
先月、何回のデプロイが成功したか?各ステージで何回失敗したか?コミットから本番環境までどれくらいの時間がかかっているか?
これらの数字は、日々の業務では見えないボトルネックを明らかにする。アプリケーションパイプラインは速いが、データベースパイプラインは承認待ちで3日間止まっているかもしれない。インフラ変更はスムーズに流れるが、ステージング環境が同期していないためにアプリケーションパイプラインが統合テストで失敗するかもしれない。
私が一緒に仕事をしたあるチームは、パイプラインが95%の確率でグリーンだったにもかかわらず、本番インシデントが定期的に発生していることを発見した。データは、パイプラインがハッピーパスのみをテストしていることを示していた。エッジケースや障害モードは決してカバーされていなかった。パイプラインは紙の上では良さそうに見えたが、誤った安心感を与えていたのだ。
ロードマップの振り返りを実施する
すでにスプリントの振り返りは行っているだろう。今度はロードマップの振り返りを行おう。これは異なる。過去2週間に何が起こったかを見るのではなく、数ヶ月前に下した決定が今でも意味をなすかどうかを検討するのだ。
チームとしてこれらの質問を投げかけよう:
- 私たちが選んだゴールデンパスは、今でも人々が最もよく取るパスか?
- 追加したリスクゲートは小さな変更に対して厳しすぎないか?
- パイプラインの標準化は物事を簡単にしたか、それとも摩擦を生んだか?
- パイプラインが処理できない新しいタイプの変更はあるか?
答えに正直になろう。ゴールデンパスは6ヶ月前には良い選択だったかもしれないが、今ではチームは異なる種類のプロジェクトに取り組んでいる。金融取引システムには意味があったリスクゲートも、内部ツールには過剰かもしれない。
あるチームは、すべての変更(ドキュメント更新を含む)に3つの承認が必要であることに気づいた。意図は安全性だったが、結果として誰もプロセスを通過したがらなかったため、ドキュメントが遅れてしまった。彼らはコード以外の変更のために軽量なパスを作成することで調整した。
調整する、全面改修しない
問題を見つけたとき、すべてを再設計したい衝動を抑えよう。ほとんどの調整は小さい。優先順位を変更する必要があるかもしれない。特定のタイプの変更に対してリスクゲートを調整する必要があるかもしれない。緊急修正のためのファストトラックを追加する必要があるかもしれない。
重要なのは評価を習慣にすることだ。3ヶ月ごとに数時間を確保して、パイプラインとロードマップを見直す。このリズムが、システムをチームの実際の働き方に合わせ続ける。
この評価は、次に何に取り組むべきかを決めるのにも役立つ。ラベリングのためではなく、方向性のためにシンプルな成熟度モデルを使おう。自問する:アプリケーションパイプラインは強いが、データベース変更は弱いか?インフラパイプラインは良いが、フィーチャーフラグのプラクティスは貧弱か?答えが、次のイテレーションの焦点を教えてくれる。
評価をアクションに変える
レポートで終わる評価は無駄な努力だ。すべてのレビューは少なくとも1つの具体的な変更を生み出さなければならない。パイプラインのステップを簡素化することかもしれない。セキュリティスキャンを追加することかもしれない。別のチームがフォローできるパターンを文書化することかもしれない。
変更を書き留め、誰かにオーナーシップを割り当て、次の評価サイクルで確認する。2回の評価の間に何も変わっていなければ、プロセスは壊れている。評価が実際の問題を特定できていないか、チームに行動するためのキャパシティがないかのどちらかだ。
次の評価のための実践的チェックリスト
四半期ごとのパイプラインレビューでこれを使おう:
- パイプラインのデプロイ回数と先月の全変更数を比較する
- 最も失敗率の高いステージを特定する
- 最長実行パイプラインがコミットから本番までにかかる時間を確認する
- 各チームメンバーに「パイプラインを迂回するのはどんな時か?」と尋ねる
- 簡素化する項目と追加する項目をそれぞれ1つリストアップする
- 各変更にオーナーシップを割り当てる
本当のゴールは完了ではない
ロードマップは完成させるドキュメントではない。チームが学ぶにつれて変化する生きたものだ。目標はすべてのパイプラインを完了させることではない。目標は、安全に、迅速に、そして制御された状態で変更を届け続けることだ。
ユーザーがいる限り、コードが変更され続ける限り、データベースとインフラストラクチャが稼働し続ける限り、評価とイテレーションは決して止まらない。それは問題ではない。それはチームがまだ成長している証拠だ。
今日構築するパイプラインは、来年必要になるパイプラインではない。そしてそれはまさにそうあるべき姿なのだ。