mcpField
E
event-driven

event-driven

github.com/thebeardedbearsas開発107113 回インストール今日更新
リポジトリ

event-driven について

イベント駆動アーキテクチャを採用する開発者向けに、イベントソーシング、CQRS、Saga、イベントバスなどのパターンを紹介する資料です。状態の再構築、分散トランザクションの調整、KafkaやSymfonyの例を含みます。

主な機能

  1. 01イベントソーシングと状態の再構築
  2. 02CQRSによる読み書きモデルの分離
  3. 03Sagaのオーケストレーションとコレオグラフィー
  4. 04Kafkaイベントバスの例
  5. 05Symfonyドメインイベントの例

活用シーン

  1. 01イベントログからアプリケーション状態を再構築
  2. 02読み取りモデルと書き込みモデルを分離
  3. 03マイクロサービス間の分散トランザクションを調整
  4. 04イベントを通じたドメイン処理の実行

インストール

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

$npx skills add https://github.com/thebeardedbearsas/claude-craft --skill event-driven

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

詳細

イベント駆動 — イベントソーシング、Saga、CQRS

疎結合とスケーラビリティを実現するイベント駆動型アーキテクチャです。

パターン

イベントソーシング — 状態ではなくイベントを保存します(監査、リプレイ)
CQRS — 読み取り/書き込みモデルを分離します(プロジェクション)
Saga — 分散トランザクションです(マイクロサービス)
イベントバス — 疎結合な Pub/Sub です(Kafka、RabbitMQ)

イベントソーシング

events = [OrderCreated(...), OrderPaid(...), OrderShipped(...)]

def rebuild(events):
    state = {}
    for e in events: state = apply(state, e)
    return state

Saga — コレオグラフィーとオーケストレーション

コレオグラフィー — イベントがサービス間を連鎖します(疎結合、デバッグが困難)
オーケストレーション — 中央のコーディネーターが制御します(可視性が高く、結合度が高い)

Choreo: OrderCreated → Payment → Shipping
Orchestrator: ProcessPayment() → ShipOrder()

Kafka イベントバス

// Producer
producer.send({ topic: 'orders', messages: [{ ... }] });

// Consumer
consumer.run({
  eachMessage: async ({ message }) => {
    handleEvent(JSON.parse(message.value));
  }
});

ドメインイベント(Symfony)

class OrderCreatedEvent {
    public function __construct(public Order $order) {}
}

class SendEmail {
    public function __invoke(OrderCreatedEvent $e) {
        $this->mailer->send($e->order->email, 'Confirmation');
    }
}

@.claude/rules/21-cqrs.md、@.claude/skills/async/SKILL.md を参照してください。

コメント