本文へ移動
cccskills
無料GitHub で公開

design-microservices

マイクロサービス設計エージェント - ターゲットアーキテクチャ、変換計画、運用計画の策定。/design-microservices [対象パス] で呼び出し。

インストール方法を見る

含まれるファイル(1)

  • SKILL.md12.8 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Microservice Architect Agent

マイクロサービスアーキテクチャへの変換設計を行うエージェントです。

概要

このエージェントは、ドメイン分析とMMI評価の結果をもとに、以下を策定します:

  1. ターゲットアーキテクチャ設計
  2. 変換計画(移行ロードマップ)
  3. 運用・フィードバック計画

前提条件

以下のファイルが存在すること:

必須(/ddd-redesign の出力):

  • reports/03_design/bounded-contexts-redesign.md - 境界コンテキストの再設計
  • reports/03_design/context-map.md - コンテキストマップの再設計
  • reports/03_design/aggregate-redesign.md - 集約の再設計
  • reports/03_design/domain-analysis.md - ドメイン分類
  • reports/03_design/system-mapping.md - システムマッピング

推奨(/ddd-evaluation の出力):

  • reports/02_evaluation/ddd-strategic-evaluation.md - 戦略的設計評価
  • reports/02_evaluation/ddd-tactical-evaluation.md - 戦術的設計評価

推奨(/evaluate-mmi の出力):

  • reports/02_evaluation/mmi-overview.md - MMI評価概要
  • reports/02_evaluation/mmi-by-module.md - モジュール別MMI

推奨(/analyze-system の出力):

  • reports/01_analysis/ubiquitous-language.md - ユビキタス言語

出力先

設計結果は reports/03_design/ に出力します。 重要: 各ステップ完了時に即座にファイルを出力してください。

reports/03_design/
├── target-architecture.md    # Step 3-6完了時
├── transformation-plan.md    # Step 7完了時(移行計画)
└── operations-feedback.md    # 最終Step完了時

サブエージェント活用

前フェーズの出力ファイルが多い場合、Task toolのExploreエージェントで要約読み込みを行いメインコンテキストを保護できます。 詳細は .claude/skills/common/sub-agent-patterns.md の「Pattern 2: 前フェーズ出力読み込みエージェント」を参照。

実行プロンプト

あなたはマイクロサービスアーキテクチャの設計専門家です。以下の手順で設計を実行してください。

Step 0: 前提条件の検証

重要: 実行前に必ず前提条件を確認してください。

必須ファイルの確認:
├── reports/03_design/bounded-contexts-redesign.md  [必須] ← /ddd-redesign
├── reports/03_design/context-map.md                 [必須] ← /ddd-redesign
├── reports/03_design/aggregate-redesign.md         [必須] ← /ddd-redesign
├── reports/03_design/domain-analysis.md            [必須] ← /ddd-redesign
└── reports/03_design/system-mapping.md             [必須] ← /ddd-redesign

推奨ファイルの確認:
├── reports/02_evaluation/ddd-strategic-evaluation.md   [推奨]
├── reports/02_evaluation/ddd-tactical-evaluation.md    [推奨]
├── reports/02_evaluation/mmi-overview.md               [推奨]
└── reports/01_analysis/ubiquitous-language.md          [推奨]

エラーハンドリング:

  • 必須ファイルが存在しない場合 → /ddd-redesign を先に実行するよう案内
  • 推奨ファイルが存在しない場合 → 警告を表示して続行
  • /ddd-redesign が未実行の場合 → 事前に /ddd-evaluation → /ddd-redesign の実行を推奨

Step 1: 設計原則の確認

マイクロサービス設計の基本原則:

原則説明
Single Responsibility1サービス1責務
Loose Couplingサービス間の疎結合
High Cohesionサービス内の高凝集
Business Capabilityビジネス能力に沿った分割
Decentralized Governance分散ガバナンス
Design for Failure障害を前提とした設計
Evolutionary Design進化的な設計

Step 2: 技術スタック・非機能要件の確認

ターゲットアーキテクチャに影響する要件をAskUserQuestionで確認する。

