AWS再入門 Amazon Kinesis編

2015.12.16

はじめに

AWSチームのすずきです。

当エントリはDevelopers.IOで弊社AWSチームによる2015年アドベントカレンダー 『AWS サービス別 再入門アドベントカレンダー 2015』の16日目のエントリです。 昨日15日目のエントリは、千葉による『Amazon DynamoDB』でした。

このアドベントカレンダーの企画は、普段AWSサービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。 本日16日目のテーマは『Amazon Kinesis』です。

Amazon Kinesisとは

大量に連続して発生するストリーミングデータをAWS上に格納するための受け口となる、フルマネージドサービスです。 高い信頼性、耐久性と、コストパフォーマンスに優れたバッファとして利用する事ができます。

特徴

Amazon Kinesis Streams

  • 2013年にリリースされたAmazon Kinesis、Amazon Kinesis Streamsとサービス呼称が変更されました。
  • Kinesis Steamは、最大サイズ1MB迄のレコードを登録でき、ほぼリアルタイム(数秒以内)に参照可能となります。
  • 登録されたレコードには一意となる連番が付与され、EC2、EMR、Lamnda等、複数のアプリケーションから参照する事が可能です。
  • レコードは3重冗長化され、高い信頼性が確保された状態で24時間保持されます。(拡張データ保持オプション設定により、保管期間は最大7日迄延長可能です)
  • シャードの増減により性能調整が可能です。(1シャード性能、1秒あたり1000PUT、または1MB/秒)

Amazon Kinesis Firehose

  • 登録可能なデータの仕様はKinesis Streamsと共通です。
  • 登録されたデータは、S3、Redshiftに自動的にエクスポートされます。
  • Kinesis Streamsで必要だったシャードによる性能管理は不要です。投入データ量に応じた従量課金での利用可能です。
  • 2015年12月現在、バージニア、オレゴン、アイルランドの各リージョンで利用可能です。
  • 1秒あたり2500回のPUTが可能、サポート経由で上限緩和が可能です。

Amazon Kinesis Analytics

  • Amazon Kinesisに登録されたストリームデータのタイムウィンドウ処理、直近の一定時間を対象とした集計などがSQLにより可能となります。
  • 2015年12月現在、サインアップ受付中となっています。

コスト

Amazon Kinesis Firehose > 料金表ページ」 にて紹介されている料金例を元に、Kinesis Streamsの費用も試算してみました。

料金の例 1 ストリーミングデータレコード (1 件のレコードサイズは 3 KB) を 1 秒あたり 1,000 件、米国東部にある Amazon Kinesis Firehose に送信して Amazon S3 > > にロードする場合、月額料金は次のように計算されます。

Amazon Kinesis Streams

月額料金

  • 月額料金 = 79.5 USD
  • Kinesis Streamからデータを取り出すアプリケーションの実行環境、EC2、Lambda、EMRなどの費用は別途発生します。

内訳

  • 1秒あたり3MB(3KB×1000件)のデータ受け取りのため、シャードは4つ用意するものとします。
  • 1シャード1時間あたりの時間課金として0.015 USD、1,000,000 PUT毎の課金として、0.014 USDが発生します。
  • 時間課金 = (4 シャード * 24時間 * 30日 * 0.015 USD) = 43.2 USD
  • PUT課金 = (30 日/月 * 86,400 秒/日 × 1,000 レコード / 1,000,000 PUT * 0.014 = 36.3 USD
  • 月額料金 = 43.2 USD + 36.3 USD = 79.5 USD

Amazon Kinesis Firehose

月額料金

  • 月額料金 = 432.59 USD

内訳

  • 米国東部での料金は、取り込まれた GB データあたり 0.035 USD になります。
  • 3 KB のレコードサイズを直近の 5 KB の倍数に切り上げると、5 KB になります。
  • 取り込まれたデータ (GB/秒) = (1,000 レコード/秒 * 5 KB/レコード) / 1,048,576 KB/GB = 0.004768 GB/秒
  • 取り込まれたデータ (GB/月) = (30 日/月 * 86,400 秒/日 * 0.004768 GB/秒 = 12,359.62 GB/月
  • 月額料金 = 12,359.62 GB * 0.035 USD/GB = 432.59 USD

参考(Amazon DynamoDB)

  • 用途は異なりますが、DynamoDBをKinesisの代わりにストリームデータの受信と24時間のデータ保管に利用したと仮定して、試算を行いました。
  • 米国東部、月間411GB(1日分データ保持)、アイテムサイズ3KB、1 秒あたりの書き込みアイテム数2000(書込1000、削除1000) として、AWS SIMPLE MONTHLY CALCULATORを利用しました。

cm-advent-calendar-2015-aws-re-entering-kinesis-01

ユースケース

Kinesis Streams + Lambda, EC2, EMR

  • Kinesisで受信したデータ、S3、DynamoDBに格納する軽量な処理はLambdaが最適です。
  • リアルタイム性能の(数秒)確保要件がある場合や、複雑なアプリケーションの実行環境としてはEC2が利用可能です。
  • データ規模、処理内容によってはEMRの利用も検討します。

cm-advent-calendar-2015-aws-re-entering-kinesis-02

Kinesis Firehose

  • S3, Redshiftへのデータアーカイブ用途には、Firehoseの利用がお勧めです。
  • S3をトリガとしたLambda連携による、準リアルタイム(数分)処理は実現できる可能性があります。

cm-advent-calendar-2015-aws-re-entering-kinesis-03

AWSサービス連携

  • AWS IoTや、CloudWatch LogsのデータをKinesisで受け取る事が可能です。
  • Kinesis、Lambdaがサービス連携のハブとして機能します。
  • Kinesis Analyticsがリリースされると、ログ監視など高度なアラームが設置可能になる筈です。

cm-advent-calendar-2015-aws-re-entering-kinesis-04

あわせて読みたい

公式情報

Developers.IO関連エントリ

さいごに

Amazon Kinesis、AWSが従量課金を実現するために、サービスの利用実績を漏れなく確実に収集するために開発された、クラウドサービスの屋台骨を裏から支えているシステムの1つです。

AWSの実力を体感できるAmazon Kinesisシリーズ、エコシステムの充実によって格段に使いやすいサービスに進化しています。クラウドネイティブなデータ収集基盤として是非ご活用ください。

明日(12/17)は、藤本 真司のAmazon Elasticsearch Service編です。お楽しみに!