Amazon Kinesisに触ってみた感想

公式ドキュメントにあるサンプルソースコードを参照に、データのput/getを試してみた。
(IRecordProcessorは軽く見ただけ)
以下、感じたことを箇条書き。

 

富豪的ネットワーク転送

(個人的に富豪的なのは嫌いじゃないんだけど…)
データは基本的にbyte[]を送るんだけど、Kinesisの最も低レベルなAPIではHTTPのPOSTリクエスト、かつボディ部がJSONという形式で送られる。

{"StreamName":"teststream1","Data":"dGVzdERhdGEtMA==","PartitionKey":"partitionKey-0"}

生のbyte[]をどう扱うのかと思ってたらBase64だった(;´Д`)サイズ膨らみますね

HTTPのPOSTで送るだけでもオーバーヘッドがあるのにBase64っすか。。。って感じで意外でした。
大規模なLog Aggregationのシステムを組む場合、例えば1行ごとにKinesisに投げるように作ると、相当無駄なトラフィックが発生する感じ。
通信もHTTPSだしリクエスト毎に署名作業が発生するし、CPUにもそれほどやさしくなさそう。同じCPU使うなら圧縮すればいいのにとか思わないでもない。(もしかしたら転送時にgzip圧縮してたりするのかも。未確認)

 

 

期待していたよりやや複雑

ShardIteratorとかシーケンス番号とか、そこそこ複雑だった。もうチョイ楽にならなかったか?という印象。
IRecordProcessorを使うサンプルも見たけどそんなに楽になっていないような…
まぁ、APIが8種類くらいしかないのは、とりあえずシンプルでよかったです。

 

 

データ形式が潔すぎる

上でも書いた通り生byte[]なので非常にわかりやすいけど、JSONとかのサポートもあっても良かったんじゃないかと。
(もちろん自分でser/deすりゃいい話ですが)

これだけ(;´Д`)
ちょうどLog Aggregationを考えているところだったのでKinesisには非常に期待しています。とりいそぎ東京に早くきてほすぃ。

Advertisements


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s