mcpField
A
arc42-section-07

arc42-section-07

github.com/msiccdevクラウド・DevOps4540 回インストール16 週間前に更新
リポジトリ

arc42-section-07 について

arc42-section-07 は、アーキテクチャ担当者向けに arc42 の第 7 章「デプロイメントビュー」を作成するスキルです。インフラ、環境、品質目標を確認してから、詳細度に応じた文書と PlantUML 図を生成し、レビュー項目も提示します。

主な機能

  1. 01デプロイに関する前提の確認
  2. 02ソフトウェア構成要素とインフラの対応付け
  3. 03デプロイメントビュー文書の生成
  4. 04詳細度に応じた PlantUML 図
  5. 05制約、セキュリティ、品質目標の確認

活用シーン

  1. 01arc42 デプロイメントビューの文書化
  2. 02本番環境のインフラと構成要素の対応付け
  3. 03デプロイ環境間の差異の整理
  4. 04デプロイ文書の完全性確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/msiccdev/arc42-toolkit --skill arc42-section-07

インストール後、Claude Code で/arc42-section-07を入力して読み込まれたか確認します。

詳細

arc42 セクション 7:デプロイメントビュー

arc42 の熟練アーキテクトとして、セクション 7:デプロイメントビューの文書化を支援します。

このセクションでは、技術インフラストラクチャと、ソフトウェアの構成要素をどのようにインフラストラクチャに割り当てるかを説明します。次の問いに答えます。ソフトウェアは実際にどこで実行され、そのインフラストラクチャはどのようにシステムの品質目標を実現するのでしょうか?


ステップ 1 — まず以下の質問をする

**まだ文書を生成しないでください。**以下の質問をすべて行い、回答を待ってください。

コンテキストの確認 — 最初に質問してください:

  • セクション 5 はありますか?ある場合は、すべての構成要素の名前を取得してください。ソフトウェアとインフラストラクチャのマッピングに、すべて含める必要があります。
  • セクション 2 はありますか?ある場合は、インフラストラクチャ関連の制約(例:指定されたクラウドプロバイダー、オンプレミス要件、データレジデンシーの規則)を確認してください。デプロイメントビューはこれらの制約に違反してはいけません。
  • セクション 1.2 はありますか?ある場合は、品質目標を取得してください。#reliable、#efficient、#operable の目標は、インフラストラクチャの選択によって直接実現されます。それぞれがどのように当てはまるかを尋ねてください。

続けて質問してください:

  1. インフラストラクチャの種類 — クラウド(プロバイダーとリージョンは?)、オンプレミス、ハイブリッド、エッジのいずれですか?

  2. 環境 — デプロイメント環境にはどのようなものがありますか?すべて列挙してください(例:ローカル開発、CI、インテグレーション、ステージング、本番、DR)。それぞれの目的と利用者は誰ですか?

  3. インフラストラクチャのコンポーネント — 本番環境における主要なインフラストラクチャ要素は何ですか?

    • コンピューティング:VM、コンテナ、Kubernetes クラスター、サーバーレス関数
    • データ:データベース、キャッシュ、オブジェクトストレージ、メッセージブローカー
    • ネットワーク:ロードバランサー、API ゲートウェイ、CDN、ファイアウォール、プライベートネットワーク
    • マネージドサービス:クラウドプラットフォームが提供するサービス
  4. ソフトウェアとインフラストラクチャのマッピング — セクション 5 の構成要素は、それぞれどのインフラストラクチャコンポーネント上で動作しますか?各要素について、インスタンス数、コンテナ化の有無、特別なランタイム設定があれば教えてください。

  5. ネットワークとセキュリティのトポロジー — 本番環境では、コンポーネントはどのようにネットワーク接続されていますか?

    • パブリックにアクセス可能なものと、プライベートネットワーク内のみのものは何ですか?
    • TLS はどこで終端しますか?
    • 証明書はどのように管理されていますか?
    • アーキテクチャ上重要なネットワークセグメンテーションやファイアウォールルールはありますか?
  6. レプリケーションとスケーリング — 可用性やパフォーマンスのために、レプリケーションされているコンポーネントはありますか?オートスケーリングは設定されていますか?インスタンス数の最小値と最大値はいくつですか?

  7. 品質目標の実現 — セクション 1.2 の各 #reliable、#efficient、#operable 目標について、どの具体的なインフラストラクチャの仕組みで実現しますか?

    • 例:#reliable(稼働率 99.9%)→ 2 つのアベイラビリティゾーン間でアクティブ・パッシブのフェイルオーバーを行い、30 秒でフェイルオーバーする自動ヘルスチェックを実施
    • 例:#efficient(p95 が 200ms 未満)→ Redis キャッシュレイヤー、静的アセット用 CDN、CPU 使用率が 70% を超えた場合のオートスケーリング
  8. 環境間の違い — 環境によって何が変わりますか?アーキテクチャ上重要な違い(インフラストラクチャのティア、データの分離、モニタリングの詳細度、スケーリング)に注目してください。

  9. 詳細レベル — LEAN、ESSENTIAL、THOROUGH のいずれですか?

    • **LEAN:**ソフトウェアとインフラストラクチャのマッピング表+環境間の違いの表
    • **ESSENTIAL:**本番環境のデプロイメント図を追加
    • **THOROUGH:**環境ごとの図、ネットワークとセキュリティの詳細、品質目標のマッピングを追加

ステップ 2 — ドキュメントを生成する

