AWS関連

【AWS】Kinesis ってめちゃくちゃ種類あるけど、何モノ?

はじめに

AWS の学習を進めるなかで、Kinesis の知識が無さすぎて困ったので、ここで改めて調べてみることにした。

とは言え(今のところ利用するシーンが見当たらないので)
正直困ることは無いのですが、、w
知らな過ぎて使い所がわかってないだけでは?というのもありますので軽く整理していきましょう!

少しずつ理解を深めていき、
活用シーンを探していきたいものです。

とりあえず今回は、
Kinesis ってナニするものなのか、どんな種類があるのか、あたりについて整理していこうと思います。

Kinesis 4種類

まずは種類。

Kinesis って色々な種類があって混乱しますよね。

種類があると言っても 4種類だけなので、たいしたことはありませんよ。(と昨日の自分に言ってあげたい)

  • Amazon Kinesis Video Streams
  • Amazon Kinesis Data Streams
  • Amazon Kinesis Data Firehose
  • Amazon Kinesis Data Analytics

「ストリーミングデータを取り扱う」という共通点があるものの、

それぞれ特徴があるので簡単に(本当に簡単に)触れていきます。

※以下の画像出典はこちら→「Amazon Kinesis の概要 (公式)」

● Video Streams

動画ストリーミングを行う。

● Data Streams

データストリーミングを行う。

● Data Firehose

ストリーミングデータのロードを行う。

● Data Analytics

標準SQL によるデータ分析を行う。

ついでに用語整理

Kinesis の種類と、それぞれの役割がなーんとなく分かったところで、
Kinesis の説明に出てくるコトバについて学んでいきましょう。


出典:「Kinesis Data Streams のアーキテクチャの概要 (公式)」

Kinesis Data Stream

Kinesis data stream は、シャードのセットです。各シャードにはデータレコードのシーケンスがあります。各データレコードには、Kinesis Data Streams によってシーケンス番号が割り当てられます。

データレコード

データレコードは、Kinesis data stream に保存されたデータの単位です。データレコードは、シーケンス番号、パーティションキー、データ BLOB (イミュータブルなバイトシーケンス) で構成されます。Kinesis Data Streams で BLOB 内のデータが検査、解釈、変更されることは一切ありません。データ BLOB は 最大 1 MB にすることができます。

プロデューサー(データ送信側)

プロデューサーは、データレコードを Amazon Kinesis データストリームに送信します。たとえば、Kinesis data stream にログデータを送信するウェブサーバーはプロデューサーです。コンシューマーは、ストリームのデータレコードを処理します。

コンシューマー(データ処理側)

コンシューマーは、Amazon Kinesis Data Streams からレコードを取得して処理します。これらのコンシューマーは Amazon Kinesis Data Streams Application と呼ばれます。
Amazon S3、Amazon Redshift、Amazon ES、Splunk などのサービスに直接ストリームレコードを送信する場合は、コンシューマーアプリケーションを作成する代わりに Kinesis Data Firehose 配信ストリームを使用できます。

シャード

シャードは、ストリーム内の一意に識別されたデータレコードのシーケンスです。ストリームは複数のシャードで構成され、各シャードが容量の 1 単位になります。
ストリームのデータ容量は、ストリームに指定したシャードの数によって決まります。ストリームの総容量はシャードの容量の合計です。
データ転送速度が増加した場合、ストリームに割り当てられたシャード数を増やしたり、減らしたりできます。

パーティションキー

パーティションキーは、ストリーム内のデータをシャード別にグループ化します。Kinesis Data Streams は、ストリームに属するデータレコードを複数のシャードに分離します。この際、各データレコードに関連付けられたパーティションキーを使用して、配分先のシャードを決定します。
アプリケーションは、ストリームにデータを配置するときに、パーティションキーを指定する必要があります。

シーケンス番号

各データレコードには、シャード内のパーティションキーごとに一意のシーケンス番号が割り当てられます。

まとめ

今回は、4種類のKinesis を把握(認知)することができました。

取り扱うデータの違い(Video/Data)や、
アーキテクチャにおける役割の違い(ストリーミング(Streams)/ロード(Firehose)/分析(Analytics) )を理解しておけば整理することも難しくはないでしょう。

また、肝心な「使い所」に関しては今のところ「まだピンときていない」というのが正直なところです。

プロデューサーから送信されるデータの例として、
IT インフラストラクチャのログデータ、アプリケーションのログ、ソーシャルメディア、マーケットデータフィード、ウェブのクリックストリームデータなどが該当することは理解しましたし、
データの取り込みと処理をリアルタイムで実施できるKinesis がスバラシイことも理解しました。

しかし、
ストリーミングしてリアルタイムに処理・分析を行った結果を「どのように活かすか(アウトプットしていくか)」の部分が自分の中でクリアになっていないですね。

Kinesis 利用も無料ではないので、費用対効果を満たすようなアウトプット(価値提供) を含めたアーキテクチャ設計が出来るようになりたいですね〜。

(今回はKinesis について調べただけなので、次のステップは実際に触ってみることかもしれないですね)

最後まで読んでいただきありがとうございます。