データ統合パイプラインのビルドストリーミングパイプラインパフォーマンスの検討事項

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

パフォーマンスの検討事項

Foundry でストリームを作成する準備をする際、ストリームを定義するレイテンシおよびスループットの期待について検討することが重要です。このページでは、ストリームの使用例に関連するレイテンシとスループットの両方のパフォーマンスについて検討すべきいくつかの質問を提示します。

レイテンシ

レイテンシは、ストリームレコードが処理される速度です。レイテンシはリアルタイムストリームを定義するコアパフォーマンスコンポーネントであり、レコードがストリームを処理し、目的地に到着する速度の期待は、現実世界の影響を持つことがあります。例えば、ストリームのレイテンシは、航空便の遅延や、即時対応が必要なサプライチェーンの問題に対するアラートがどれだけ早くトリガーされるかを決定します。レイテンシに影響を与える要因は多面的ですが、最も重要な検討事項のいくつかを以下に示します。

レイテンシの要因

  • データソースの速度はどれくらい速いですか?
    • Foundry は、データが生成される速度でのみデータを消費できるため、データソースがデータを迅速に生成できるようにする必要があります。
  • データがネットワーク境界を越えるのにどれくらい時間がかかりますか?
    • Foundry にデータを取り込む際、データはネットワーク境界を越える必要があり、ネットワーク構成やファイアウォール、その他の要因によってレイテンシが発生することがあります。
  • エンドツーエンドのパイプラインには何段階がありますか?
    • Foundry のストリーミングは、同じコードリポジトリや Pipeline Builder グラフに定義されたパイプライン変換を同じ物理ハードウェアに共存させることで、自動的にレイテンシを最適化します。ただし、パイプラインにさらに多くの段階が追加された場合(例えば、複数のリポジトリや Builder パイプラインが連鎖している場合)、同様の最適化を行えず、追加のレイテンシが発生します。
  • データは外部システムに送信されていますか?
    • レコードを低レイテンシでアクセスできるようにするためには、目的地のシステムがデータを低レイテンシで処理できる必要があります。Foundry は、時系列やオントロジーなどの最適化された目的地を提供していますが、データが外部システムに移動する場合、そのシステムがレイテンシ要件をサポートする必要があります。
  • データの整合性モデルは何ですか?
    • データの整合性は、エンドツーエンドのレイテンシに大きな役割を果たします。正確に一度だけの保証が必要なデータ(例えば、レコードが正確に一度だけ処理されることが保証される)は、パイプラインの原子性を確保するためにオーバーヘッドとレイテンシが発生します。ただし、パイプラインが少なくとも一度だけの保証で実行できる場合(例えば、各レコードが少なくとも一度は処理されることが保証されていますが、それ以上の回数で処理されることもあります)、システムは自動的にパイプラインを最適化して、より高速に実行できるようにします。

ストリーミングパイプラインのエンドツーエンドレイテンシ

標準的なストリーミングパイプラインは、以下のステージを 15 秒以内で実行できます。

  • 取り込み: 約 1~2 秒
  • 変換: 正確に一度だけが有効になっている場合(デフォルト)は約 5 秒、少なくとも一度だけが有効になっている場合は 1 秒
  • バックアップデータストア(オブジェクトストレージ同期または時系列同期)に同期: 正確に一度だけが有効になっている場合(デフォルト)は約 5 秒、少なくとも一度だけが有効になっている場合は 1 秒

上記のように、ストリーミングパイプラインのエンドツーエンドレイテンシに影響を与える主要な要因は以下の 3 つです。

  1. 変換の数に基づくパイプラインの複雑さ
  2. パイプラインが少なくとも一度だけのモードまたは正確に一度だけのモードで実行されているかどうかに基づく整合性モデル
  3. 変換での時間ベースのウィンドウや集約。例えば、30 秒のウィンドウで集約することを指定すると、データは暗黙的に集約のための追加の 30 秒分のレイテンシが発生します。

スループット

スループットとは、一定期間に処理できるレコードの量です。スループットは、低レイテンシパイプラインのパフォーマンスを測定する際に、レイテンシと同等の重要性を持ちます。最も重要な検討事項のいくつかを以下に示します。

  • あなたのデータソースは、どのくらいのレコードを時間ごとに生成していますか?
    • Foundry のストリーミング機能は、高いスループットレベルで提供されます。ただし、ソースストリームが非常に高速で生成される場合は、以下の方法で対処できます。
      • ストリームが使用するパーティションの数を増やして、高いボリュームに対応できるようにします。
      • 既存のストリームのストリームタイプを「HIGH THROUGHPUT」に設定します。この設定は、ソースが一度に送信するレコードの数を増やすことで、ストリームの「合計ラグ」メトリックが 0 より大きい場合に推奨されます。ただし、この設定はレイテンシとスループットのトレードオフに直接関係しています。「HIGH THROUGHPUT」を適用する前に、ストリームの「合計スループット」メトリックを確認して、ストリームに適した選択肢であることを確認してください。
  • パイプラインの処理部分はどれだけ CPU 負荷が高いですか?
    • スループットは、処理の遅れによってしばしば制限されることがあります。処理のスループットを向上させる方法は多くありますが、そのほとんどは、処理クラスタのサイズを拡大することで解決できます。
  • 目的地のシステムがどれだけ速くレコードを受信できますか?
    • ストリームの目的地システムも、レコードを生成された速度で受信できない場合に遅延を引き起こすことがあります。これにより、バックプレッシャが発生し、スループットが低下し、レイテンシが上昇します。Foundry のストリーミング製品は、非常に高いスループットに対応できるように最適化され、設計されています。ただし、ストリーミングパイプラインを独自の目的地に書き込むように設定した場合は、目的地が生成されたレコードのボリュームに対応できるようにする必要があります。

上級編

  • データパイプラインを深く理解しているユーザーにとっては、ストリームパフォーマンスの別の潜在的なボトルネックは、ネットワーク帯域幅です。最適でないネットワーク帯域幅の症状には、非ゼロのラグ、期待されるスループットよりも低いスループット、レコードがドロップされることが含まれます。これらの症状を緩和するために、ストリームにデータ圧縮を適用することができます。ただし、データ圧縮を適用する前に、以下の点に注意してください。
    • データ圧縮は、繰り返し文字列の多い高ボリュームのストリームで最も効果的です。
    • レイテンシを短縮することが主要な懸念事項である低ボリュームのストリームでは、データ圧縮を有効にすると、最適でない方法でデータを圧縮するために費やされる時間が増え、レイテンシがさらに増加します(例えば、ユニークな文字列のボリュームが少ない場合)。