私たちのデータパイプ全体をMacBook Proで
ソフトウェア・エンジニア(データ・パイプライン)のAndrew Backes氏によるものです。
私たちは、データパイプ全体の正確なコピーをローカルで実行できたら、とても素晴らしいことだと考えました。そうすれば、さまざまな可能性が広がります。私たちが最も期待していたのは、ラップトップ上でシステム統合をテストすることでした。6月の最後の数週間、私たち(ShareThis のデータチーム)はこのような作業を行いました。
これは具体的にどういうことなのでしょうか?現在、私たちのデータパイプラインは、約30ノードのクラスター上で動作しています。Cassandraクラスター、Aerospikeクラスター、2つのKafkaクラスター、Graphite/Seyrenノードと連携しています。目標は、これらすべてをなんとか1台のラップトップで動作させることでした。また、パイプラインでデータを取り込み、正しいデータを出力することも目指しました。
最初のステップは、アプリケーションをコンテナ化することでした。厄介なのは、私たちのアプリケーションがこの機能を念頭に置いて書かれていなかったことです。幸運なことに、開発中に依存性注入とアダプターモデルを使用しました。これは、物事を正しく配線するのにかなり役立ちました。また、Docker composeもこの点で役に立ちました。これらの作業が完了した約1週間後に、Docker 1.7の高度なネットワーク機能が発表されました。この新機能があれば、私たちの仕事はもっと楽になったはずです。
最終的には、8つのDockerコンテナ(それぞれがAmazon VPCグループを表す)を社内アプリケーション用に使用し、Cassandra、Aerospike、Kafka 7、Kafka 8、Graphiteにはそれぞれ1つのDockerコンテナを使用しました。また、Mac上で動作させているため、VM内のboot2dockerで使用できるメモリとディスクの容量を増やさなければなりませんでした。パイプラインにデータを投入し、それをGraphiteで追跡して、完全に処理されたものが向こう側に出てくるのを見たときは、とても嬉しかったですね。