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?

TOC改善ステップを用いたリプレイス計画

Posted at

インラインコード

前置き

組織の経営戦略として、複数ある各事業ドメインが、企業のCI/CDプラットフォーム基盤で、

複数事業がファンイン構造で集約していないか、分離されいるか?

というチェックをした上で、各事業の独立性を担保する。

その上で、どの事業が「もっとも利益を出していない、そして今後も今のままでは利益を出すことが難しい」と思われる、ボトルネック事業を明らかにする。(マクロボトルネック特定)

その事業の中のどのコンテキストがボトルネックなのか?
→イベントストーミングの疎結合に分離された各コンテキスト中でもっともコストセンターになっている傾向が高い所を明らかにする。(1段階詳細なボトルネック特定)

そこに対して、TOCの改善5ステップを適用し、不要なモジュールやコードの排除した上で、それでもまだボトルネックの改善目標数値に届かない時には、最終的にリプレイスを実行するという流れが、

「アーキテクチャの変更」を「経営的な投資判断」へと昇華させる

ための、極めて合理的なプロセスです。

これは、技術的な好奇心や流行ではなく、

「企業の利益(=TOCでいうスループット)」を最大化するという最上位の目的からトップダウンで問題を掘り下げ、最もコスト対効果の高い場所(=制約) にのみメスを入れる

という、理想的な流れです。

🏢 アナロジー:企業ポートフォリオの改善

このメカニズムは、投資会社のCEOが、傘下にある複数の企業(事業ドメイン)を改善するプロセスにそっくりです。

1. 独立性の確認

まず、CEOは「各企業の会計は、本当に独立しているか? 連結決算でごまかされていないか(CI/CDのファンインがないか)?」をチェックします。

2. ボトルネックの特定

独立したP/L(損益計算書)を比較し、「どの企業の利益が、ポートフォリオ全体の足を最も引っ張っているか(ボトルネック事業)」を特定します。

3. 詳細分析

その企業の内部を精査し、「どの部門(コンテキスト)が、最もコストを垂れ流しているか(コストセンター)」を突き止めます。

4. 改善活動

ステップA

まずは「不要なプロジェクトの即時停止」や「重複する業務の排除(ECRS-E)」といった、低コストな改善を指示します。

ステップB

それでも目標利益に届かない場合、最後の手段、つまりTOCの改善5ステップのうちの4ステップ目として

「その部門ごと売却、または解体し、新しいチームで再建する(リプレイス)」

という経営判断を下します。

メカニズムの詳細レビュー

では、ここでわたしが提案したい流れを、このアナロジーに沿って詳細にレビューします。

1. 独立性の確認 (CI/CDファンインのチェック)

企業のCI/CDプラットフォーム基盤で、複数事業がファンイン構造で集約していないか、分離されいるか?というチェックをした上で、各事業の独立性を担保し...

完璧な出発点です。 これは、アーキテクチャの議論の前提条件を整える作業です。 もし、事業Aと事業Bのパイプラインが密結合(ファンイン)していたら、事業Aのデプロイ失敗が事業Bのリリースを止めてしまいます。これでは、どちらの事業が真のボトルネックなのかを正確に測定することすらできません。

まず「会計(CI/CD)」を分離・独立させることで、各事業ドメインのパフォーマンスを個別に、正確に測定できる状態にします。

2. ボトルネックの特定 (事業ドメイン → コンテキスト → コストセンター)

どの事業がもっとも利益を出していない...ボトルネック事業を明らかにし、その事業の中のどのコンテキストがボトルネックなのか?→イベントストーミングの...もっともコストセンターになっている傾向が高い所を明らかにし...

非常に論理的なドリルダウンです。 このプロセスが、「なんとなくリファクタリングする」という無駄な努力を完全に排除します。

事業ドメイン (マクロ): 全社利益という観点から、制約となっている事業を特定します。

ドメインコンテキスト (ミクロ): その事業のドメインモデルやイベントストーミングの地図を広げ、**ビジネスプロセス上の制約(例:リードタイムが異常に長いコンテキスト)**や、**経済的な制約(例:異常に管理コストが高いコンテキスト)**を特定します。

3. 改善の実行 (TOC + ECRS → リプレイス)

そこに対して、TOCの改善5ステップを適用し、不要なモジュールやコードの排除した上で、それでもまだボトルネックの改善目標数値に届かない時には、リプレイスを実行し...

これこそが、アーキテクトとしての最も重要な価値判断です。

ステップ1 (TOC 活用/従属 + ECRS-E)

リプレイス(再構築)は、常に最後の手段です。それは最もコストがかかるからです。

TOCの原則に従い、まずは今ある資産を「徹底的に活用」します。
改善の2ステップで言う通り、ECRSのE (排除) を適用し、

「動いていないコード」「使われていない機能」「重複しているモジュール」を排除

するのが、最も安価で最速の改善策です。

ステップ2 (TOC 向上 + ECRS-R)

「排除」だけでは目標(例:利益率10%改善)に届かないことがデータで示された。

この時、初めて「制約条件の向上」、すなわちECRSのR (Replace = リプレイス) という経営判断が正当化されます。

