CQRS(Command Query Responsibility Segregation)は我々が達成しようとしている最終目標ではなく,イベントソーシングの思想に向かう一歩に過ぎない — 今年初め,Domain-Driven Design Europeカンファレンスで行なったプレゼンテーションの中で,Greg Young氏はこのように述べた。さらに氏は,CQRSの適用について,単に同じデータベースを対象とした読み取りと書き込みを分離するという意味でも価値のあるパターンであり,そのような方法でシステムを構築しているチームも数多く存在する,とも指摘している。
イベントソーシングの10年の歴史を振り返って,Young氏は,金融やギャンブルのような高トランザクションのドメインを越えて新たなドメインにそれが適用されていく過程と,そこで起きた数多くのブレークスルーを目の当たりにしたと言う。イベントのモデリングでは,構造ではなく振る舞いに注目することが求められるため,従来の世界から来たドメインの専門家との対応で大きな意味を持つだけでなく,システムの重要なファクタとして時間に注目することにも繋がっている。時系列的に考え,時間との関係を考慮することは,ドメインの中心的知識を獲得する上でも意義があるのだ。
ここ数年における大きな成果のひとつとして,イベントストーミングがある。 Young氏は,Alberto Brandolini氏の使用する方法を引き合いに出しながら,ドメインの問題を発見するための探索的方法は複数ある,と説明している。Young氏自身の方法は,唯一のプロセスとして,サービス境界を見つけ出すことに注目する,というものだ。今後イベントストーミングプロセスはさらに定式化され,多くの人々の注目を集めるだろう,と氏は期待している。
この10年間に起きた唯一かつ最大の問題は,イベントソーシングに基づいてシステム全体を構築するというアンチパターンが一般化したことだ。実質的にイベントソース型のモノリスが構築されるという意味で,これは本当に大きな失敗である。CQRSとイベントソーシングはトップレベルのアーキテクチャではなく,システムのいくつかの部分に必要に応じて適用されるべきものなのだ。
最後にYoung氏が言及したのは,プロセスマネージャの欠如という問題だ。システムを複数のサービスで構築し,各サービスが他のサービスから直接イベントを受信するという方法は,そのシステムが実際に行なうことの理解を非常に難しくする。全サービスのコードを一通り見なければ,全体的なプロセスを見つけ出すことが困難な場合さえあるのだ。プロセスマネージャは難しい話題だが,書籍“Enterprise Integration Pattern”にその最良の解説がある,と氏は述べている。
イベントソーシングの今後について,氏は,関数プログラミングと併用されるケースが多くなるのではないかと予想する。イベントソーシングはオブジェクト指向と結び付けられることが多いのだが,実際には関数型コードと親和性の高い純粋な関数モデルであって,今後はイベントソースシステム上で関数型コードが稼働する事例が増えるに違いない,というのが氏の考えだ。
さらに氏は,今後はプロセス管理の利用が多くなるとも考えている。特に完璧なプロセスマネージャとしてのアクタについて,その利用が増えていくことになるだろう。プロセスマネージャのフレームワークはアクタフレームワークそのものだ,と氏は説明している。
次回のDomain-Driven Design Europeカンファレンスは,2017年1月末に開催される予定だ。
この記事を評価
- 編集者評
- 編集長対応