イベント ドリブンとは何か、またリアルタイムとはどれくらいの速さか

完了

このことについて考えてみると、多数のイベント ドリブン シナリオを特定できます。 その多くではリアルタイムの反応が必要になります。

リアルタイムの意味

リアルタイムの反応は、瞬時の応答として見ることができます。 何を飲みたいかを尋ねる、コーヒー ショップのレジ係の例を見てみましょう。

レジ係は、すぐに応答が得られるか、程なくして応答が得られることを期待しています。 そうでなければ、レジ係が質問を言い直したり、あなたのことを失礼だと思ったりするかもしれません。 瞬時の応答が要求され、またそれが適切です。 答える時間は、少々ばらつきますが、それでも "リアルタイム" とみなされます。そのため、挨拶はすぐに返すべきですが、レジ係に注文を聞かれたときに少し考えるのは問題ありません。

このシナリオをソフトウェア システムに置き換えた場合、注意が必要なのはタイミングだけです。つまり、応答時間、完了時間、アクセス時間、起動時間などです。 それらのタイミングは、ユーザーまたはアクセスするアプリケーションによって定義されます。

Note

リアルタイムでは、システムのタスクによって、指定された期限内に関数が実行されます。

システムで何が起きているかを常に把握しておく必要があります。 そのため、ログ、監視、タイミングの測定など、明らかなことを忘れないようにしてください。

重要

事前に期限とタイミングを指定し、点検用に非ブロッキング監視ソリューションを設定するようにしてください。

まとめると、リアルタイムとは非常に高速、または一瞬であるということです。 正確にどれくらいの速さかは、所定のシナリオによって指定されます。

イベントドリブン アプリケーション

クリックイベントについて考える場合、何か他のことについて考えています。 イベント ドリブン アプリケーションでは、"ファイア アンド フォーゲット" の原則が使用されます。 イベントは次のシステムに向けて送信、つまり "ファイア (発射)" されます。それは別のサービスや、イベント ハブ、ストリーム、または Kafka のようなメッセージ ブローカーなどです。 システム内で次にあるものからの応答を、必ずしも待機する必要はありません。 "疎結合" を実現するには、結果整合性が必要です。これは別のレベルで対処する必要があります。

イベント ドリブン アプリケーションの性質を確認するために、コーヒーとカプチーノを購入する Alex という名前の顧客の例を使って、その主要なアーキテクチャ パターンを見てみましょう。

イベント通知

イベント通知とは、特定の出来事またはイベントの通知のことです。 各イベントは個別に発生します。 コーヒーとカプチーノを購入する Alex という名前の顧客の例では、次のようになります。

"1.イベント:Alex がコーヒーを購入する。"

"2.イベント: Alex がカプチーノを購入する。"

1 人のバリスタが、Alex の全注文を受け取るために、すべてのイベントを慎重にリッスンする必要があります。 しかし、2 人のバリスタが、各飲み物を別々に準備して提供することもできます。

イベント格納状態転送

イベント格納状態転送では、必要なすべての情報が 1 つのイベントに格納されます。 これは、イベントが失われた場合や、サービスですべてのイベントがリッスンされていない場合に便利です。 先の例では、イベントは次のようになります。

"1.イベント:Alex がコーヒーを購入する。"

"2.イベント: Alex が、コーヒーに加えて、カプチーノを購入する。"

1 人のバリスタの場合、2 番目のイベントのみをリッスンすれば十分である可能性があります。 2 人のバリスタがいる場合は、2 人目は最初の 1 人を見る必要があります。 注文をまとめて提供することもできますが、完全に分けた場合よりも作業に時間がかかる場合があります。

イベント ソーシング

イベント ソーシングでは、イベントのストレージに焦点を当てます。 お分かりのように、イベントは最初の例と同じです。 ただし、バリスタがイベントを受け取り、Alex が行ったすべての注文の現在の状態を把握するために関連するすべてのイベントについて考える場合、この概念では今のところ、バリスタが重要になります。

2 番目の注文で、バリスタは、Alex の注文を構成するのがコーヒー (最初の注文を覚えているため) とカプチーノ (たった今注文されたため) であることを知っています。 2 人目のバリスタと同時に作業するのは簡単ではありません。

注文を受けて飲み物を提供するレジ係を追加すると、バリスタは飲み物を準備するためだけに作業できるようになります。 顧客について何も知る必要はありません。 このようなシナリオでは、このレジ係が、イベントを保持するイベント ストアと呼ばれます。 イベント ソーシングでは複雑さのレイヤーが追加されますが、分離も実現されます。

"1.イベント:Alex がコーヒーを購入する。"

"レジ係:(1 番目) 注文 (Alex):コーヒー"

"2.イベント: Alex がカプチーノを購入する。"

"レジ係:(2 番目) 注文 (Alex):カプチーノ"

Visualization that shows event sourcing for buying a coffee.

利用統計情報はリアルタイム イベントである

他にも考えられる例があります。 たとえば、食品や薬品のメーカーで使用する冷却システムを運用するシナリオを考えてみましょう。 あなたは、システム内の温度やその他の関連データを、常に制御する必要があります。 利用統計情報を認識し、それを自動的に制御することが、成功にとって不可欠です。 2 秒ごとに利用統計情報を測定し、それをコントロール システムに送信して、そこでそのデータを分析および処理する場合が、イベント ドリブン システムです。 また、そのデータはリアルタイムで処理する必要があります。ビジネスにとって悲劇的な結果を避けるために、迅速に対応することが不可欠であるためです。