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 から選択
  • シャード数など指定せずともよしなにマネージドでやってくれる
  • Streamsより簡単に利用できるが、柔軟性やリアルタイム性に欠ける(データロード間隔 60秒〜)

Kinesis Data Analytics

  • 上2つとは異なり、データ置き場としてではなくデータの加工処理がメイン
  • Sourceのストリームから流れてくるデータに対してあらかじめ設定したSQLを実行し、結果をDestinationに送信

テンプレートで作成されるKinesisリソースのデータフロー

  • 4つデプロイされている
  • データの流れがぱっと見わからなくて(絵にないのもあるし)手こずった。。

  • RealTimeInsightsAccountActivityCloudTrailInput

  • RealTimeInsightsAccountActivityApp
    • Kinesis Data Analytics
    • source: Kinesis Firehose RealTimeInsightsAccountActivityCloudTrailInput
    • データ加工: SQL文を指定(CFnのテンプレート参照)
    • destination:
      • Stream RealTimeInsightsAccountActivityDataSteam

  • 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