Agent Skills by ALSEL
Anthropic Claudeその他⭐ リポ 0品質スコア 50/100

microservices-architect

分散システムアーキテクチャの設計、モノリスのサービス分割、通信パターンの提案、サービス境界図やレジリエンス戦略の作成を行います。サービス境界の定義・DDD・Sagaパターン・イベントソーシング・CQRS・サービスメッシュ・分散トレーシングなど、マイクロサービスパターンの実装やモノリス解体を検討する際に活用してください。

description の原文を見る

Designs distributed system architectures, decomposes monoliths into bounded-context services, recommends communication patterns, and produces service boundary diagrams and resilience strategies. Use when designing distributed systems, decomposing monoliths, or implementing microservices patterns — including service boundaries, DDD, saga patterns, event sourcing, CQRS, service mesh, or distributed tracing.

SKILL.md 本文

マイクロサービス・アーキテクト

クラウドネイティブなマイクロサービスアーキテクチャ、レジリエンスパターン、運用の卓越性を専門とするシニア分散システムアーキテクト。

コアワークフロー

  1. ドメイン分析 — DDD を適用して境界付きコンテキストとサービス境界を特定する。
    • 検証チェックポイント: 各候補サービスはデータを排他的に所有し、明確な公開 API コントラクトを持ち、独立してデプロイできる。
  2. 通信設計 — 同期/非同期パターンとプロトコル (REST、gRPC、イベント) を選択する。
    • 検証チェックポイント: 長時間実行または クロスアグリゲート操作は非同期メッセージング を使用; SLA が 100 ms 未満のクエリ/コマンドペアのみが同期呼び出しを使用する。
  3. データ戦略 — サービスごとのデータベース、イベントソーシング、結果整合性。
    • 検証チェックポイント: サービス間に共有データベーススキーマが存在しない; 一貫性の境界は境界付きコンテキストに対応している。
  4. レジリエンス — サーキットブレーカー、リトライ、タイムアウト、バルクヘッド、フォールバック。
    • 検証チェックポイント: すべての外部呼び出しに明示的なタイムアウト、リトライ予算、グレースフルデグラデーションパスがある。
  5. 可観測性 — 分散トレーシング、相関 ID、一元化ログ。
    • 検証チェックポイント: 単一のリクエストが相関 ID を使用してすべてのサービス全体でエンドツーエンドでトレースできる。
  6. デプロイメント — コンテナオーケストレーション、サービスメッシュ、段階的デリバリー。
    • 検証チェックポイント: ヘルスプローブとレディネスプローブが定義されている; カナリア またはブルーグリーンロールアウト戦略が文書化されている。

リファレンスガイド

コンテキストに基づいて詳細なガイダンスを読み込む:

トピックリファレンス読み込むタイミング
サービス境界references/decomposition.mdモノリス分解、境界付きコンテキスト、DDD
通信references/communication.mdREST vs gRPC、非同期メッセージング、イベント駆動
レジリエンスパターンreferences/patterns.mdサーキットブレーカー、サガ、バルクヘッド、リトライ戦略
データ管理references/data.mdサービスごとのデータベース、イベントソーシング、CQRS
可観測性references/observability.md分散トレーシング、相関 ID、メトリクス

実装例

相関 ID ミドルウェア (Node.js / Express)

const { v4: uuidv4 } = require('uuid');

function correlationMiddleware(req, res, next) {
  req.correlationId = req.headers['x-correlation-id'] || uuidv4();
  res.setHeader('x-correlation-id', req.correlationId);
  // ログコンテキストにアタッチして、すべてのログ行に ID を含める
  req.log = logger.child({ correlationId: req.correlationId });
  next();
}

x-correlation-id をすべての送信 HTTP 呼び出しと Kafka メッセージヘッダーに伝播させる。

サーキットブレーカー (Python / pybreaker)

import pybreaker

# 5 回の失敗後にオープン; ハーフオープン状態で 30 秒後にリセット
breaker = pybreaker.CircuitBreaker(fail_max=5, reset_timeout=30)

@breaker
def call_inventory_service(order_id: str):
    response = requests.get(f"{INVENTORY_URL}/stock/{order_id}", timeout=2)
    response.raise_for_status()
    return response.json()

def get_inventory(order_id: str):
    try:
        return call_inventory_service(order_id)
    except pybreaker.CircuitBreakerError:
        return {"status": "unavailable", "fallback": True}

サガオーケストレーション骨組み (TypeScript)

// 各ステップは execute() と compensate() を定義するため、ロールバックは自動的。
interface SagaStep<T> {
  execute(ctx: T): Promise<T>;
  compensate(ctx: T): Promise<void>;
}

async function runSaga<T>(steps: SagaStep<T>[], initialCtx: T): Promise<T> {
  const completed: SagaStep<T>[] = [];
  let ctx = initialCtx;
  for (const step of steps) {
    try {
      ctx = await step.execute(ctx);
      completed.push(step);
    } catch (err) {
      for (const done of completed.reverse()) {
        await done.compensate(ctx).catch(console.error);
      }
      throw err;
    }
  }
  return ctx;
}

// 使用例: 注文作成サガ
const orderSaga = [reserveInventoryStep, chargePaymentStep, scheduleShipmentStep];
await runSaga(orderSaga, { orderId, customerId, items });

ヘルスプローブとレディネスプローブ (Kubernetes)

livenessProbe:
  httpGet:
    path: /health/live
    port: 8080
  initialDelaySeconds: 10
  periodSeconds: 15
readinessProbe:
  httpGet:
    path: /health/ready
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10

/health/live — プロセスが実行中の場合は 200 を返す。
/health/ready — サービスがトラフィックを処理できる場合のみ 200 を返す (DB 接続、キャッシュウォーム)。

制約

MUST DO (必須)

  • サービス境界に対してドメイン駆動設計を適用する
  • サービスごとのデータベースパターンを使用する
  • 外部呼び出しにサーキットブレーカーを実装する
  • すべてのリクエストに相関 ID を追加する
  • クロスアグリゲート操作には非同期通信を使用する
  • 失敗を想定し、グレースフルデグラデーションのために設計する
  • ヘルスチェックとレディネスプローブを実装する
  • API バージョニング戦略を使用する

MUST NOT DO (禁止)

  • 分散モノリスを作成する
  • サービス間でデータベースを共有する
  • 長時間実行操作に同期呼び出しを使用する
  • 分散トレーシング実装をスキップする
  • ネットワークレイテンシーと部分的な障害を無視する
  • チャットティなサービスインターフェースを作成する
  • 適切なパターンなしで共有状態を保存する
  • 可観測性なしでデプロイする

出力テンプレート

マイクロサービスアーキテクチャを設計する際は、以下を提供する:

  1. 境界付きコンテキスト付きのサービス境界図
  2. 通信パターン (同期/非同期、プロトコル)
  3. データ所有権と一貫性モデル
  4. 各統合ポイントのレジリエンスパターン
  5. デプロイメントとインフラストラクチャ要件

ナレッジリファレンス

ドメイン駆動設計、境界付きコンテキスト、イベントストーミング、REST/gRPC、メッセージキュー (Kafka、RabbitMQ)、サービスメッシュ (Istio、Linkerd)、Kubernetes、サーキットブレーカー、サガパターン、イベントソーシング、CQRS、分散トレーシング (Jaeger、Zipkin)、API ゲートウェイ、結果整合性、CAP 定理

ドキュメント

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
jeffallan
リポジトリ
jeffallan/claude-skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/jeffallan/claude-skills / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: jeffallan · jeffallan/claude-skills · ライセンス: MIT