microservices-architect について
Microservices Architectは、マイクロサービスアーキテクチャの設計と実装を支援するスキルです。サービス境界や通信方式の検討に加え、分散トランザクションと耐障害性も扱います。
主な機能
- 01サービス境界とAPIの設計
- 02モノリス分割の指針
- 03同期・非同期通信パターン
- 04サービスメッシュとゲートウェイの計画
- 05Sagaトランザクション設計
- 06耐障害性と障害対応
活用シーン
- 01モノリスのサービス分割
- 02サービス間通信の計画
- 03サービスメッシュの実装
- 04分散トランザクション処理の設計
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ 404kidwiz/ claude-supercode-skills --skill microservices-architectインストール後、Claude Code で/microservices-architectを入力して読み込まれたか確認します。
詳細
マイクロサービスアーキテクト
目的
マイクロサービスアーキテクチャの設計と実装に関する専門知識を提供します。サービスの分割、サービス間通信パターン、サービスメッシュの実装、分散システムの課題解決を専門としています。
使用するタイミング
- モノリスをマイクロサービスに分割する
- サービス境界と API を定義する
- サービスメッシュ(Istio、Linkerd)を実装する
- API ゲートウェイパターンを設計する
- 分散トランザクション(Saga パターン)に対応する
- イベント駆動型通信を実装する
- サービスディスカバリーとロードバランシングを設定する
- 耐障害性を考慮した設計を行う(サーキットブレーカー、リトライ)
クイックスタート
このスキルを呼び出す場合:
- マイクロサービスをゼロから設計する
- 既存のモノリスを分割する
- サービス間通信を実装する
- サービスメッシュまたは API ゲートウェイを設定する
- 分散システムの課題を解決する
呼び出さない場合:
- レガシーシステムを段階的に移行する →
/legacy-modernizerを使用する - イベントストリーミングアーキテクチャ →
/event-driven-architectを使用する - Kubernetes の運用 →
/kubernetes-specialistを使用する - 単一サービスの API 設計 →
/api-designerを使用する
意思決定フレームワーク
Communication Pattern?
├── Synchronous
│ ├── Simple calls → REST/gRPC
│ └── Complex routing → API Gateway
├── Asynchronous
│ ├── Events → Kafka/RabbitMQ
│ └── Commands → Message queues
└── Distributed Transaction
├── Strong consistency → Saga (orchestration)
└── Eventual consistency → Saga (choreography)
主なワークフロー
1. サービスの分割
- ドメインモデルから境界づけられたコンテキストを特定する
- サービスの責任(単一の目的)を定義する
- 各サービスの API を設計する
- サービスごとのデータ所有権を決定する
- サービス間通信を計画する
- デプロイ戦略を定義する
2. サービスメッシュの実装
- メッシュ(Istio、Linkerd、Consul)を選択する
- サイドカープロキシをデプロイする
- トラフィック管理を設定する
- セキュリティのために mTLS を実装する
- 可観測性(トレーシング、メトリクス)を設定する
- リトライとサーキットブレーカーのポリシーを定義する
3. Saga パターンの実装
- 分散トランザクションの境界を特定する
- オーケストレーションとコレオグラフィーのどちらを採用するか選択する
- 補償トランザクションを定義する
- (オーケストレーション方式の場合)Saga コーディネーターを実装する
- 障害シナリオに対応する
- Saga の状態を監視する仕組みを追加する
ベストプラクティス
- 技術レイヤーではなく、ビジネス機能を中心にサービスを設計する
- データを所有する。各サービスが独自のデータベースを管理する
- 疎結合にするため、非同期通信を使用する
- 耐障害性を確保するため、サーキットブレーカーを実装する
- 障害を前提に設計する。いずれはすべてが失敗する
- 分散トレーシングには相関 ID を使用する
アンチパターン
| アンチパターン | 問題 | 適切なアプローチ |
|---|---|---|
| 分散モノリス | サービスが結合し、両方の悪い点を抱える | 適切な境界づけられたコンテキスト |
| 共有データベース | 密結合 | サービスごとにデータベースを用意する |
| 同期処理の連鎖 | 障害が連鎖する | 可能な限り非同期にする |
| サーキットブレーカーなし | 障害が連鎖する | Hystrix/Resilience4j を実装する |
| ナノサービス | 運用上のオーバーヘッド | 適切な規模のサービス |
コメント
Markdown 対応