{
  "questions": [
    {
      "question": "マイクロサービスのデプロイ基盤を選択してください",
      "header": "デプロイ",
      "options": [
        {"label": "Kubernetes (推奨)", "description": "EKS/AKS/GKE。スケーラビリティ・運用自動化に最適"},
        {"label": "Amazon ECS", "description": "AWS Fargate/EC2ベース。AWSネイティブ環境向け"},
        {"label": "コンテナ (Docker Compose)", "description": "小規模・開発環境向け"},
        {"label": "未定", "description": "設計結果に基づいて後から決定"}
      ],
      "multiSelect": false
    },
    {
      "question": "サービス間の主要な通信パターンを選択してください(複数可)",
      "header": "通信パターン",
      "options": [
        {"label": "REST API (推奨)", "description": "同期通信。OpenAPI仕様で標準化。CRUD操作向き"},
        {"label": "gRPC", "description": "高性能同期通信。Protocol Buffers。内部通信向き"},
        {"label": "非同期メッセージング (Kafka)", "description": "イベント駆動。疎結合。結果整合性で十分な場合"},
        {"label": "非同期メッセージング (SQS/SNS)", "description": "AWSネイティブ。運用負荷が低い"}
      ],
      "multiSelect": true
    },
    {
      "question": "可観測性(監視・ログ・トレーシング)スタックを選択してください",
      "header": "可観測性",
      "options": [
        {"label": "Prometheus + Grafana (推奨)", "description": "OSSスタック。コスト効率良好。ScalarDB公式対応"},
        {"label": "Datadog", "description": "SaaS統合監視。導入容易。従量課金"},
        {"label": "AWS CloudWatch + X-Ray", "description": "AWSネイティブ。追加インフラ不要"},
        {"label": "既存システムに統合", "description": "OpenTelemetry Collectorで既存監視へ統合"}
      ],
      "multiSelect": false
    }
  ]
}

設計への反映:

  • デプロイ基盤 → Step 6 インフラ設計のコンテナ/オーケストレーション設計に反映
  • 通信パターン → Step 4 通信パターン設計の同期/非同期比率に反映
    • 推奨組み合わせ: 「REST API」+「非同期メッセージング (Kafka)」— 同期CRUDと非同期イベント駆動の併用が標準的なマイクロサービス構成
  • 可観測性 → Step 8 運用計画の可観測性戦略に反映

Step 3: サービス設計

入力: bounded-contexts-redesign.md, aggregate-redesign.md, domain-analysis.md を読み込み

各境界づけられたコンテキストに対してサービスを設計:

## [サービス名]

### 基本情報
- サービスID: [一意識別子]
- 対応コンテキスト: [コンテキスト名]
- ドメインタイプ: [Pipeline/Blackboard/Dialogue]
- サービスカテゴリ: [Process/Master/Integration/Supporting]

### 責務
[このサービスが担う責務の説明]

### API設計
| エンドポイント | メソッド | 説明 | リクエスト | レスポンス |
|-------------|--------|------|----------|----------|

### イベント
| イベント名 | 発行条件 | ペイロード | 購読者 |
|----------|---------|----------|-------|

### データモデル
[主要エンティティと関係]

### 依存サービス
| サービス | 依存内容 | 通信方式 | フォールバック |
|---------|---------|---------|--------------|

### 非機能要件
| 項目 | 要件 | 実現方式 |
|-----|-----|---------|
| 可用性 | [X]% | [方式] |
| レイテンシ | [X]ms | [方式] |
| スループット | [X]TPS | [方式] |

Step 4: 通信パターンの設計

入力: context-map.md を読み込み(コンテキスト間関係を参照)

同期通信

パターン使用場面実装技術
REST APICRUD操作OpenAPI/gRPC
GraphQL複雑なクエリApollo/Hasura

非同期通信

パターン使用場面実装技術
Event Sourcing状態変更の記録Kafka/EventStore
CQRS読み書き分離専用Read Model
Saga分散トランザクションOrchestration/Choreography

Step 5: データ設計

データ所有権

各サービスは自身のデータを所有:

  • Private Database: サービス専用DB
  • Shared Database: 移行過渡期のみ許容
  • Database per Service: 最終目標

データ同期パターン

パターン説明使用場面
Event-Carried State Transferイベントでデータを運ぶ緩い整合性で十分な場合
API Composition複数サービスからデータ取得リアルタイム性が必要な場合
Materialized View読み取り専用ビュークエリ性能が重要な場合

Step 6: インフラ設計

このステップ完了時に出力: reports/03_design/target-architecture.md

  • サービス設計、通信パターン、データ設計、インフラ設計をまとめて出力

コンテナ/オーケストレーション

graph TD
    subgraph Cluster["Kubernetes Cluster"]
        subgraph Production["Namespace: Production"]
            S1["Service A"]
            S2["Service B"]
            S3["Service C"]
        end
        subgraph Infra["Namespace: Infrastructure"]
            DB[("Database")]
            MQ["Message Queue"]
            Cache["Cache"]
        end
    end

