11章イベント駆動バッチ処理

10章では、ワークキューを処理する汎用的なフレームワークと、シンプルなワークキュー処理を行ういくつかのアプリケーションの例を見てきました。ワークキューはある入力をある出力に別々に変換するのに適した仕組みです。しかし、複数のアクションを行ったり、1つのデータ入力から複数の出力を生成する必要があるといったバッチアプリケーションもたくさんあります。そういった場合、あるワークキューの出力が他のワークキューの入力になるよう、ワークキュー同士を繋げることになります。これにより、前のワークキューのステップが完了したというイベントを受けて処理ステップが繋がった形になります。

このようなイベント駆動システムは、いろいろなステージとの協調を表現する有向非巡回グラフ上の処理(work)の流れ(flow)になるので、ワークフローシステム(workflow systems)と呼ばれることが多いです。このシステムの基本的な図が図11-1です。

この種のシステムの最も単純なアプリケーションは、あるキューの出力を次のキューの入力に単に繋げたものです。しかし、システムが複雑になっていくと、ワークキュー同士を繋げる方法に、いろいろなパターンが出てきます。このようなパターンを理解してデザインするのは、システムがどのように動いているのかを理解するのに重要です。イベント駆動バッチの運用は、イベント駆動FaaSと似ています。そのため、各イベントキューがそれぞれどのように関連し合っているかの詳細を知らないと、システム全体がどのように動いているのかを理解するのは難しくなります。

図11-1 ワークアイテムを複数のキュー(ステージ2aと2b)にコピーし、並列に処理し、1つのキュー(ステージ3)にまとめるワークフロー ...

Get 分散システムデザインパターン ―コンテナを使ったスケーラブルなサービスの設計 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.