データプレッシャーとは何か?
ノンストップシステムにおいてデータプレッシャーについてよく耳にします。それは何で、なぜそれほど重要なのでしょうか?
物理的な意味でのプレッシャーは、2つの閉じた区画間のガスや液体の不均衡を表します。均衡が達成されるまで両方向に作用します。これを管理したい場合、通常は2つの間にバルブを設置します。
データ処理システムにおけるデータプレッシャー、または上流プレッシャーは、処理の準備ができているデータの量を表します。ファイルベース(バッチ)ソリューションでは、これは単に処理待ちのファイルの量を表します(非同期)。処理速度は純粋に下流アクターの処理能力に基づいており、需要に基づいています。バッチにおけるデータプレッシャーは、暗黙的であるためシステムの過負荷の脅威には通常なりません。バッチ処理システムは常に処理可能な範囲でのみ処理します。
しかし、現代のメッセージ駆動型のリアルタイム処理環境では、データプレッシャーは明示的であり、データは到着次第処理される必要があります。
ノンストップリアルタイムシステムにおけるバックプレッシャーの重要性
メッセージ駆動型のユースケースでは、データは常にリアルタイムで処理されるべきです。したがって、システムはピーク負荷を処理するために弾力的にスケールできる必要があり、低データプレッシャーの時間帯には不要なリソースを解放する必要があります。
大きなデータ負荷を扱う際に詰まるアーキテクチャの例は無数にあります。これにより、通常はそのようなアーキテクチャの心停止に至る悪循環が生じます。主な問題は、上流アクターが反応できるような負の需要シグナル(または高データバックプレッシャーシグナル)が欠如していることです。そのようなシグナルがあれば、適切な対策を講じることができます。
そのような対策には以下が含まれます:
- データストリーム全体の処理を遅くする、または
- 追加のプレッシャーを処理するために処理能力を増やす
上流のデータプレッシャーが減少すると、対策は逆転できます。より多くのデータを再び提供できるか、以前にアクティブ化された処理能力を廃止することができます。
要約すると、次のようになります:
- 処理可能なデータがあることを示すデータシグナルまたは上流プレッシャーがあり、
- 下流アクターがどれだけ負荷を受けているか、上流アクターからのプレッシャーを下流アクターに解放できるかを示す需要シグナルまたはバックプレッシャーがあります。

これらのシグナルを使用して、システムはすべての参加者間で均衡を交渉し、処理が決して止まらず、むしろ減速する(または追加の容量が自動的に利用可能になる)ことを保証します。この問題はReactive Manifestoでよく認識され定義されており、システムがメッセージ駆動型で弾力的で回復力があり、負荷に応答できることを要求しています。これらの要件に応えるシステムは「Reactive」と呼ばれます。

layline.ioの対処法
バックプレッシャーの課題に対する解決策は簡単に思えます。しかし、実際にはこのダンスのすべての参加者が両方向のデータプレッシャーを認識する必要があるため、解決は難しいです。Reactive Streaming管理はこの問題を解決しており、そのためlayline.ioはその利点を最大限に活用しています。しかし、これは心臓の弱い人向けではなく、急な学習と経験の曲線が伴います。layline.ioは、この複雑さをユーザーから隠し、UI駆動のローコード設定、一クリックデプロイ、モニタリングなど、すべてのプロダクションに必要な機能を提供する使いやすいプラットフォームを提供します。

リソース
- Reactive Manifesto
- layline.ioについてもっと読むにはこちら。
- hello@layline.ioでお問い合わせください。



