event-store-design について
イベントソーシングアプリケーションのイベントストア設計ガイドです。設計や実装を担う開発者向けに、アーキテクチャ、技術選定、要件、実践方法を扱い、テンプレートと例の参照先も示します。
主な機能
- 01イベントストアの構成と要件
- 02ストレージ技術の比較
- 03バージョニングと冪等性の指針
- 04スキーマ設計と拡張の助言
- 05テンプレートと例の参照先
活用シーン
- 01イベントソーシング用ストレージの選定
- 02イベントストリームとスキーマの設計
- 03イベントの保存と取得の改善
- 04イベントストアの拡張計画
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ wshobson/ agents --skill event-store-designインストール後、Claude Code で/event-store-designを入力して読み込まれたか確認します。
同梱ファイルreferences/details.md
詳細
イベントストアの設計
イベントソーシングアプリケーション向けのイベントストアを設計するための包括的なガイドです。
このスキルを使用する場面
- イベントソーシング基盤の設計
- イベントストア技術の選定
- カスタムイベントストアの実装
- イベントの保存と取得の最適化
- イベントストアのスキーマの設定
- イベントストアのスケーリングの計画
中核となる概念
1. イベントストアのアーキテクチャ
┌─────────────────────────────────────────────────────┐
│ Event Store │
├─────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Stream 1 │ │ Stream 2 │ │ Stream 3 │ │
│ │ (Aggregate) │ │ (Aggregate) │ │ (Aggregate) │ │
│ ├─────────────┤ ├─────────────┤ ├─────────────┤ │
│ │ Event 1 │ │ Event 1 │ │ Event 1 │ │
│ │ Event 2 │ │ Event 2 │ │ Event 2 │ │
│ │ Event 3 │ │ ... │ │ Event 3 │ │
│ │ ... │ │ │ │ Event 4 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────┤
│ Global Position: 1 → 2 → 3 → 4 → 5 → 6 → ... │
└─────────────────────────────────────────────────────┘
2. イベントストアの要件
| 要件 | 説明 |
|---|---|
| 追記専用 | イベントは不変で、追記のみ可能 |
| 順序付け | ストリーム単位およびグローバルな順序付け |
| バージョン管理 | 楽観的同時実行制御 |
| サブスクリプション | リアルタイムのイベント通知 |
| 冪等性 | 重複した書き込みを安全に処理 |
技術の比較
| 技術 | 最適な用途 | 制限事項 |
|---|---|---|
| EventStoreDB | 純粋なイベントソーシング | 単一目的 |
| PostgreSQL | 既存の Postgres スタック | 手動での実装 |
| Kafka | 高スループットのストリーミング | ストリーム単位のクエリには不向き |
| DynamoDB | サーバーレス、AWS ネイティブ | クエリの制限 |
| Marten | .NET エコシステム | .NET 固有 |
テンプレートと詳細な実例
テンプレートの完全なライブラリと詳細な実例は references/details.md にあります。具体的なテンプレートが必要な場合は、そのファイルをお読みください。
ベストプラクティス
推奨事項
- 集約の種類を含むストリーム ID を使用する -
Order-{uuid} - 相関 ID と因果 ID を含める - トレース用
- 初日からイベントをバージョン管理する - スキーマの進化を計画する
- 冪等性を実装する - 重複排除にイベント ID を使用する
- 適切にインデックスを作成する - クエリパターンに合わせて
非推奨事項
- イベントを更新または削除しない - それらは不変の事実です
- 大きなペイロードを保存しない - イベントは小さく保ちましょう
- 楽観的同時実行制御を省略しない - データの破損を防ぎます
- バックプレッシャーを無視しない - 遅いコンシューマーを処理しましょう
コメント
Markdown 対応