Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

27
PythonでKinesis - ぱいきね! in 第20回AWS User Group Japan 東京勉強会 池内 孝啓@iktakahiro April 9th, 2014 Amazon Kinesis

Transcript of Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

Page 1: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

PythonでKinesis - ぱいきね! in

第20回AWS User Group Japan 東京勉強会

池内 孝啓@iktakahiro April 9th, 2014

AmazonKinesis

Page 2: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

Agenda

2

• 自己紹介 (1分) • Pythonとわたし(120分) • Amazon Kinesis とは (3分) • Python boto で Kinesis! (7分) • KinesisとImmutable Infrastructure (4分)

Page 3: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

自己紹介• 池内 孝啓 - Takahiro Ikeuchi • 株式会社ALBERT 執行役員 • システム開発・コンサルティング部 部長 • @iktakahiro • http://librabuch.jp • 好きなサービス: EBS(あざとい)

3

Page 4: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

Amazon Kinesis とは

Page 5: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

Amazon Kinesis とは

5

Data StoreProducer

Kinesis Stream

Kinesis App (Consumer)

Page 6: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

• 大規模なストリーミングデータをリアルタイムで処理する完全マネージド型サービス

• Kinesis Stream自体はデータ加工・計算機能を持たない

• Kinesis SDK, Client Libraryを使ってデータを取り出す

Amazon Kinesis とは

Page 7: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

session-ID � item-ID �s100 � itemA�s100 � itemB �s200 � itemA�s200 � itemB �s100 � itemC�s300 � itemA�s300 � itemC�

item-ID � session-ID �itemA� s100, s200, s300�itemB � s100, s200�itemC� s100, s300�

Key-Value Store Raw Data

itemA ��itemB = SINTER itemA itemB = len(s100, s200) = 2

itemA ��itemB = SUNION itemB itemC = len(s100, s200, s300) = 3

Use Case

Page 8: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

Python botoでKinesis!

Page 9: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

Actions - Amazon Kinesis Service API Reference http://docs.aws.amazon.com/kinesis/latest/APIReference/API_Operations.html

Amazon Kinesis API

1. CreateStream 2. DeleteStream 3. DescribeStream 4. GetRecords 5. GetShardIterator 6. ListStreams 7. MergeShards 8. PutRecord 9. SplitShard

Page 10: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

Python botohttp://boto.readthedocs.org/en/latest/ref/kinesis.html

botoを使ったKinesisの操作を見てみましょう

Page 11: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

Create & Delete Stream

Page 12: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

DescribeStream

Page 13: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

DescribeStream

Page 14: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

PutRecord

Page 15: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

PutRecord

{ 'ShardId': ‘shardId-000000000000', 'SequenceNumber':’49538386……’ }

Page 16: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

GetShardIterator

Iteratable Objectを生成

Page 17: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

GetRecord

Page 18: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

GetRecord

{ u'PartitionKey': u'one', u'Data': 'hoge', u'SequenceNumber': u'495383866...' }

Page 19: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

ちなみに…

• ShardやSequenceNumberの管理は結構辛い • Amazon Kinesis Client Library(for Java)なら! • Amazon Kinesis Connectors も!(for Java)!

Page 20: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

KinesisとImmutable Infrastructure

Page 21: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

• 変更されないサーバー / 変更される場合は新規立ち上げ

• アプリケーションの更新とインフラの構築を一対と考える(インフラの更なる抽象化)

• Blue-Green Deployment…

Immutable Infrastructure(以下I2) とは

Page 22: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

• fluentdがあるのでKinesisは必要ない?

• fluentdでもおなじようなことが出来そう?

なぜKinesis と I2 ?

•ログファイルをtailで攫う •プラグインでS3へ転送、Redshiftへ投入 •正規表現でテキスト加工もできるし • Scaleできる

Page 23: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

fluentdのスケールアウト

• スループットを上げたい場合このセットをスケールアウトする

Page 24: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

Amazon Kinesis のスケールアウト

24

Data StoreProducer

Kinesis Stream

Kinesis App(Consumer)

•スループットを上げたい場合 Shard数を増加させる

Page 25: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

25

Data StoreProducer

Kinesis Stream

Kinesis App(Consumer)

•用途毎にConsumerを作るS3蓄積用・BIツール用 etc…

Amazon Kinesis のスケールアウト

Page 26: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

参考文献

• 「Amazon Kinesisで広がるリアルタイムデータ プロセッシングとその未来」アマゾンデータサービスジャパン株式会社 大谷 晋平 / 榎並 利晃 http://www.slideshare.net/shot6/amazon-kinesis-32354587

• Kinesis - boto http://boto.readthedocs.org/en/latest/ref/kinesis.html

• Amazon Kinesis ことはじめ http://www.slideshare.net/iktakahiro/amazon-kinesis-32428443

Page 27: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

ご静聴ありがとうございました (> <);