Kafka イベントソースのための低レイテンシー処理 - AWS Lambda

Kafka イベントソースのための低レイテンシー処理

AWS Lambda は、100 ミリ秒未満の一貫したエンドツーエンドレイテンシーを必要とするアプリケーションの低レイテンシーイベント処理をネイティブにサポートします。このページでは、低レイテンシーワークフローを有効にするための設定詳細と推奨事項を説明します。

低レイテンシー処理の有効化

Kafka イベントソースマッピングで低レイテンシー処理を有効にするには、次の基本的な設定が必要です。

  • プロビジョニングモードを有効にする。詳細については、「プロビジョンドモードの設定」を参照してください。

  • イベントソースマッピングの MaximumBatchingWindowInSeconds パラメータを 0 に設定する。詳細については、「バッチ処理動作」を参照してください。

低レイテンシー Kafka ESM の微調整

Kafka イベントソースマッピングを低レイテンシー向けに最適化するには、次の推奨事項を検討してください。

プロビジョンドモード設定

Kafka イベントソースマッピングのプロビジョンドモードでは、Lambda でイベントソースマッピングのスループットを微調整することができます。これは、イベントポーラーと呼ばれるリソースの最小数と最大数を設定することによって行います。イベントポーラー (またはポーラー) は、プロビジョンドモードでイベントソースマッピングを支えるコンピューティングリソースを表し、最大 5 MB/秒のスループットを割り当てます。各イベントポーラーは、最大 5 個の同時 Lambda 呼び出しをサポートします。

アプリケーションに最適なポーラー設定を判断するには、ピーク取り込みレートと処理要件を考慮してください。単純化した例を見てみましょう。

バッチサイズが 20 レコード、ターゲット関数の平均実行時間が 50 ミリ秒の場合、各ポーラーは 5 MB/秒の制限付きで 1 秒あたり 2,000 レコードを処理できます。これは、(20 レコード × 1000 ミリ秒/50 ミリ秒) × 5 個の同時 Lambda 呼び出しとして計算されます。したがって、希望するピーク取り込みレートが 1 秒あたり 20,000 レコードの場合は、少なくとも 10 個のイベントポーラーが必要になります。

注記

常に最大キャパシティで稼働することを避けるため、追加のイベントポーラーをバッファとしてプロビジョニングすることをお勧めします。

プロビジョンドモードは、イベントポーラーに設定された最小数と最大数の範囲内で、トラフィックパターンに基づいたイベントポーラーのスケーリングを自動的に行いますが、これによって再調整がトリガーされるため、レイテンシーが増加する可能性があります。自動スケーリングは、イベントポーラーの最小数と最大数に同じ値を設定することで無効化できます。

その他の考慮事項

その他の考慮事項には以下が含まれます。

  • Lambda ターゲット関数の呼び出しからのコールドスタートによって、エンドツーエンドレイテンシーが増加する可能性があります。このリスクを軽減するには、イベントソースマッピングのターゲット関数で、プロビジョニングされた同時実行または SnapStart を有効化することを検討してください。さらに、関数のメモリ割り当てを最適化して、一貫性のある最適な実行を確実にします。

  • MaximumBatchingWindowInSeconds が 0 に設定されている場合、Lambda は、バッチサイズが上限まで満たされるのを待たずに、処理可能なレコードを即座に処理します。例えば、バッチサイズが 1,000 レコードに設定されていて、処理可能なレコードが 100 レコードしかないという場合、Lambda は 1,000 レコードのすべてが収集されるのを待たずに、これらの 100 レコードを即座に処理します。

重要

低レイテンシー処理に最適な設定は、ユーザー固有のワークロードに応じて大きく異なります。ユースケースに最適な設定を判断するためにも、実際のワークロードで異なる設定をテストすることが強く推奨されます。