アーキテクチャ戦略を書いても、機能しないケースがある。形だけの戦略になってしまったり、実行に移されなかったりする。
この記事では、良い戦略と悪い戦略の違いを整理する。
良い戦略の要点
良い戦略は、課題分析→方針→施策の3要素を持つ。これは良い戦略、悪い戦略で定義されている「カーネル(戦略の核)」を、アーキテクチャ戦略の文脈で解釈したものである。
- 課題分析:現状の課題を分析し、何が問題かを明確にする
- 方針:課題に対してどのような方向で取り組むかを示す
- 施策:何をやるかの大枠を定義する(具体的な実現方法は戦術で扱う)
この3要素が揃っていれば、何をすべきかが明確になり、リソースの最適な配置ができる。優先度の決定、手段の選択、スコープの決定、技術選定、組織設計、人員配置、予算配分など、様々な意思決定において選択と集中が可能になる。
悪い戦略の特徴
良い戦略の裏返しとして、悪い戦略には以下の特徴がある。
- 空疎で具体性がない:抽象的な目標やスローガンだけで、何をすべきかが見えない
- 重大な問題に向き合わない:本質的な課題を回避し、表面的な対処に留まる
- 目標を掲げただけで終わっている:達成したい状態は書かれているが、そこに至る道筋がない
これらは、課題分析→方針→施策の3要素のいずれかが欠けている状態とも言える。
悪い戦略になってしまう原因
- 課題分析が不十分:現状を正しく把握していない。問いの立て方を間違えている。本質的な問題を特定できていない
- 難しい決断を避けている:「やらないこと」を決める責任を負いたくない。トレードオフを明確にしたくない。全員が納得する結論を目指すあまり、曖昧な表現になる
- 目標と戦略を混同している:「パフォーマンスを改善する」などの目標を戦略だと思っている。方針や施策がなく、目標だけになっている
- 戦略を書いた経験がない:何を書けばいいかわからない。良い戦略のイメージがない
戦略における課題分析の重要性
良い戦略の3要素のうち、最も重要なのは課題分析である。方針や施策は課題分析の結果から導かれるため、ここを間違えると全てが間違う。
課題分析で意識すべきこと:
問いを正しく立てる
「どうやってマイクロサービス化するか」ではなく「なぜシステムの変更に時間がかかるのか」のように、手段から入らない。手段から入ると、その手段が本当に必要かどうかの検証ができず、本質的な課題を見落とす可能性がある。
例:マイクロサービス化ありきで進めたが、実際の問題はモジュール間の依存関係の複雑さだった。サービスを分割しても依存関係は解消されず、分散システムの複雑さが加わっただけだった。
課題を構造化する
表面的な症状と根本原因を区別し、課題の関係性を整理する。表面的な症状に対処しても根本原因が残っていれば再発する。また、課題の関係性が見えないと優先順位を正しく判断できない。
例:「デプロイに時間がかかる」という症状に対し、原因を探ると「テストが不安定」「CIパイプラインが非効率」「モノリスで全体ビルドが必要」など複数の要因が絡んでいた。これらの関係性を整理することで、どこから手をつけるべきかが見えてくる。
本質的な課題を特定する
すべてに対処しようとせず、最もインパクトのある課題を見極める。リソースは有限であり、すべてに対処しようとすると分散してどれも中途半端になる。
例:「パフォーマンス問題」「技術的負債」「スケーラビリティ」「開発者体験」など複数の課題が挙がった。ビジネスへの影響度と対処の難易度を評価し、まずパフォーマンス問題に集中することを決めた。
良い戦略・悪い戦略の例
同じテーマでも、書き方によって戦略の質は大きく変わる。以下にビフォーアフターの例を示す。
悪い戦略の例(Before)
戦略:マイクロサービス化
我々はモノリシックなアーキテクチャから脱却し、マイクロサービスアーキテクチャへ移行する。これにより、スケーラビリティと開発効率を向上させ、競争力を高める。
- 2025年末までにマイクロサービス化を完了する
- 各チームが独立してデプロイできる状態を目指す
- 最新の技術スタックを採用する
良い戦略の例(After)
戦略:デリバリー速度の改善
課題分析
現在、機能リリースに平均4週間かかっている。主な原因は以下の3点である。
- モジュール間の依存が強く、1つの変更が広範囲に影響する
- 全体をまとめてテスト・デプロイする必要があり、待ち時間が発生する
- リリース調整に複数チーム間の合意が必要で、コミュニケーションコストが高い
最も影響が大きいのはモジュール間の依存であり、これが他の2つの原因にも波及している。
方針
モジュール間の依存を減らし、チームが独立して変更・デプロイできる状態を目指す。
やること:
- 依存関係が最も複雑な受注・在庫領域の分離
- チーム単位でのデプロイパイプライン構築
やらないこと:
- 全サービスの一斉マイクロサービス化
- 技術スタックの刷新(現行のまま進める)
施策
- 受注・在庫領域のサービス分離
- チーム単位のデプロイ体制の確立
まとめ
良い戦略は、課題分析→方針→施策の3要素を持つ。この3要素が揃っていれば、何をすべきかが明確になり、リソースの最適な配置ができる。
悪い戦略は、これらの要素が欠けている状態である。課題分析が不十分だったり、難しい決断を避けたり、目標と戦略を混同していたりすることが原因となる。
特に課題分析は重要である。問いを正しく立て、課題を構造化し、本質的な課題を特定する。ここを間違えると、方針も施策もすべてが間違った方向に進んでしまう。