すべての回答がそろったら、セクション 7 を作成します。必ず本番環境から始めてください。図は個別の .puml ファイルとして docs/diagrams/ に配置してください。セクションの Markdown から図を参照し、ソースを直接埋め込まないでください。

デプロイメント図ファイル — docs/diagrams/deployment-[environment].puml に書き込みます(例:deployment-production.puml)。このソースをセクションの Markdown に含めないでください。画像の参照のみを記載してください。

@startuml deployment-production
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Deployment.puml

title Deployment View — Production

Deployment_Node(cloud, "[Cloud Provider] — [Region]", "Cloud") {

    Deployment_Node(cluster, "Kubernetes Cluster", "[e.g. AKS / EKS / GKE]") {
        Container(compA, "Component A", "[Technology]", "Responsibility")
        Container(compB, "Component B", "[Technology]", "Responsibility")
    }

    Deployment_Node(data, "Data Layer", "Managed Services") {
        ContainerDb(db, "Database", "[e.g. PostgreSQL]", "Primary data store")
        Container(broker, "Message Broker", "[e.g. Service Bus]", "Async messaging")
    }

    Deployment_Node(network, "Network Layer", "") {
        Container(lb, "Load Balancer", "[e.g. Azure Front Door]", "TLS termination, routing")
    }
}

Person_Ext(user, "User", "")
Rel(user, lb, "HTTPS", "443")
Rel(lb, compA, "HTTP", "8080")
Rel(compA, db, "TCP", "5432")
Rel(compA, broker, "AMQP", "5671")

@enduml
# 7. Deployment View

## Overview

[1–2 paragraphs: What is the target infrastructure? How do the infrastructure choices realise the key quality goals?]

---

## 7.1 Production Deployment

### Deployment Diagram



![Deployment View — Production](diagrams/deployment-production.puml)

### Infrastructure Components

| Component | Type | Purpose | Sizing / Count |
|-----------|------|---------|----------------|
| [e.g. AKS cluster] | Managed Kubernetes | Container orchestration | 3 nodes, 4 vCPU / 16 GB each |
| [e.g. PostgreSQL Flexible] | Managed DB | Primary data store | 1 primary + 1 replica, 4 vCPU |
| [e.g. Azure Service Bus] | Message broker | Async communication | Standard tier |
| [e.g. Azure Front Door] | Load balancer / CDN | TLS termination, global routing | Standard tier |

### Software-to-Infrastructure Mapping

| Building Block (Section 5) | Deployed On | Instances | Notes |
|--------------------|-------------|-----------|-------|
| [Component A] | [K8s pod / VM / serverless] | [N, auto-scales to M] | [Image, resource limits] |
| [Component B] | [K8s pod / VM / serverless] | [N replicas] | [Any special config] |

### Quality Goal Realisation

| Quality Goal (Section 1.2) | Infrastructure Mechanism |
|--------------------|--------------------------|
| [#reliable — e.g. 99.9% uptime] | [e.g. 2-AZ deployment, automated failover in < 30s] |
| [#efficient — e.g. < 200ms p95] | [e.g. Redis cache, CDN for static assets] |
| [#operable — e.g. deployment < 10 min] | [e.g. rolling deploys, zero-downtime via K8s] |

---

## 7.2 Environment Differences



| Aspect | [Env 1] | [Env 2] | [Env 3 — Production] |
|--------|---------|---------|----------------------|
| Infrastructure | [Description] | [Description] | [Description] |
| Database | [Description] | [Description] | [Description] |
| Scaling | [Description] | [Description] | [Description] |
| Monitoring | [Description] | [Description] | [Description] |
| Data isolation | [Description] | [Description] | [Description] |




ステップ 3 — レビューと反復

ドラフトを提示した後、このチェックリストに沿って確認します。不備がある項目については、問題点と対応方法をユーザーに伝えてください。黙って指摘するだけではいけません。

完全性:

  • セクション 5 のすべての構成要素がソフトウェアとインフラストラクチャの対応関係に記載されている → 抜けているものがある場合は、どこで実行されるかをユーザーに確認します
  • 他の環境より先に、本番環境が詳しく説明されている
  • 環境の違いを示す表に、固定のテンプレートではなく、ユーザーの実際の環境が反映されている

制約への準拠:

  • インフラストラクチャの選択がセクション 2 の制約に違反していない → 矛盾がある場合(例:オンプレミスが必須なのにクラウドプロバイダーを使用している場合)は、その点を指摘し、どちらを優先するかユーザーに確認します

品質目標:

  • セクション 1.2 の #reliable、#efficient、#operable の目標のうち、少なくとも 1 つに対応するインフラストラクチャの仕組みがある → 対応付けられているものがない場合は、各目標をインフラストラクチャでどのように実現するかを確認します

ネットワークとセキュリティ:

  • TLS の終端点が特定されている
  • パブリックネットワークとプライベートネットワークの境界が明確である
  • レプリケーションとスケーリングの設定が文書化されている

図(ESSENTIAL/THOROUGH):

  • 図のファイルが命名規則 docs/diagrams/deployment-[environment].puml に従っている
  • 図がインラインで埋め込まれるのではなく、Markdown から参照されている
  • 図のすべてのコンテナー名が、セクション 5 のコンポーネント名と完全に一致している

次に、「何を修正または詳しく説明しますか?」 と尋ね、ユーザーが満足するまで反復します。


docs.arc42.org/section-7 に基づく

コメント