Lightbendの創業者でCTOのJonas Boner氏がイベント駆動サービスについて講演し、イベント駆動アーキテクチャ(EDA)とイベントストリーム処理(ESP)テクノロジが、分散システムを基盤とする現代的なアプリケーション設計において果たす役割について説明した。氏は先日のReactive Summit 2017カンファレンスで基調講演を行なった。
Boner氏のプレゼンテーションは、イベント起動システムが時間とともにいかに進歩してきたか、というバックグラウンドから始まり、TuxedoやTerracotta、SEDA(Staged Event Driven Architecture)などを例としてあげた。イベントとは事実を表すものであるから、イベント駆動が何を意味するかを知ることが重要だ。
イベントはシステムの自律性を向上するだけでなく、リスク軽減にも有効だ。疎結合、スケーラビリティ、レジリエンス、トレーサビリティも向上する。イベント駆動サービスアプローチは、基本的にシステムの制御フローを反転させるので、結合の最小化と自律性の向上を支援する。イベント駆動ソリューションが注目するのは、システムの構造よりも、システムの振る舞いなのだ。
氏は開発者に対して、システム内の“もの”(ドメインオブジェクト)に注目するのではなく、何が起きるのか(イベント)を重視することを推奨した。そして、Mark Burgess氏の提唱する約束理論(Promise Theory)を取り上げ、約束を通じてイベントをコンテキスト境界(Bounded Context)として定義する方法について解説した。
Boner氏はイベントによって時間の管理が可能になるとも述べて、Greg Young氏のことばを紹介した。
イベントをモデリングすることにより、システムで何が起きているのかを経時的に把握する必要が生じます。時間がシステムの重要なファクタになるのです。
イベントをログすることにより、イベント一時的なスナップショットとして、イベントログを完全なヒストリとして扱うことが可能になり、時間のモデル化が実現する。経時的なデバッグに加えて、監査やトレーサビリティのためにログを再生可能であるという意味において、タイムトラベルも可能になる。システム障害やデータ重複を再現できるのだ。
Boner氏はイベント駆動アーキテクチャとして、次のようなパターンに言及した。
これらのデザインパターンは、Apache FlinkやSpark Streaming、Kafka Streams、Apache Gearpump、Apache Beamなどのイベントストリーム処理テクノロジを使用して実装することができる。
この記事を評価
- 編集者評
- 編集長アクション