概要
EventCatalogは、イベント駆動アーキテクチャにおけるイベントを一元的に管理・ドキュメント化・可視化するためのオープンソースプラットフォームです。データパイプラインの全体管理にはApache Airflow データパイプライン:ワークフロー自動化の完全ガイドも組み合わせると効果的です。大規模マイクロサービス環境でのイベント仕様管理の混乱を解決するために開発されました。AsyncAPI仕様に準拠しながら、ビジュアルで直感的にイベントフローを把握できるのが特徴です。
主な機能
- イベントカタログの一元管理: すべてのイベント定義をMarkdownベースで管理し、バージョン管理システムと統合可能
- スキーマの可視化: JSONスキーマやProtobufで定義されたイベントの構造を自動解析し、HTMLビューで表示
- サービス間の関連図生成: どのサービスがどのイベントを発行・購読するかを自動で可視化し、依存関係を把握
- Markdown形式のドキュメント作成: 技術者以外も編集可能な形式で、イベントの説明・ユースケース・変更履歴を記述
- マルチプロトコル対応: AsyncAPI、OpenAPI、gRPCなど複数のイベント仕様形式に対応
- 検索・フィルター機能: 数百のイベント定義から必要な情報を素早く検索できる検索インターフェース
- エクスポート・API提供: カタログ情報をJSON/YAML形式でエクスポート、外部ツール連携用APIも提供
技術スタック
- フレームワーク: Next.js, React
- 言語: TypeScript, JavaScript
- スタイリング: Tailwind CSS
- データ形式: Markdown, JSON Schema, YAML
- ホスティング: Docker, Vercel, 自己ホスト対応
- 仕様準拠: AsyncAPI, OpenAPI互換
- デプロイメント: GitHub Actions, CI/CD統合対応
導入方法
インストール(Docker経由):
docker run -p 3000:3000 -v $(pwd)/catalog:/opt/eventcatalog/public/catalog eventcatalog/eventcatalog
npmでのセットアップ:
npm install -g @eventcatalog/cli
eventcatalog create my-catalog
cd my-catalog
npm run dev
イベント定義ファイルの配置:
catalog/
events/
user-signed-up.md
order-created.md
services/
payment-service.md
notification-service.md
設定ファイル(eventcatalog.config.js)の編集:
プロジェクト名、カタログのメタデータ、カスタマイズ設定を定義してから、npm run buildでサイト生成
競合比較
| ツール | EventCatalog | Apache Kafka UI | Confluent Schema Registry | AsyncAPI Studio |
|---|---|---|---|---|
| イベント定義管理 | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| ビジュアル化 | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ |
| ドキュメント機能 | ⭐⭐⭐⭐⭐ | ⭐ | ⭐⭐ | ⭐⭐⭐ |
| セットアップ難易度 | 易 | 易 | 中 | 易 |
| 自己ホスト対応 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
EventCatalogの差別化ポイントは、イベント駆動アーキテクチャ全体のドキュメント化に特化している点です。コンテナ環境へのデプロイ管理にはPodman TUI:ターミナルだけでコンテナをフル管理する方法が役立ちます。単なるメッセージングインフラの監視ツールではなく、ビジネスロジックレベルでのイベント定義・依存関係・変更履歴を管理します。Markdownベースなので、エンジニアだけでなくプロダクト担当者やアーキテクトも参加でき、チーム全体での知識共有が容易。またバージョン管理システムとの連携により、イベント設計の進化を追跡できるという他ツールにない価値があります。
こんな人におすすめ
- マイクロサービス開発チームのリーダー: イベント駆動設計の全体像を可視化し、チーム全体で同じ言語を話す環境を整えたい
- バックエンドエンジニア: イベント仕様を手軽にドキュメント化し、他チームとの設計レビューを効率化したい
- ソリューションアーキテクト: 複数プロジェクト間でのイベント競合や設計パターンを統一的に管理したい
- DevOpsエンジニア: イベント駆動システムの依存関係を把握し、デプロイメント順序やCI/CDパイプラインを最適化したい
- エンタープライズ組織の技術主管: 大規模組織内で複数のチームが存在する場合、イベント仕様の標準化と一元管理を実現したい