jaws-ug kansai-special_kinesis_20150207

Post on 17-Jul-2015

942 views 2 download

Transcript of jaws-ug kansai-special_kinesis_20150207

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