この段階的なアプローチにより、「リプレイス」という高コストな意思決定が、「やりたいからやる」という主観的な欲望から、「やるしかないからやる」という客観的なデータに基づいた必然へと変わるのです。

メカニズム

以下は、アーキテクチャの変更(マイクロサービス化)という、非常にコストのかかる決断を、「いつ」「なぜ」行うべきかという問いに対して、「データがそう示しているから」 と答えるための、最も論理的で強力なメカニズムです。

🏰 アナロジー:城下町から複数の自治区へ

あなたのプロセスは、一つの巨大な城(モノリス)の交通インフラを改善する、有能な都市計画官の仕事です。

1. 現状

すべての物資(変更)は、一本の中央街道(CI/CDパイプライン) を通って城に搬入されます。この街道は常に渋滞しています(ファンイン構造)。

2. 分析 (CCPM + Four Keys)

まず、渋滞の 「真のボトルネック」 を特定します。
それは「街道の入り口の検問所(テストプロセス)」なのか、「城門の狭さ(デプロイプロセス)」なのかを、**ストップウォッチ(Four Keys)**で正確に計測します。

3. 改善 (TOC + ECRS)

城門を広げる(リプレイス)のは最後の手段です。

まずは

「検問所のプロセスを**単純化(S)する」「不要なチェックを排除(E)する」

といった低コストな改善(ステップ2)**から始めます。

同時に、渋滞してない裏道(非ボトルネックのパイプ)の警備コストを 削減(ステップ3) し、そのリソースを中央街道の改善に回します。

それでもダメなら、検問所自体を 自動化(ステップ4) します。

4. 最終シグナル

あらゆる改善の結果、検問所も街道も超高速になりました。
しかし、それでもリードタイムが短縮しません。なぜか?

「城門が狭すぎて、一度に1台の馬車しか通れない(=モノリスのデプロイ)」

この 「城門(デプロイプロセス)」 こそが、もはやこれ以上最適化のしようがない、アーキテクチャそのものに起因する最終的なボトルネックです。

5. 結論

このボトルネックを解消する唯一の方法は、城(モノリス)を解体し、それぞれが独立した搬入口(CI/CDパイプライン)を持つ**複数の自治区(マイクロサービス)**に再編することです。

メカニズムの各ステップ(詳細レビュー)

1. 前提:モジュラーモノリスとファンイン・パイプライン

あなたの仮説: モジュラーモノリスだが、CI/CDはファンイン構造。

レビュー: 正しいです。これが「モノリス」の定義です。どんなに内部(モジュール)が綺麗でも、デプロイ量子が1つであるため、すべての変更が1つのパイプラインに集約(ファンイン)され、ここが**システム全体の制約(ボトルネック)**となります。

2. 特定:CCPMとFour Keys

あなたの仮説: CCPMの発想でクリティカルチェーン(最長リードタイムのパス)を特定し、Four Keysで正確に測定する。

レビュー: 完璧な組み合わせです。Four Keys(特にChange Lead Time)は、**「データ(結果)」です。CCPMは、そのデータを分析し、「真の制約(原因)」がどこにあるかを特定するための「思考ツール」**です。これにより、場当たり的な改善ではなく、最もインパクトのある箇所に集中できます。

3. 改善サイクル:TOCの5ステップ + ECRS

あなたの仮説: ステップ2(活用)でまずプロダクト側を修正し、ステップ3(従属)で他モジュールのコストを削減、ステップ4(向上)でパイプラインに投資する。

レビュー: TOCの理想的な適用です。

・Step 2 (活用)

パイプラインが遅い原因が「プロダクトのテストコードが非効率だから」であれば、まずプロダクト(動作するアーキテクチャ)を修正するのが、最も安価で正しい「活用」です。

・Step 3 (従属)

ボトルネックが40分なら、他のパイプが5分で終わっても無意味です。そのチームはコスト(リソース)の無駄遣いをしていることになります。彼らの活動をボトルネックに従属させ(例:40分に1回のリリースサイクルに合わせる)、余ったリソースをボトルネックの改善に回すべきです。

・Step 4 (向上)

ここで初めて「パイプラインの自動化」や「並列化」といった高コストな投資を行います。

4. 最終シグナル:マイクロサービス化への移行

あなたの仮説: これを繰り返した結果、「デプロイプロセス」自体が最終的なボトルネックになった時が、マイクロサービス化のシグナルである。

レビュー: これこそが結論です。 ビルドもテストも超高速化した。しかし、**「1GBのモノリス・アーティファクトを10台のサーバーに転送し、起動する」という「デプロイ」**の物理的なプロセスが20分かかっている。 この20分は、もはやパイプラインの自動化では解決できません。制約は「パイプライン」から「アーキテクチャそのもの」に移行しました。

この制約を「向上」させる唯一の方法は、ECRSのR (Replace) です。

すなわち、

「1GBのデプロイ量子を(E)排除し、50MBの独立したデプロイ量子10個に(R)入れ替える」

——これこそが、マイクロサービス化を断行すべき、データに基づいたシグナルです。

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?