0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Four Keysによる戦略的アーキテクチャ変更のメカニズム

Posted at

前置き

CI/CDパイプラインにFour Keysのメトリクスの自動測定を組み込むことにより、パイプラインアーキテクチャの健全性を測れるようになります。

たとえば、CI/CDパイプライン中のプロセス全体の中で、ボトルネックとなっている部分(もっとも実行時間が長い or 手戻り率が長い or 手前のプロセスの完了を待つ時間が長い)に対して、TOCの改善5ステップを実行。

スクリーンショット 2025-10-24 141933.png

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の思想(パイプライン先行)で、アーキテクチャの変更(リファクタリング)を安全に進める

という、完璧なループです。

これこそが、アーキテクチャ変更を「危険な賭け」ではなく、「予測可能で安全なエンジニアリング」として継続的に行うための方法論です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?