

# Kafka イベントソースのための低レイテンシー処理
<a name="with-kafka-low-latency"></a>

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

## 低レイテンシー処理の有効化
<a name="enable-low-latency"></a>

Kafka イベントソースマッピングで低レイテンシー処理を有効にするには、次の基本的な設定が必要です。
+ プロビジョニングモードを有効にする。詳細については、「[プロビジョニングモード](kafka-scaling-modes.md#kafka-provisioned-mode)」を参照してください。
+ イベントソースマッピングの `MaximumBatchingWindowInSeconds` パラメータを 0 に設定する。詳細については、「[バッチ処理動作](invocation-eventsourcemapping.md#invocation-eventsourcemapping-batching)」を参照してください。

## 低レイテンシー Kafka ESM の微調整
<a name="recommendations-low-latency"></a>

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

### プロビジョンドモード設定
<a name="recommendations-pollers"></a>

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

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

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

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

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

### その他の考慮事項
<a name="additional-considerations-low-latency"></a>

その他の考慮事項には以下が含まれます。
+ Lambda ターゲット関数の呼び出しからのコールドスタートによって、エンドツーエンドレイテンシーが増加する可能性があります。このリスクを軽減するには、イベントソースマッピングのターゲット関数で、[プロビジョニングされた同時実行](provisioned-concurrency.md)または [SnapStart](snapstart.md) を有効化することを検討してください。さらに、関数のメモリ割り当てを最適化して、一貫性のある最適な実行を確実にします。
+ `MaximumBatchingWindowInSeconds` が 0 に設定されている場合、Lambda は、バッチサイズが上限まで満たされるのを待たずに、処理可能なレコードを即座に処理します。例えば、バッチサイズが 1,000 レコードに設定されていて、処理可能なレコードが 100 レコードしかないという場合、Lambda は 1,000 レコードのすべてが収集されるのを待たずに、これらの 100 レコードを即座に処理します。

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