dotDataの木村宗太郎さんを招いて、「ストリームデータ処理入門」と題した社内勉強会を開催しました。
開催に至った経緯
今回の勉強会のきっかけは、弊社で大規模のストリーム処理を扱うプロジェクトのメンバーでストリーム処理について雑談していたときでした。
そのプロジェクトメンバーの一人である私がストリーム処理に対する技術的興味をもっており、そのことを知った別のメンバーが、過去に ScalaMatsuri 2017 で木村さんがストリーム処理について発表されていたことを教えてくれました。
そこで「社内勉強会をお願いしよう!」と発案があり、共通の知人を経て木村さんにオファーをして快諾いただけたことで、今回の勉強会が開催されることとなりました。
「入門」という名の「全部のせ」
勉強会のタイトルは「ストリームデータ処理入門」でしたが、タイトルに書いてある「入門」以上の充実した内容でした。
「ストリーム処理とは何か?」という基本的なところから、その基盤や構造、利用方法まで、開発者がおさえるべきポイントを幅広く解説され、そのカバー範囲の広さはまさに「全部のせ」。
アジェンダを資料から引用してみましたが、その内容の充実ぶりがおわかりいただけるでしょうか。
- What is Stream Processing?
- Data processing patterns
- History of Stream Processing System Architecture
- Trouble of Stream Processing
- Stream Processing system structure
- Technical consideration points
- Real Stream Processing performance problems
- Stream Processing system misconceptions
当日はこちらの資料を使ってお話してくださいました。
それぞれの項目の内容もとても充実した内容で、木村さんも知識を共有しようと熱く語ってくださいました。 その情報量はあたかもバックプレッシャーのないストリーム処理のよう。 私も、情報を取り逃すまいと集中して聞いていました。
特に印象に残っているのは、「バッチ処理はストリーム処理のサブセットである」という概念。 「バッチ処理は、無限であるデータストリームを、一定時間ごとに区切って処理する、ストリーム処理の限定的なモデルである」という考え方ですが、今までバッチ処理とストリーム処理の関連性を意識していなかった私にとっては、目から鱗が落ちるような思いがしました。
勉強会を終えて
今回の勉強会は内容が盛りだくさんで、私もいまだ全て消化し切れていません。
しかし、これまで大まかな理解だった大規模ストリームデータ処理について、どのように構築して、どのようなところに注意するべきか、イメージが明確になったと感じています。 また、弊社で進めているストリームデータを扱うプロジェクトにおいては、勉強会で紹介された処理基盤プロダクトではないKinesisなどを利用していますが、質疑応答でKinesisならではの課題をディスカッションできました。勉強会中で学んだ問題点や解決方法などはプロダクト内容に関わらず、幅広く活かすことができそうだとも感じました。
今後ますますデータは増え続け、リアルタイムに処理しなければならない事例はもっと増えていくことと思います。そうした時代においてのソリューションの一つの選択肢として活用できるよう、この勉強会をきっかけとして更に技術を磨いていきたいです。