包括的なアーキテクチャの各要素におけるOSSによるソリューション例
データ収集とデータ蓄積において、一般的により使われてきている代表的なOSSのパッケージをベースとしたソリューションを以下に示す。(OSSの世界は常に進化し続けており、この他にも次々と新たなソリューションが世界中の至る所で開発されている)
図3
最後に、現時点で、筆者たちがオープンソースで構築しているアーキテクチャを簡単に紹介する(図3)。
特にfluentdは、とても簡単にデータを収集できるという点では、非常に便利なソフトウエアである。kafkaとともに今後の包括的なアーキテクチャには必須になるのではなかろうか(サンプルコード1:参考)。
今回は、自立的にPush型でデータを取り込めるfluentdとPull型でデータ取得のタイミングをコントロールしやすいkafkaの接続を試みている。
図4
fluentdは、独立したアプリケーションで、インストールしたサーバーで単独で動作する。現時点ではクラスタ構成などは装備さていないようだ。但しさまざまなアプリケーションやDBなどに接続可能なプラグインが多数開発されていて、インストールも設定も非常にシンプルである。
fluentdがインストールされたデータソースから、Push型でDWHやデータレイクへのデータ転送と簡易集計が可能となり、リアルタイムに必要とは言わないまでも常時データを取り込み続けることができる。
Apache kafkaは、2011年にLinkedInから公開されたオープンソースの分散メッセージング・システムである。ウェブサービスなどから発正する大容量のデータ(e.g., ログやイベント)を高スループット/低レイテンシに収集/配信することを目的に開発されており、クラスタ構成をも考慮して設計されており、耐障害性がある。Pull型でリアルタイムにデータ収集をする場合に、制御がしやすいなどの利点がある。
Talendは、ETLのOSSソリューションとして多くの実績があり、OSSの枠組みを維持しつつ、ビジネスの世界でも活躍しているコミュニティおよび企業である。既にETLの枠を超え、さまざまなデータ統合・管理ソリューションに適用が拡がっているが、データ収集という観点でも優れた機能がOSSでも実装されている。