マイクロサービス・マルチプロダクトのためのスキーマ駆動型イベントバス
アーキテクチャの工夫ポイント
アーキテクチャ選択の背景や意図
マイクロサービスアーキテクチャでは、サービスが増えるほど通信経路が複雑化し、互いの依存関係が強くなるという課題があります。
イベントバスは、この依存関係と経路管理の問題を解決するための中核的な仕組みです。
各サービスはイベントバスという共通の仲介役へイベントを送信するだけでよく、サービス間の疎結合が実現します。
これにより、通信経路の管理が劇的に簡素化され、一つのサービスの障害が全体に広がるカスケード障害も抑制できます。
さらに、この仕組みを堅牢で信頼性の高いものにする機能があります。
スキーマによる品質保証
Protocol Bufferでデータの型や構造、protovalidateで値の正当性を定義・検証することで、サービス間のデータ品質と互換性を担保します。
セキュアな通信
JWTを用いた認証・認可により、許可されたサービスのみが安全にイベントを送受信できる環境を確保します。
このようにスキーマ駆動イベントバスは、単に依存関係を緩和するだけでなく、スキーマによる品質保証やセキュリティ機能を通じて、安全で開発効率の高いシステム構築を可能にしています。
現在の課題と今後の改善予定
Sagaオーケストレーションへの発展
現在のコレオグラフィーパターンから、より制御の効いたオーケストレーションパターンへ発展させることで、サービス間のトランザクション管理とイベント順序の問題を解決します。
スキーマ定義の更新に係る運用コストの低減
現在はスキーマ定義のProtocol Bufferの定義をソースコード上で集中管理しています。
その影響でスキーマ定義の更新や追加時にデプロイ、ユーザーが用いるSDKの更新が必要です。
今後スキーマ定義をAPIで更新可能にすることで、運用コストの低減を目指しています。
同期モードへの発展
Sagaオーケストレーションへ発展と似ていますが、よりシンプルなリクエストレスポンス形式のAPIを同期的に提供することを予定しています。
この改善により、同期的なAPI呼び出しであっても経路管理の軽減、依存関係の簡略化、スキーマ管理、バリデーション、認証・認可の恩恵を受けられ、他のAPIの変更による影響を最小化することが可能です。
◆執筆:上田義明 @bootjp
アーキテクチャを構成するツール
会社情報

株式会社hacomono
従業員規模 101名〜300名
エンジニア組織規模 51名〜100名
hacomono は、フィットネスクラブをはじめとするウェルネス産業向けのバーティカル SaaS です。店舗の入会・予約・決済・会員管理をデジタル化することで、働く人や運動する人の店舗体験をスマートに変えてきました。現在 7,000 店舗に導入、前年比 2 倍以上で増えています。
株式会社hacomonoの利用ツールレビュー
パフォーマンス/負荷テスト

OSS に切り出した汎用ロジックのパフォーマンス改善/劣化防止に利用
株式会社hacomono / mewton
テックリード / テックリード / 従業員規模: 101名〜300名 / エンジニア組織: 51名〜100名
DWH

株式会社hacomonoのBigQuery導入事例
株式会社hacomono / i9wa4
メンバー / データエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 51名〜100名
Web/UI自動化テスト

E2E テスト / リグレッションテスト目的で導入した playwright
株式会社hacomono / mewton
テックリード / テックリード / 従業員規模: 101名〜300名 / エンジニア組織: 51名〜100名