Lambda/Kappa Architecture
BigData関連の仕事をしていることもあり、Lambda/Kappa Architectureをちょっと調べ始めてます。
Web系、BigData系はあまり知識がないのでつらいところですが、従来システムの問題点、Lambda/Kappa Architectureでも問題解決に関しては、こちらのサイトがイメージしやすかったです。
("PHPで支える"とか、やや偏っているのかもしれませんが。)
自分なりの現在の解釈としては、こんな感じです。
従来システムのように、Webアプリケーションでデータを収集して、データベースに突っ込んで、必要なデータを抜き出すというのは、データが増えれば増えるほど遅くなってしまう問題がある。
アプリケーション側で検索の工夫やらできるが、そうすることでアプリケーションが複雑になってしまう。
その解決方法として、アプリケーションはシンプルに、データ処理部分をひと工夫しましょうということで、Lambda/Kappa Architectureが登場する。
Lambda Architectureは、Speed Layer, Batch Layer, Serving Layerの3Layerで構成され、リアルタイム処理(Speed)、バッチ処理(Batch)を分けて、閲覧者に提供(Serve)するというアーキテクチャ。
大量のデータをさばくために、ある程度完全さを捨ててリアルタイムに処理する部分と、完全なデータをバッチで処理する部分を分けてバランスとりましょう、という発想でしょうか。
しかし、これに疑問を呈したのが、LinkedIn社のJay Kreps氏。
SpeedとBatchを分けると同じような処理を2回行うことになり、複雑でメンテナンスも大変だ、ということで、Kappa Architectureが登場。
SpeedとBatchをそもそもわけることなく、データ処理部分を並列においてやればできる、という思想。
う~ん、まだまださっぱりわかりません。
また、BigData Processing周りの製品が、Storm、Spark、Kafkaやら、いろいろあって何がどう違うのかがいまいちわからない。
まだまだ、勉強中です。