.claude/skills/design-microservices/SKILL.md
マイクロサービス設計エージェント - ターゲットアーキテクチャ、変換計画、運用計画の策定。/design-microservices [対象パス] で呼び出し。
npx skillsauth add wfukatsu/architecture-redesign-agent design-microservicesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
マイクロサービスアーキテクチャへの変換設計を行うエージェントです。
このエージェントは、ドメイン分析とMMI評価の結果をもとに、以下を策定します:
以下のファイルが存在すること:
必須(/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: 前フェーズ出力読み込みエージェント」を参照。
あなたはマイクロサービスアーキテクチャの設計専門家です。以下の手順で設計を実行してください。
重要: 実行前に必ず前提条件を確認してください。
必須ファイルの確認:
├── 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 の実行を推奨マイクロサービス設計の基本原則:
| 原則 | 説明 | |-----|------| | Single Responsibility | 1サービス1責務 | | Loose Coupling | サービス間の疎結合 | | High Cohesion | サービス内の高凝集 | | Business Capability | ビジネス能力に沿った分割 | | Decentralized Governance | 分散ガバナンス | | Design for Failure | 障害を前提とした設計 | | Evolutionary Design | 進化的な設計 |
ターゲットアーキテクチャに影響する要件を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
}
]
}
設計への反映:
入力: bounded-contexts-redesign.md, aggregate-redesign.md, domain-analysis.md を読み込み
各境界づけられたコンテキストに対してサービスを設計:
## [サービス名]
### 基本情報
- サービスID: [一意識別子]
- 対応コンテキスト: [コンテキスト名]
- ドメインタイプ: [Pipeline/Blackboard/Dialogue]
- サービスカテゴリ: [Process/Master/Integration/Supporting]
### 責務
[このサービスが担う責務の説明]
### API設計
| エンドポイント | メソッド | 説明 | リクエスト | レスポンス |
|-------------|--------|------|----------|----------|
### イベント
| イベント名 | 発行条件 | ペイロード | 購読者 |
|----------|---------|----------|-------|
### データモデル
[主要エンティティと関係]
### 依存サービス
| サービス | 依存内容 | 通信方式 | フォールバック |
|---------|---------|---------|--------------|
### 非機能要件
| 項目 | 要件 | 実現方式 |
|-----|-----|---------|
| 可用性 | [X]% | [方式] |
| レイテンシ | [X]ms | [方式] |
| スループット | [X]TPS | [方式] |
入力: context-map.md を読み込み(コンテキスト間関係を参照)
| パターン | 使用場面 | 実装技術 | |---------|---------|---------| | REST API | CRUD操作 | OpenAPI/gRPC | | GraphQL | 複雑なクエリ | Apollo/Hasura |
| パターン | 使用場面 | 実装技術 | |---------|---------|---------| | Event Sourcing | 状態変更の記録 | Kafka/EventStore | | CQRS | 読み書き分離 | 専用Read Model | | Saga | 分散トランザクション | Orchestration/Choreography |
各サービスは自身のデータを所有:
| パターン | 説明 | 使用場面 | |---------|-----|---------| | Event-Carried State Transfer | イベントでデータを運ぶ | 緩い整合性で十分な場合 | | API Composition | 複数サービスからデータ取得 | リアルタイム性が必要な場合 | | Materialized View | 読み取り専用ビュー | クエリ性能が重要な場合 |
このステップ完了時に出力: 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 Discovery | Consul/Kubernetes DNS | | Load Balancing | Envoy/Istio | | Circuit Breaker | Istio/Resilience4j | | Distributed Tracing | Jaeger/Zipkin |
移行戦略とフェーズを策定:
このステップ完了時に出力: reports/03_design/transformation-plan.md
可観測性、SLO/SLI、インシデント管理を設計。
このステップ完了時に出力: reports/03_design/operations-feedback.md
出力したファイルのMermaid図を検証し、エラーがあれば修正:
# 出力ファイルのMermaid検証
/fix-mermaid ./reports/03_design
検証項目:
subgraph "Kubernetes Cluster")ターゲットアーキテクチャ(設計思想、アーキテクチャ図、サービスカタログ、サービス詳細設計、通信設計、データアーキテクチャ、セキュリティ設計、可観測性設計)
変換計画(移行戦略、フェーズ概要、Phase 1-4詳細、リスク管理、成功指標)
運用・フィードバック計画(可観測性戦略、SLO/SLI設計、インシデント管理、継続的改善サイクル、キャパシティプランニング)
# サービス分割の妥当性確認
mcp__serena__find_referencing_symbols で依存関係を確認
/ddd-redesign を先に実行するよう案内/map-domains を先に実行するよう案内| スキル | 用途 |
|-------|-----|
| /ddd-redesign | DDD再設計(入力) |
| /map-domains | ドメインマッピング(入力) |
| /design-api | API設計(次ステップ) |
| /design-scalardb | データアーキテクチャ設計(次ステップ) |
| /design-implementation | 実装仕様生成(次ステップ) |
tools
インタラクティブワークフロー選択 - 実行したい処理を段階的に選択して実行。/workflow で呼び出し。
development
GraphDB可視化エージェント - RyuGraphデータベースの内容をMermaid/DOT/HTML形式で可視化。/visualize-graph [出力パス] で呼び出し。
tools
システム調査エージェント - コードベースの構造・技術スタック・問題点・DDD適合性を調査。/system-investigation [対象パス] で呼び出し。
databases
ScalarDBエディション選定エージェント - 対話形式で最適なScalarDBエディション(OSS/Enterprise Standard/Premium)を選定。/select-scalardb-edition で呼び出し。