Good Design is Simple

ソフトウェアに関する話題をメインに。たまに、気に入ったデザインのものを紹介しています。

Lambda/Kappa Architecture

BigData関連の仕事をしていることもあり、Lambda/Kappa Architectureをちょっと調べ始めてます。

 

Web系、BigData系はあまり知識がないのでつらいところですが、従来システムの問題点、Lambda/Kappa Architectureでも問題解決に関しては、こちらのサイトがイメージしやすかったです。

("PHPで支える"とか、やや偏っているのかもしれませんが。)

 

sssslide.com

 

自分なりの現在の解釈としては、こんな感じです。

 

従来システムのように、Webアプリケーションでデータを収集して、データベースに突っ込んで、必要なデータを抜き出すというのは、データが増えれば増えるほど遅くなってしまう問題がある。

アプリケーション側で検索の工夫やらできるが、そうすることでアプリケーションが複雑になってしまう。

その解決方法として、アプリケーションはシンプルに、データ処理部分をひと工夫しましょうということで、Lambda/Kappa Architectureが登場する。

 

Lambda Architectureは、Speed Layer, Batch Layer, Serving Layerの3Layerで構成され、リアルタイム処理(Speed)、バッチ処理(Batch)を分けて、閲覧者に提供(Serve)するというアーキテクチャ

大量のデータをさばくために、ある程度完全さを捨ててリアルタイムに処理する部分と、完全なデータをバッチで処理する部分を分けてバランスとりましょう、という発想でしょうか。

しかし、これに疑問を呈したのが、LinkedIn社のJay Kreps氏。

 

www.oreilly.com

 

SpeedとBatchを分けると同じような処理を2回行うことになり、複雑でメンテナンスも大変だ、ということで、Kappa Architectureが登場。

SpeedとBatchをそもそもわけることなく、データ処理部分を並列においてやればできる、という思想。

 

 

う~ん、まだまださっぱりわかりません。

また、BigData Processing周りの製品が、Storm、Spark、Kafkaやら、いろいろあって何がどう違うのかがいまいちわからない。

 

まだまだ、勉強中です。