Kinesisシリーズまとめ

AWS

DataStreams

Amazon Kinesis Data Streams(リアルタイム分析向け大規模データを収集)| AWS
Amazon Kinesis Data Streams は、フルマネージドのサーバーレスデータストリーミングサービスであり、さまざまなストリーミングデータをあらゆる規模でリアルタイムに保存および取り込みます。

概要

サーバレスで、大量のデータをリアルテイムで収集、次のサービスへ繋ぐサービス。

アーキテクチャ

・データ発生源:プロデューサ 連携先:コンシューマ
 コンシューマはAmazon Kinesis Data Streams アプリケーションと呼ばれる。
・シャードというレコード単位で保持。
 ユニークなシーケンス番号が付与されコンシューマ側はシャード単位で順序が保証される。
・最大サイズ:1MB 送信側は秒間1MB or 1000putレコード。処理側は秒間2MB or 5回の読み取り
・データ保持期間:デフォルトで24時間、最長7日間。
 いつでも変更可能。短縮した場合、期間対象外のデータはアクセス不可になる。
・データアクセス:Rest APIのエンドポイントがサービスごと、アカウントごとに用意されている。
 パブリック向けのエンドポイントと、プライベート向けのエンドポイントがある。

拡張ファンアウト

コンシューマごとにスループットを専用できる機能。
1つのシャードから複数のコンシューマへも可能。

KPL と PutRecords APIの使い分け

特徴 / ツールKinesis Producer Library (KPL)PutRecords API
データのバッチ処理自動的にデータを集約し、効率的にストリームに書き込む。手動でバッチを作成し、最大500件のレコードを一度に送信する。
順序性の保証同一パーティションキーを持つレコードが同じ順序でストリームに書き込まれることを保証。レコードの送信順序は保証されない。
リトライメカニズムネットワーク障害や一時的なエラーに対する再試行メカニズムを提供。AWS SDKを使用する場合、一部の再試行機能が提供されるが、自動的なリトライメカニズムはない。
プログラミング言語Javaに基づくライブラリ。RESTful APIであるため、任意のプログラミング言語から利用可能。
使用シーン大量のデータを高速で送信し、順序性を保持する必要がある場合。データ量が多く、順序性がそれほど重要でなく、Java以外のプログラミング言語を使用する場合。

Firehose

概要

特定のコンシューマ向けにストリームデータを配信するサービス

アーキテクチャ

・連携先:S3、Redshift、OpenSerchService
・細かい管理が不要。AWSが自動でパフォーマンス調整。
・コンシューマ専用のシャードを作る必要あり。コンシューマ側で作り込みは不可。
・順序保証は無し。リアルタイム性は低い。

DatastreamsとFirehoseの違い

こちらの記事にあります。

Amazon Kinesis StreamsとAmazon Kinesis Firehoseは何が違うのか | DevelopersIO
こんにちは、せーのです。 先日のRe:InventでKinesisの体系が変わりまして、「Kinesis Family」「Kinesis三兄弟」なんて言われるようになりました。 今まではKinesisの一機能として「Ki …

Streamsはデータの受け取り、カスタムなデータ処理が目的。
シャードという単位に分割され高速なデータ処理が可能。
Firehouseは単純な転送サービスであり、細かい設定や管理は不要。
バッファリング、圧縮などうした上での配信なので、Streamよりは遅延がある。

タイトルとURLをコピーしました