Amazon KinesisからデータPut方法まとめ

こんにちは、中の人です。

今回はKinesisにデータをPutする時の注意点をまとめてみました。

Kinesisは、シャードという単位で帯域を変えることが出来、1シャードで1000req/secもデータをPutする事が出来ます。
ずーっと1000req/sec使い続けた場合、約2億6千万リクエストにもなりますが料金はなんと$100にも満たない程度というコストパフォーマンスにも優れたサービスです。

ただし、このパフォーマンスを活かすには送信プログラムにも工夫が必要です。
以前、『Amazon Kinesis/Redshift編~アクセスログをkinesisで加工してTableauで表示してみよう① [全4回]~』で紹介した様な方法で行った場合、10req/sec程度しかパフォーマンスが出ません。
それ以上のリクエストについては処理待ちの状態となるため、10req/sec以上が続く場合処理が溜まってしまいます。

解決方法としては、Pythonを例に説明すると、threadingを利用することで解決できます。
threadingを使い必要なだけ処理を増やすことでパフォーマンスを上げることが出来ます。

上記では前回1スレッドだった処理を最大10スレッドに増やしており、約100req/sec程度のパフォーマンスとなります。
後は必要な速度とマシンのパフォーマンスに合わせて、max_threadを調整することでより最適なパフォーマンスにする事が可能です。

いかがでしたでしょうか?
次回はPut編に続きてGetについての注意点を紹介します。

次回もお楽しみに!!