ストーリー
佐藤CTOが意味深に言いました。
4つの基本チームタイプ
1. Stream-aligned Team(ストリームアラインドチーム)
ビジネスの価値ストリーム(顧客への価値の流れ)に沿ったチーム。組織の主力チームです。
| 項目 | 内容 |
|---|---|
| 目的 | 特定のビジネスドメインの価値を継続的にデリバリーする |
| 特徴 | エンドツーエンドの責任、フルスタック |
| 例 | 決済チーム、検索チーム、ユーザーオンボーディングチーム |
| 理想サイズ | 5-9名 |
| 認知負荷 | チームが担当範囲を自律的に管理できるサイズに制限 |
stream_aligned_team_example:
name: "決済チーム"
domain: "決済処理全般"
responsibilities:
- "決済フロントエンド(チェックアウト画面)"
- "決済API"
- "決済ゲートウェイ連携"
- "決済関連のデータベース"
- "決済モニタリング"
autonomy: "デプロイ、設計判断、技術選定をチーム内で完結"
2. Platform Team(プラットフォームチーム)
ストリームアラインドチームの認知負荷を減らすための、内部プラットフォームを提供するチーム。
| 項目 | 内容 |
|---|---|
| 目的 | ストリームアラインドチームがインフラを意識せずに開発できるようにする |
| 特徴 | セルフサービス、API・ツール・ドキュメントを提供 |
| 例 | DevOpsプラットフォームチーム、データプラットフォームチーム |
| 理想サイズ | 4-8名 |
| 成功指標 | 利用チームの満足度、セルフサービス率 |
platform_team_example:
name: "Developer Platform チーム"
provides:
- "CI/CDパイプラインテンプレート"
- "Kubernetesクラスター管理"
- "監視・ログ基盤"
- "セキュリティスキャン"
- "開発環境のプロビジョニング"
principle: "ストリームチームを顧客として扱う"
3. Enabling Team(イネーブリングチーム)
他チームの技術力向上を支援する専門家チーム。
| 項目 | 内容 |
|---|---|
| 目的 | ストリームアラインドチームが新しい技術やプラクティスを導入するのを支援 |
| 特徴 | コーチング、メンタリング、一時的な支援 |
| 例 | SREチーム(組織横断支援)、アーキテクチャチーム |
| 理想サイズ | 3-6名 |
| 期間 | 数週間〜数ヶ月の一時的な関与 |
enabling_team_example:
name: "SRE イネーブリングチーム"
activities:
- "SLO/SLI策定の支援(各チームに1-2週間常駐)"
- "インシデント対応プラクティスの導入"
- "パフォーマンスチューニングのコーチング"
anti_pattern: "永続的に他チームの仕事を代行すること"
4. Complicated-subsystem Team(複雑サブシステムチーム)
高度な専門知識が必要なサブシステムを担当するチーム。
| 項目 | 内容 |
|---|---|
| 目的 | 特殊な専門知識が必要な領域を担当し、他チームの認知負荷を軽減 |
| 特徴 | 深い専門知識、APIとして機能を提供 |
| 例 | 機械学習チーム、暗号化エンジンチーム、リアルタイム処理チーム |
| 理想サイズ | 3-8名 |
| 存在理由 | その領域の複雑さがストリームチームの認知負荷を超える場合 |
3つのインタラクションモード
チーム間のやり取り方法を3つに限定し、明確にします。
graph LR
subgraph Collab["Collaboration<br/>(協働)"]
C1["2チームが密に協力して<br/>1つの目標に取り組む"]
C2["期間限定(数週間)"]
end
subgraph XaaS["X-as-a-Service<br/>(サービス)"]
X1["一方のチームが<br/>APIやツールを提供する"]
X2["継続的"]
end
subgraph Facil["Facilitating<br/>(ファシリテーション)"]
F1["一方のチームが<br/>他方の能力向上を支援する"]
F2["期間限定(数週間)"]
end
classDef collab fill:#3498db,stroke:#2980b9,color:#fff
classDef xaas fill:#27ae60,stroke:#1e8449,color:#fff
classDef facil fill:#9b59b6,stroke:#8e44ad,color:#fff
class C1,C2 collab
class X1,X2 xaas
class F1,F2 facil
| モード | 使う場面 | 例 |
|---|---|---|
| Collaboration | 新しいサービスの立ち上げ期 | 決済チーム × プラットフォームチームが新決済基盤を構築 |
| X-as-a-Service | 安定したインターフェースがある場合 | プラットフォームがCI/CDをサービスとして提供 |
| Facilitating | 新しいプラクティスの導入 | SREチームがストリームチームにオブザーバビリティを指導 |
認知負荷の管理
チームトポロジーの核心は「チームの認知負荷を管理する」ことです。
認知負荷の3種類
| 種類 | 説明 | 例 |
|---|---|---|
| 本質的認知負荷 | ドメインの本質的な複雑さ | 決済処理のビジネスロジック |
| 外在的認知負荷 | 環境に起因する不必要な複雑さ | インフラ設定、デプロイ手順 |
| 関連的認知負荷 | 学習と応用に関する複雑さ | 新技術の習得 |
目標:
- 本質的認知負荷: チームのドメインに集中
- 外在的認知負荷: プラットフォームチームが吸収
- 関連的認知負荷: イネーブリングチームが支援
「チームが”多すぎること”を抱えると、すべてが中途半端になる。チームが自律的に動ける範囲に責任を収める。それがチームトポロジーの本質だ」 — 佐藤CTO
まとめ
| ポイント | 内容 |
|---|---|
| 4つのチームタイプ | Stream-aligned、Platform、Enabling、Complicated-subsystem |
| 3つのインタラクション | Collaboration、X-as-a-Service、Facilitating |
| 認知負荷 | チームが自律的に動ける範囲に責任を制限する |
| コンウェイの法則 | 望むアーキテクチャに合わせて組織を設計する(逆コンウェイ) |
チェックリスト
- 4つの基本チームタイプの目的と特徴を理解した
- 3つのインタラクションモードを理解した
- 認知負荷の3種類と管理方法を把握した
- チーム設計とアーキテクチャの関係を理解した
次のステップへ
次は「プラットフォームエンジニアリング」を学びます。チームトポロジーの中核であるプラットフォームチームが、どのように内部開発者プラットフォームを構築するかを見ていきましょう。
推定読了時間: 40分