Post on 17-Jul-2015
Amazon Kinesis2015.02.07
#jawsug で色々tweetしてもらえると 喜びます
金春利幸(Toshiyuki Konparu)
R3 institute Ltd.Manager, Solution Architect
JAWS-UG Osaka Core Member
Work
Community
Official kintone Evangelist
SocialFacebook: t.konparuTwitter: t_konparu
JOIN US!
R3 instituteのご紹介
2000年創業のシステムによる問題解決会社
2012年からAWSのパートナー
2014年からサイボウズ(kintone)のパートナー
業務設計 仕様検討 設計 開発 教育 運用
すべてをワンストップで提供
http://www.r3it.com/
アールスリー 検索
Amazon Kinesisリアルタイムデータストリーム処理
リアルタイムに 不規則に
発生するデータを 漏らすことなく
スマートに処理するための仕組み
リアルタイム分析の悩ましい点
• データを受け取るための適切なリソースのサイジングを行うのは難しい
• 安全にデータを保管するのは難しい
• 受けたデータを適切な速度で処理するのはサイジングが難しい
• かといって、ピーク性能に合わせるとコストがかかる
どんどんリアルタイムでやってくるデータに対して
Kinesisの基本概念
K
Kinesis AppRDS
DaynamoDB
S3
Lambda
Redshift
Endpoint
Shard
Shard
Shard
Shard
Shard
Kinesis
Shard
Shard
Partition Key Data Body
Partition Key Data Body
Partition Key Data Body
Partition Key Data Body
Partition Key Data Body
Partition Key Data Body1
2
3
4
Shardの能力 Write 1MB/sec(1000write/sec)
Read 2MB/sec(5read/sec)
50KB256bytes
ストリーム全体でユニークなSequenceNumberが振られる
Shard内のデータは24時間で削除される
どのShardにデータが入るかはPartitionKeyで決まる
Shardのサイジング
• Kinesisに利用では、Shardを何個用意するかが重要 • Shardは適切な数を用意しないとデータを受け付けてくれない • 事前にデータ量が予測できる場合は必要Shard数が計算できるnumber_of_shards = max (incoming_write_bandwidth_in_KB/1000, outgoing_read_bandwidth_in_KB/2000)
• データ量が予測できない場合は、CloudWatchを使って入力データの速度を監視してShardを動的に追加するようにする
Kinesisでのデータの流れ方
Kinesisでのデータの流れ方
#jawsug っていいよね
#jawsug すごいよね
#jawsug 大阪熱いよね
#aws もっと安くなるとうれしい
#aws Workspacesにもっとスペックを
#aws AWS太っ腹
Kinesisでのデータの流れ方
Kinesisでのデータの流れ方Amazon Kinesis
Shard
Shard
Kinesisでのデータの流れ方Amazon Kinesis
Shard
Shard
#jawsug っていいよね
#jawsug すごいよね
#jawsug 大阪熱いよね
#aws もっと安くなるとうれしい
#aws Workspacesにもっとスペックを
#aws AWS太っ腹
Kinesisでのデータの流れ方Amazon Kinesis
Shard
Shard
#jawsug っていいよね
#jawsug すごいよね
#jawsug 大阪熱いよね
#aws もっと安くなるとうれしい
#aws Workspacesにもっとスペックを
#aws AWS太っ腹
Kinesisでのデータの流れ方Amazon Kinesis
Shard
Shard
KKinesis App
Lambda
GetNextRecord
GetNextRecord
①
②
③
④⑤
⑥
Kinesisでのデータの流れ方Amazon Kinesis
Shard
Shard
#jawsug っていいよね
#jawsug すごいよね
#jawsug 大阪熱いよね
#aws もっと安くなるとうれしい
#aws Workspacesにもっとスペックを
#aws AWS太っ腹
KKinesis App
Lambda
GetNextRecord
GetNextRecord
①
②
③
④⑤
⑥
Kinesis Client Library(KCL)
• APIを直接使わなくても簡単に使える
• データを処理するWorkerの生成
• 各Shardに対してWorkerがちゃんとつくように制御
• Shard増減時のWorkerの増減
• 処理中にWorkerが死んだときの再処理制御
• AutoScaling時にWorkerとShardの割当を自動的に調整
(現在はJava版とPython版があります)
Kinesis Connector Library
• Kinesis Streamから必要なデータ変換をしてS3, DaynamoDB, EMR, Elasticsearch, Redshiftへデータを格納するライブラリ
• 変換部分の記述に集中できる
• Kinesis log4j Appenderも公開されているので、WebサイトのログをKinesisに流してEMRで分析なんてのも簡単にできます
• Amazon Kinesis Storm SpoutでApache Stormにデータを流すこともできます
IoTとKinesis
IoTが普及すればするほど無数の端末から発生するリアルタイムデータをスムーズに処理する仕組みが必要となる
IoTとKinesis
IoTが普及すればするほど無数の端末から発生するリアルタイムデータをスムーズに処理する仕組みが必要となる
AWSがないと…
FTPサーバのサイジングや スケールは難しいのでパンクする
FTPサーバ DBサーバ
Kinesisないとき
スケールはできるがデータを確実に受け付け安全に保存する仕組みを作らないといけない
ELB
EC2
Kinesisあるとき
データはKinesisが確実に受け付けて保管してくれる あとは順次処理す
ればいいだけ
K
K
K
Kinesisを使ったフルマネージドIoT
Kinesis
Kinesisを使ったフルマネージドIoT
Kinesis Lambda
Kinesisを使ったフルマネージドIoT
Kinesis Lambda DynamoDB
Kinesisを使ったフルマネージドIoT
Kinesis Lambda DynamoDB ELB
EC2
Kinesisの料金
• Shard1つあたり $0.0195/h
• 1,000,000PUTあたり $0.043
まとめ• IoTとクラウドは極めて相性がいい
• Kinesisを始めとしたAWSのフルマネージドサービスを組み合わせることでインフラの維持を気にせずにIoTインフラを構築することができる
• あとはAWSに某M◯に負けないような機械学習のサービスが来れば万全(個人的期待)
Save The Date!
3月22日 新宿でJAWS-UGの全国イベントがあります。私、実行委員長なので来てください。お願いします。
JAWS DAYS 2015 Road Trip
3月21日(土)大阪から東京まで無料のバスが出ます(行きだけ。帰りは自費で)
大阪 名古屋 東京
Thank you