Amazon Kinesis
大量のストリーミングデータをリアルタイムに収集・処理・分析できるフルマネージドのデータストリーミングサービス群
概要
Amazon Kinesis は、リアルタイムのストリーミングデータを大規模に処理するためのサービス群です。Kinesis Data Streams がコアサービスで、毎秒数百万件のレコードを低レイテンシで取り込み、複数のコンシューマーが並行して処理できます。Kinesis Data Firehose は取り込んだデータを S3、Redshift、OpenSearch などに自動配信する ETL パイプラインを構築でき、コーディング不要で運用できます。IoT デバイスのテレメトリ、Web アプリケーションのクリックストリーム、金融取引のリアルタイム分析など、バッチ処理では間に合わないユースケースで採用されています。
Data Streams と Data Firehose の判断基準
Kinesis Data Streams はシャード単位でスループットを制御するプリミティブなストリーミング基盤で、1 シャードあたり書き込み 1 MB/秒・読み取り 2 MB/秒の容量を持ちます。コンシューマー側のロジックを自由に実装でき、Lambda や独自アプリケーションでリアルタイム処理を行う場合に適しています。一方、Data Firehose はデータの変換 (Lambda による加工) と配信先への書き込みを自動化するマネージドサービスで、シャード管理が不要です。判断基準は明確で、リアルタイム処理のレイテンシが 200 ミリ秒以下で求められる場合は Data Streams、数十秒から数分の遅延が許容でき配信先への書き込みだけが目的なら Firehose を選択します。
シャード設計とデータ保持の考え方
Data Streams の設計で最も重要なのがシャード数の見積もりです。オンデマンドモードではトラフィックに応じて自動スケールしますが、ピーク時のスループットに対して課金されるため、安定したワークロードではプロビジョンドモードの方が 50% 以上安くなるケースがあります。データ保持期間は最大 365 日まで延長でき、Azure Event Hubs の Standard 層 (最大 7 日) と比べて長期保持が必要なユースケースで有利です。Enhanced Fan-Out を有効にすると各コンシューマーが専用の 2 MB/秒の読み取りスループットを持てますが、コンシューマーあたりの追加料金が発生するため、コンシューマー数が 3 以上の場合に費用対効果を検討すべきです。データ分析の関連書籍 (Amazon) でストリーミング処理の設計パターンを学べます。
リアルタイムダッシュボードの構築例
Kinesis の代表的な活用パターンは、リアルタイムダッシュボードの構築です。Web アプリケーションのアクセスログを Kinesis Data Streams に送信し、Lambda でリアルタイム集計して DynamoDB に書き込み、API Gateway 経由でフロントエンドに配信する構成が典型的です。IoT デバイスのテレメトリ収集では、数万台のデバイスから毎秒送信されるセンサーデータを Data Streams で受け取り、Firehose で S3 に蓄積しつつ、Lambda で異常値をリアルタイム検知して SNS で通知する二段構えのアーキテクチャが有効です。金融取引のリアルタイム分析では、パーティションキーの設計が重要で、取引 ID をキーにすると特定のシャードにホットスポットが発生するため、ランダムサフィックスを付与して負荷を分散させる工夫が必要です。