kinesisお勉強メモ
なぜやるか
今お仕事で構築中のシステムでKinesissをたくさん使うようなので、
どんなものなのか ちょっと詳しく知っておきたかった。
どうやってやったか
いい感じの公式CFnテンプレートがあったので
デプロイ & 中身を見てみた。
このテンプレートでは Cloud Trailで収集したアクティビティを
いい感じにグラフ化したダッシュボードシステムがデプロイされる。
Kinesis Data Firehose, Analytics, Streams の3種類とも使っているので
勉強になりそうだと思った。
メモ
Kinesisとは
ざっくり言うと、大量のデータをバッファリングしておいて、
必要に応じ加工・分析も行えるサービス。
データを溜めておく、と言うことからよくSQSと比較されているけど、
そもそも SQSは Kinesisほど大量のデータを扱う想定をしていないのと
KinesisはSQSと違って内部データの削除は行わないので
(あらかじめ設定したTTLの間 保持し続ける)、
同時に複数のアプリケーションからデータを利用したりすることができるみたい。
(SQS触ったことないので今度)
Kinesis Data xxx 3種類の特徴
Kinesis Data Streams
- Kinesis Data Streams自身はデータのSource, Destinationや加工方法の指定ができない
- データをバッファリングしておく場所の提供
- データをPutする & 内部のデータを利用する ためには自分でコードなり他のマネージドサービスを用意する必要がある
- 利用規模に応じてシャード数を指定する必要がある
- リアルタイム処理に向いてる(データロード間隔 1秒以下〜)
Kinesis Data Firehose
- データのSource, Destinationや加工用Lambda関数の指定がコンソール上でできる
- Source: Kinesis Data Streams, Cloudwatch Logs, Cloudwatch Event, AWS IoT から選択
- APIも叩けるので自分でコード書いてputしてもOK
- Destination: S3, Redshift, Amazon ES, splunk から選択
- Source: Kinesis Data Streams, Cloudwatch Logs, Cloudwatch Event, AWS IoT から選択
- シャード数など指定せずともよしなにマネージドでやってくれる
- Streamsより簡単に利用できるが、柔軟性やリアルタイム性に欠ける(データロード間隔 60秒〜)
Kinesis Data Analytics
- 上2つとは異なり、データ置き場としてではなくデータの加工処理がメイン
- Sourceのストリームから流れてくるデータに対してあらかじめ設定したSQLを実行し、結果をDestinationに送信
テンプレートで作成されるKinesisリソースのデータフロー
- 4つデプロイされている
データの流れがぱっと見わからなくて(絵にないのもあるし)手こずった。。
RealTimeInsightsAccountActivityCloudTrailInput
- Kinesis Data Firehose
- source: ここでは指定してないけど、Cloud Watch Eventのルールで設定(ドキュメント)
- データ加工: なし
- destination:
- S3バケット
(CFnテンプレ名)-firehoses3bucket-hogehoge
- S3バケット
↓
- RealTimeInsightsAccountActivityApp
- Kinesis Data Analytics
- source: Kinesis Firehose
RealTimeInsightsAccountActivityCloudTrailInput
- データ加工: SQL文を指定(CFnのテンプレート参照)
- destination:
- Stream
RealTimeInsightsAccountActivityDataSteam
- Stream
↓
RealTimeInsightsAccountActivityDataSteam
- Kinesis Data Stream
- source: ここでは指定してないけど ↑ のAnalyticsからPutされてる
- データ加工: なし
- destination:
- (1)ここでは指定なしだけど ↓ のFirehoseが引っ張ってる
- (2) 同じくここでは指定していないけど, Lambda関数
real-time-insights-account-activity-update-ddb
のトリガーになっている(ここから図の通り Dynamoに流してる模様) ↓
RealTimeInsightsAccountActivityAnalyticsOutput
- Kinesis Data Firehose
- source: Stream
RealTimeInsightsAccountActivityDataSteam
- データ加工: 指定なし
- destination: S3
(CFnテンプレ名)-outputfirehoses3bucket-fugafuga