BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース イベントファースト思想はなぜ重要か

イベントファースト思想はなぜ重要か

原文(投稿日:2019/02/28)へのリンク

グローバル企業が,その絶え間ない変化と究極的な規模において今日のアーキテクチャの課題に対処するためには,システム設計の基本原則に立ち返ることが必要である。我々の直面する問題の共通要素は,アクションとリアクションの両方におけるイベント駆動の概念である — イベントの重要性と,さらには進化的アーキテクチャをもサポートするイベントファースト・アプローチのメリットを説いた一連のブログ記事の中で,Neil Avery氏はこのように記している。

Kafkaを基盤とするイベントストリーミングプラットフォームのプロバイダであるConfluentを開発したAvery氏は,イベントがシステム設計における中核的な原則であるという認識に至るまでに25年を要した,と述べている。氏は2002年,段階的イベント駆動アーキテクチャ(SEDA)に基づく商用メッセージングシステムを開発した際に,イベントの重要性を理解したのだと言う。デジタル化の進む世界において,企業はよりリアルタイム指向であることを求められている。これを成功させるにはイベント駆動でなければならない,というのが氏の考えだ。

革命があったのです。企業はリアルタイムにならなければならず,リアルタイムになるためには,イベント駆動でなければなりません。

イベント駆動アーキテクチャに移行するということは,Avery氏の経験からは,単純なユースケースからプロセスや運用をより深く理解するための行動であったり,あるいはアーキテクチャの論理的理由に関わるものであることが少なくない。その後しばらくすると,イベントは確かに有用ではあるが,それが本領を発揮するのはストリームである,ということに気が付く。インベントの価値は,例えば,ユーザがサイト内でどのようにクリックをしたのか,あるいは買い物かごのアイテムを追加や削除したのか,といった振る舞いを,イベント列(ストリーム)が表現するという事実にある,と氏は強調する。

イベント駆動の実現には2つの選択肢がある,とAvery氏は言う。ひとつはコマンドをイベントとして使って実行すべきことを説明する,イベントコマンド・アプローチの方法だ。その一例は,同期呼び出しを使用した従来型のRESTアプリケーションである。このアプローチの問題としては,エンドポイントと呼び出すメソッドを事前に知っていなければならないこと,イベントプロセッサを新たに追加した時に既存の部分を変更する必要が生じること,などがあげられる。

第2のアプローチは,純粋なイベントによるメッセージパラダイムを使用して発生した事象を表現する,イベントファースト・アプローチの方法だ。これが氏の推奨する方法で,イベントを扱う責任をコンシューマ側に移動する点を指摘する。この場合,イベントはAPIとは結びつかない形で発行され,イベントのパブリッシャがコンシューマを意識することはない。従ってイベントは,パブリッシャに影響を与えることなく,時間の経過とともに変更することが可能である。氏は次のような点を強調する。

イベントファースト・アプローチは責務の逆転を余儀なくさせます。これはアプリケーションの開発方法に関する根本的なパラダイムシフトです。

複雑に見えるかもしれないが,システム拡張時にそのメリットが明確になる,とAvery氏は指摘する。さらに氏は,進化的アーキテクチャはこの考え方によるメリットのひとつである,としている。

2018年初めのブログ記事でRandy Shoup氏は,イベントが開発者にとっていかに第1級ツールであるかを論じると同時に,開発者がツールとしてのイベントを過小評価しており,本来ならば得られるべきそのメリットを見過ごしていることが多いとも述べている。さらに氏は,インターフェースの定義にはイベントを含めるべきである,と指摘する。氏はeBay,Google,Stitch Fixで長い経験を積んでおり,現在はWeWorkのエンジニアリング担当副社長を務めている。

Camunda Workflow Engineの開発企業であるCamundaの創設者のひとりBernd Rücker氏は,DDD eXchange 2017で行ったプレゼンテーションの中で,イベントの発行がドメイン同士の独立性を確保する一方で,イベントの論理的なフローが実際に存在した場合には,このフローが暗黙的になって追跡が難しくなる,という主張をした。このような場合,氏は,プロセスマネージャを使用してプロセス全体を追跡可能にする方法を採用している。

2回目のブログ記事でAvery氏は,さまざまなイベント駆動のストリーミングアーキテクチャを詳細に検討した上で,アクタモデルを使用したリアクティブアーキテクチャとストリーミングアーキテクチャとの比較や,使用されるさまざまなパーシステンスモデルの比較を行っている。今日では多くの企業がマイクロサービスフレームワークを使用しており,ストリーミングの追加はその改善策と考えられていることも多い。しかし,それは事実ではない,とAvery氏は強調する — イベントストリーミングプラットフォームはマイクロサービスを置き換えるものである,なぜならば,ストリームプロセッサがマイクロサービスのプロデューサやコンシューマに相当するものと考えられるからだ。

Avery氏はさらに記事を書いており,パート3ではサーバレスを取り上げ,パート4ではイベントストリーミングアプリケーションの現状について論じている。

この記事に星をつける

おすすめ度
スタイル

BT