年次の開発者カンファレンスで、Googleはクラウドコンピューティングの最新の動きを発表した。その中でも筆頭に挙げられているのが、複雑なデータパイプラインを管理するCloud Dataflowだ。
InfoQは同社のクラウドプラットフォームのプロダクトマーケティングを統括するBrian Goldfarb氏に話を聞いた。氏の話では、Cloud Dataflowはバッチもストリームも扱うことができる。世界的なイベントの開催中にポストされる数百万のツイートをリアルタイムで分析できるといえばイメージがつきやすいだろう。タグを抽出し、感情(ポジティブ、ネガティブなど)でツイートを分類し、キーワードでフィルタする。Map/Reduceのような古いパラダイムはこのようなリアルタイムデータを分析できない。また、複雑で長いパイプライン処理も簡単には適用できない。
Googleの新しいパラダイムはバッチとリアルタイム処理で同じAPIを使っている。複雑な処理でも単純な処理でも同じAPIを使う。開発者はこの製品を使って、データのロジックに集中でき、パイプラインの最適化の細かい部分はGoogleのクラウドに預けておける。各パイプラインのそれぞれに注力する代わりに、Cloud Dataflowはパイプライン上の各セグメント間のやり取りを考慮に入れる。この処理方法によって、単一の処理が遅いセグメントは必ずしも後続のセグメントの処理を引き止めない。セグメント間のトラフィックを扱うため、Cloud Dataflowはキーによる集約、スライディングウィンドウ、Map/Reduceのパーツなどさまざまな技術を使う。
Cloud Dataflowによって、Googleのクラウドは特定のアプリケーションを最適化するための最高の方法を選択肢として用意できるようになった。開発者はほとんどのシナリオにおいて同社の提供する最適化を受け入れることができるだろう。また、極端な使う方向けにはデフォルトの設定をオーバライドできる。
開発者にとって、ほとんどのシナリオはAPIの比較的シンプルな部分を使ったコードを含む。例えば、下記は今回のカンファレンスのキーノートで示されたものだ。
Pipeline pipeline = Pipeline.create(); PCollectiontweets = pipeline.begin() .apply(new InputFromPubSub()) .apply(new TweetTransformer()); tweets.apply(new CalculateSentiment()); tweets.apply(new CorrelateKeywords()); pipeline.run();
(現時点ではAPIはJavaでのみ利用できる)
開発者はパイプラインを定義し、各セグメント内のコード(TweetTransformer、CalculateSentiment)が効率的で正確であることを保証する必要がある。そしてGoogleのクラウドがセグメント間のフローを調整するのだ。また、低レベルのVMもGoogleのクラウドが面倒を見てくれる。配置やスケール、スピンアップ、スピンダウンのようなオペレーションは背後で実行される。
Cloud Dataflowと同時に、Googleは開発者をより生産的にする4つの新しいツールを発表した。Cloud Save、Cloud Debug、Cloud Trace、Cloud Monitorだ。
- Cloud Saveはクラウド内のユーザ情報を保存、検索するAPI。ユーザの情報にはアプリケーションのデータやプレファレンスなどが含まれている。
GoogleAppClient client = . . . List
infoToSave = . . . SaveResult saveResult = CloudSaveManager.save(client, infoToSave); - Cloud Debugはその名の通り、クラウドベースアプリケーション(インターフェースがウェブブラウザ)のためのデバッガ。
- Cloud Traceはデータベースリクエストの呼び出しのタイミングを視覚化するツール。
- Cloud Monitorはサービスレベルのメトリクスや警告を提供する。カスタムのアラートを仕込んでユーザに影響を与える前に問題をキャッチできる。
Cloud MonitoringはGoogleの最近のStackdriverの買収から生まれた。
Cloud Dataflowと上述のツールは現時点ではベータ版。公式リリースの日程はまだ明らかにされていない。