サービスメッシュ

機能実装
Service DiscoveryConsul/Kubernetes DNS
Load BalancingEnvoy/Istio
Circuit BreakerIstio/Resilience4j
Distributed TracingJaeger/Zipkin

Step 7: 移行計画策定

移行戦略とフェーズを策定:

  • Phase 1: 準備(インフラ整備、CI/CD構築)
  • Phase 2: パイロット(1-2サービスの切り出し)
  • Phase 3: 段階的移行
  • Phase 4: 完了・最適化

このステップ完了時に出力: reports/03_design/transformation-plan.md

Step 8: 運用計画策定

可観測性、SLO/SLI、インシデント管理を設計。

このステップ完了時に出力: reports/03_design/operations-feedback.md

Step 9: Mermaid図の検証

出力したファイルのMermaid図を検証し、エラーがあれば修正:

# 出力ファイルのMermaid検証
/fix-mermaid ./reports/03_design

検証項目:

  • サブグラフ名が引用符で囲まれている(例: subgraph "Kubernetes Cluster")
  • 日本語ラベルが引用符で囲まれている
  • 複雑なノード名が引用符で囲まれている
  • sequenceDiagramの予約語(BOX等)が回避されている

出力フォーマット

target-architecture.md

ターゲットアーキテクチャ(設計思想、アーキテクチャ図、サービスカタログ、サービス詳細設計、通信設計、データアーキテクチャ、セキュリティ設計、可観測性設計)

transformation-plan.md

変換計画(移行戦略、フェーズ概要、Phase 1-4詳細、リスク管理、成功指標)

operations-feedback.md

運用・フィードバック計画(可観測性戦略、SLO/SLI設計、インシデント管理、継続的改善サイクル、キャパシティプランニング)

ツール活用ガイドライン

設計図作成

  • Mermaid記法を使用
  • 複雑な図は複数に分割
  • 凡例を明記

コード確認

# サービス分割の妥当性確認
mcp__serena__find_referencing_symbols で依存関係を確認

ドキュメント更新

  • 設計変更時は必ず更新
  • バージョン管理を明記
  • 変更履歴を記録

エラーハンドリング

  • DDD設計が未実施 → /ddd-redesign を先に実行するよう案内
  • ドメインマッピングが未実施 → /map-domains を先に実行するよう案内
  • サービス分割が細かすぎる場合 → モジュラーモノリスから段階的に分割を提案
  • 非機能要件が不明確 → デフォルト値で設計し、後から調整可能と案内

関連スキル

スキル用途
/ddd-redesignDDD再設計(入力)
/map-domainsドメインマッピング(入力)
/design-apiAPI設計(次ステップ)
/design-scalardbデータアーキテクチャ設計(次ステップ)
/design-implementation実装仕様生成(次ステップ)

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

access-control-analysis

無料日本語概要

アクセス制御分析エージェント - ゼロトラストモデルに基づくアクセス制御の現状分析と移行準備評価。/access-control-analysis [対象パス] で呼び出し。

wfukatsu/architecture-redesign-agent52026年2月12日 更新

analyze-system

無料日本語概要

システム分析エージェント - ユビキタス言語、アクター、ロール、権限、ドメイン-コード対応表を抽出。/analyze-system [対象パス] で呼び出し。

wfukatsu/architecture-redesign-agent52026年2月12日 更新

build-graph

無料日本語概要

GraphDB構築エージェント - ユビキタス言語とコード解析結果からRyuGraphデータベースを構築。/build-graph [対象パス] で呼び出し。

wfukatsu/architecture-redesign-agent52026年2月12日 更新

compile-report

無料日本語概要

レポートコンパイルエージェント - 分析結果のMarkdownファイルを統合HTMLレポートに変換。/compile-report [出力パス] で呼び出し。

wfukatsu/architecture-redesign-agent52026年2月12日 更新

create-domain-story

無料日本語概要

ドメインストーリーテリングエージェント - ドメインストーリーの作成、ビジネスプロセスの可視化。/create-domain-story --domain=[ドメイン名] で呼び出し。

wfukatsu/architecture-redesign-agent52026年2月12日 更新

data-model-analysis

無料日本語概要

データモデル分析エージェント - 既存のデータモデルを分析し、エンティティ・リレーションシップ・ドメインルールを抽出。/data-model-analysis [対象パス] で呼び出し。

wfukatsu/architecture-redesign-agent52026年2月12日 更新

wfukatsu のスキルをすべて見る

このスキルの問題を報告する