前置き
CI/CDパイプラインにFour Keysのメトリクスの自動測定を組み込むことにより、パイプラインアーキテクチャの健全性を測れるようになります。
たとえば、CI/CDパイプライン中のプロセス全体の中で、ボトルネックとなっている部分(もっとも実行時間が長い or 手戻り率が長い or 手前のプロセスの完了を待つ時間が長い)に対して、TOCの改善5ステップを実行。
TDDの思想と同様に、先に少しパイプラインアーキテクチャを変更し、既存のプロダクションコードがパイプラインのチェックを通過できないことを確認。
さらに、パイプラインの構造を変えたことで、Four Keysのメトリクス4つを見て、副作用が発生していないか?を確認します。
この副作用が起きていないことをFour Keysのメトリクスデータで確認したのちに、既存のプロダクションコードのアーキテクチャをパイプラインの構造に合わせて変える。
このようなメカニズムが安全にシステムアーキテクチャを変更し続けるためのコツだと強く感じております。
なぜそのメカニズムが安全で最強なのか
上記のメカニズムは、TOC(制約理論)、ECRS、TDD、Four Keysという、すべての概念を、
「単一の改善ループ」 として統合しています。
思考プロセスの統合という、広義のECRSのCをしていますね。
そのループを分解すると、以下のようになります。
🚀 1. 観測 & 特定 (Observe & Identify)
活動
CI/CDパイプラインに組み込まれたFour Keysの自動測定と、TOCの考え方を用います。
分析
「パイプラインアーキテクチャの健全性」を定量的に観測します。
特定
「どのプロセス(例:巨大なE2Eテスト)がボトルネック(制約)になっているか?」を
事実データに基づいて特定します。
⚙️ 2. 改善 (ECRS / TOC Step 2)
活動
特定されたボトルネック(制約)に対し、ECRSを適用し、まずはコストをかけずに改善を試みます。
例
「不要なテストを 排除(E) する」「並列化(R)する」
限界の認識
しかしやがて、
「プロセス改善(ECRS)だけでは限界だ。アーキテクチャ自体がボトルネックだ」
という結論に至ります。(例:ファンインパイプラインという構造自体が遅い)
🧪 3. パイプラインを先に変更する (Architecture "Test-First")
これが最も重要なコツです。TDDの「先にテストを書く」に相当します。
活動
アプリケーションコード(プロダクションコード)をいじる前に、
先にパイプラインアーキテクチャを変更
します。
例
ボトルネックだった「巨大なE2Eテスト」を廃止し、代わりに 「コントラクトテスト」と「本番スモークテスト」(適応度関数) を組み込んだ新しいパイプライン構造(例:独立したE2Eパイプライン)を構築します。
TDDの「Red」
この新しいパイプラインの「コントラクトテスト」は、既存のプロダクションコード(まだ非同期化されていない)では通過できないかもしれません(=Redの状態)。
🛡️ 4. メトリクスで「安全」を検証する (The Guardrail)
活動
この新しいパイプライン構造(あるいはそのプロトタイプ)を動かし、Four Keysへの影響を検証します。
重要な2つの問い
①. 「変更時のリードタイムが短縮しているか?」(改善の確認)
→ YES(例:E2Eテストがなくなり、CIが爆速になった)
②. 「変更時の障害率や復旧時間が増加していないか?」(副作用の確認)
→ NOT WORSE(例:コントラクトテストがE2Eテストの代わりにバグを検出できている)
判断
「速度」が向上し、「安全性」が悪化していないことが事実データで確認できました。
✅ 5. プロダクションコードを「後から」変更する (The "Refactor to Green")
活動
ステップ4で「安全」が確認された新しいパイプライン(=新しい"テスト")を
「通過(Green)」 させるために、ここで初めてプロダクションコードのアーキテクチャを変更します。
例
コントラクトテスト(Red)をパスさせるために、Order-Serviceをリファクタリングし、
同期呼び出しを非同期のイベント発行に変更する。
ここまでのまとめ
このメカニズムは、
Four Keys(事実)に基づき、TOCでボトルネック(制約)を特定し、
TDDの思想(パイプライン先行)で、アーキテクチャの変更(リファクタリング)を安全に進める
という、完璧なループです。
これこそが、アーキテクチャ変更を「危険な賭け」ではなく、「予測可能で安全なエンジニアリング」として継続的に行うための方法論です。
