AWS re:Invent2013参加レポート #25 Introducing Amazon Kinesis: The New AWS Service for Real-time Processing of Streaming Big Data

reinvent-logo

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

screenshot 2013-11-16 3.38.16

Amazon Kinesisとは何か?

re:Invent Keynote Day2で発表されたAmazon Kinesisについて、発表ではTwitterストリームがリアルタイムに処理される様子が映像で流れて、何となくスゴそうという雰囲気が伝わってきました。

screenshot 2013-11-16 3.38.29

リアルタイム処理を、フルマネージドで、時間あたりMBからTBで、柔軟に保存して収集して分析して、使うのは簡単。

screenshot 2013-11-16 3.45.37

Kinesisと連携するアプリは、予約されたスループットで、1MB/sから2MB/sで、1000トランザクション/s/ユニットで、キャパシティの追加削除を動的にできる。

たしかに、、、スゴい!。ということで、午後のセッションの参加して来ました。

Real-time Processing of Streaming Big Data

screenshot 2013-11-16 2.47.26

このセッションでは、Kinesisの紹介として、バッチ処理からリアルタイム処理への変遷について、ビックデータをどのようにリアルタイム処理するか、機能と利点、キーコンセプト、ユースケース、パターンについてお伝えします。

screenshot 2013-11-16 2.47.45

データはどんどん増えています。ログ、モバイル、センサー、ソーシャルなど、どんどん増える一方です。

screenshot 2013-11-16 2.47.55

ビックデータを扱うソリューションが既に用意されています。バッチ処理としてはRedshiftやEMRが有名です。今回、Kinesisによってリアルタイム処理を実現します。

screenshot 2013-11-16 2.48.06

これからのビックデータ処理はどのように変わるのでしょうか。CloudWatchのメトリクスで直にどこが間違ったか見つけられます。待ち時間はありません。即座に分析を行い、即座にビジネス上の決断をすることができます。高速なETLとしてRedshiftにデータを流すことができます。

screenshot 2013-11-16 2.48.25

リアルタイムビックデータになると何が新しくなるのでしょうか。ビジネスシナリオとしては、ログの収集やデータのフィード、継続的なメトリクスやKPIの取り出し、リアルタイムデータ分析、複雑なストリーム処理などが考えられます。また、ビジネスエリアとしては、ソフトウェアやテクノロジー、広告テクノロジーやマーケティング、金融サービス、Eコマースなどが考えられます。

screenshot 2013-11-16 2.48.35

顧客が求める基本的な要件は何でしょうか。エンドツーエンドでの低遅延、拡張性、耐障害性、伸縮性、開発者が作りやすい、収集・処理・分析をマネージドサービスで提供などです。

screenshot 2013-11-16 2.48.47

ということで、Amazon Kinesisが誕生したのです。

screenshot 2013-11-16 2.49.03

Kinesisへ投げられたストリームは、Shardを経由してKinesis Client Libraryを実行するアプリを通じて各自データストアに格納されます。例えば、重複の排除してS3へ、計算結果を抽出してDynamoDBへ、時系列解析をRedshiftで、機械学習をして次のKinesisへと続きます。

screenshot 2013-11-16 2.49.13

Kinesisは、どのように大量のデータを高速に投入できるのか考えてみましょう。KinesisのStreamは複数のShardを束ねています。それぞれのShardは1MB/secと1000トランザクション/secの性能です。 Shardのデータは24時間で消えてしまいます。Streamの性能は増減可能です。 Kinesisにデータを投入するためにシンプルなPUTインタフェースを持っています。 パーティションキーは、ShardにPUTするために使われます。 PUTが成功すると、ユニークなシーケンス番号が返されます。

screenshot 2013-11-16 2.49.26

Kinesisからデータを取得する方法を見てみましょう。Kinesis内にあるShardからストリームを取得するためには、kinesis Client Libraryを用います。このライブラリは、フォールトトレラント、単一実行、リアルタイム処理のために用います。それぞれのShardに対してKinesis Workerが起動して処理を実行します。処理が失敗した場合には再起動しますし、Shardの数が増減した場合にも自動で対応します。

screenshot 2013-11-16 2.49.38

そもそも、Kinesisはデベロッパーに何ももたらしてくれるのか考えてみましょう。管理が簡単、リアルタイムのパフォーマンス、高いスループット、伸縮性、各種データストアとの連携、リアルタイムアプリケーションの開発、低コストなどです。まぁ、とくかく使ってみましょう。リアルタイムな処理と言われてもピンと来ないかもしれませんが、今まで出来なかったから考えもしなかったのです。Kinesisで出来ることのイメージが湧くようになれば、様々なビジネスに活用できると思います。

screenshot 2013-11-16 2.50.15

まとめ

Amazon Kinesisは高速に分散処理を行うプラットフォームであることが分かりました。次回は具体的なアプリケーション開発について解説をしたいと思います。

参考資料

Amazon Kinesis