34
Amazon Kinesis 2015.02.07

jaws-ug kansai-special_kinesis_20150207

Embed Size (px)

Citation preview

Page 1: jaws-ug kansai-special_kinesis_20150207

Amazon Kinesis2015.02.07

Page 2: jaws-ug kansai-special_kinesis_20150207

#jawsug で色々tweetしてもらえると 喜びます

Page 3: jaws-ug kansai-special_kinesis_20150207

金春利幸(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!

Page 4: jaws-ug kansai-special_kinesis_20150207

R3 instituteのご紹介

2000年創業のシステムによる問題解決会社

2012年からAWSのパートナー

2014年からサイボウズ(kintone)のパートナー

業務設計 仕様検討 設計 開発 教育 運用

すべてをワンストップで提供

http://www.r3it.com/

アールスリー 検索

Page 5: jaws-ug kansai-special_kinesis_20150207

Amazon Kinesisリアルタイムデータストリーム処理

Page 6: jaws-ug kansai-special_kinesis_20150207

リアルタイムに 不規則に

発生するデータを 漏らすことなく

スマートに処理するための仕組み

Page 7: jaws-ug kansai-special_kinesis_20150207

リアルタイム分析の悩ましい点

• データを受け取るための適切なリソースのサイジングを行うのは難しい

• 安全にデータを保管するのは難しい

• 受けたデータを適切な速度で処理するのはサイジングが難しい

• かといって、ピーク性能に合わせるとコストがかかる

どんどんリアルタイムでやってくるデータに対して

Page 8: jaws-ug kansai-special_kinesis_20150207

Kinesisの基本概念

K

Kinesis AppRDS

DaynamoDB

S3

Lambda

Redshift

Endpoint

Shard

Shard

Shard

Shard

Shard

Kinesis

Page 9: jaws-ug kansai-special_kinesis_20150207

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で決まる

Page 10: jaws-ug kansai-special_kinesis_20150207

Shardのサイジング

• Kinesisに利用では、Shardを何個用意するかが重要 • Shardは適切な数を用意しないとデータを受け付けてくれない • 事前にデータ量が予測できる場合は必要Shard数が計算できるnumber_of_shards = max (incoming_write_bandwidth_in_KB/1000, outgoing_read_bandwidth_in_KB/2000)

• データ量が予測できない場合は、CloudWatchを使って入力データの速度を監視してShardを動的に追加するようにする

Page 11: jaws-ug kansai-special_kinesis_20150207

Kinesisでのデータの流れ方

Page 12: jaws-ug kansai-special_kinesis_20150207

Kinesisでのデータの流れ方

#jawsug っていいよね

#jawsug すごいよね

#jawsug 大阪熱いよね

#aws もっと安くなるとうれしい

#aws Workspacesにもっとスペックを

#aws AWS太っ腹

Page 13: jaws-ug kansai-special_kinesis_20150207

Kinesisでのデータの流れ方

Page 14: jaws-ug kansai-special_kinesis_20150207

Kinesisでのデータの流れ方Amazon Kinesis

Shard

Shard

Page 15: jaws-ug kansai-special_kinesis_20150207

Kinesisでのデータの流れ方Amazon Kinesis

Shard

Shard

#jawsug っていいよね

#jawsug すごいよね

#jawsug 大阪熱いよね

#aws もっと安くなるとうれしい

#aws Workspacesにもっとスペックを

#aws AWS太っ腹

Page 16: jaws-ug kansai-special_kinesis_20150207

Kinesisでのデータの流れ方Amazon Kinesis

Shard

Shard

#jawsug っていいよね

#jawsug すごいよね

#jawsug 大阪熱いよね

#aws もっと安くなるとうれしい

#aws Workspacesにもっとスペックを

#aws AWS太っ腹

Page 17: jaws-ug kansai-special_kinesis_20150207

Kinesisでのデータの流れ方Amazon Kinesis

Shard

Shard

KKinesis App

Lambda

GetNextRecord

GetNextRecord

④⑤

Page 18: jaws-ug kansai-special_kinesis_20150207

Kinesisでのデータの流れ方Amazon Kinesis

Shard

Shard

#jawsug っていいよね

#jawsug すごいよね

#jawsug 大阪熱いよね

#aws もっと安くなるとうれしい

#aws Workspacesにもっとスペックを

#aws AWS太っ腹

KKinesis App

Lambda

GetNextRecord

GetNextRecord

④⑤

Page 19: jaws-ug kansai-special_kinesis_20150207

Kinesis Client Library(KCL)

• APIを直接使わなくても簡単に使える

• データを処理するWorkerの生成

• 各Shardに対してWorkerがちゃんとつくように制御

• Shard増減時のWorkerの増減

• 処理中にWorkerが死んだときの再処理制御

• AutoScaling時にWorkerとShardの割当を自動的に調整

(現在はJava版とPython版があります)

Page 20: jaws-ug kansai-special_kinesis_20150207

Kinesis Connector Library

• Kinesis Streamから必要なデータ変換をしてS3, DaynamoDB, EMR, Elasticsearch, Redshiftへデータを格納するライブラリ

• 変換部分の記述に集中できる

• Kinesis log4j Appenderも公開されているので、WebサイトのログをKinesisに流してEMRで分析なんてのも簡単にできます

• Amazon Kinesis Storm SpoutでApache Stormにデータを流すこともできます

Page 21: jaws-ug kansai-special_kinesis_20150207

IoTとKinesis

IoTが普及すればするほど無数の端末から発生するリアルタイムデータをスムーズに処理する仕組みが必要となる

Page 22: jaws-ug kansai-special_kinesis_20150207

IoTとKinesis

IoTが普及すればするほど無数の端末から発生するリアルタイムデータをスムーズに処理する仕組みが必要となる

Page 23: jaws-ug kansai-special_kinesis_20150207

AWSがないと…

FTPサーバのサイジングや スケールは難しいのでパンクする

FTPサーバ DBサーバ

Page 24: jaws-ug kansai-special_kinesis_20150207

Kinesisないとき

スケールはできるがデータを確実に受け付け安全に保存する仕組みを作らないといけない

ELB

EC2

Page 25: jaws-ug kansai-special_kinesis_20150207

Kinesisあるとき

データはKinesisが確実に受け付けて保管してくれる あとは順次処理す

ればいいだけ

K

K

K

Page 26: jaws-ug kansai-special_kinesis_20150207

Kinesisを使ったフルマネージドIoT

Kinesis

Page 27: jaws-ug kansai-special_kinesis_20150207

Kinesisを使ったフルマネージドIoT

Kinesis Lambda

Page 28: jaws-ug kansai-special_kinesis_20150207

Kinesisを使ったフルマネージドIoT

Kinesis Lambda DynamoDB

Page 29: jaws-ug kansai-special_kinesis_20150207

Kinesisを使ったフルマネージドIoT

Kinesis Lambda DynamoDB ELB

EC2

Page 30: jaws-ug kansai-special_kinesis_20150207

Kinesisの料金

• Shard1つあたり $0.0195/h

• 1,000,000PUTあたり $0.043

Page 31: jaws-ug kansai-special_kinesis_20150207

まとめ• IoTとクラウドは極めて相性がいい

• Kinesisを始めとしたAWSのフルマネージドサービスを組み合わせることでインフラの維持を気にせずにIoTインフラを構築することができる

• あとはAWSに某M◯に負けないような機械学習のサービスが来れば万全(個人的期待)

Page 32: jaws-ug kansai-special_kinesis_20150207

Save The Date!

3月22日 新宿でJAWS-UGの全国イベントがあります。私、実行委員長なので来てください。お願いします。

Page 33: jaws-ug kansai-special_kinesis_20150207

JAWS DAYS 2015 Road Trip

3月21日(土)大阪から東京まで無料のバスが出ます(行きだけ。帰りは自費で)

大阪 名古屋 東京

Page 34: jaws-ug kansai-special_kinesis_20150207

Thank you