BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Spring Cloud Data Flow for Cloud Foundryに関するEric Bottard氏とのQ&A

Spring Cloud Data Flow for Cloud Foundryに関するEric Bottard氏とのQ&A

原文(投稿日:2017/02/28)へのリンク

PivotalはSpring Cloud Data Flow for Cloud Foundryの一般提供を発表した。これはCloud Foundryで構成可能なマイクロサービスアプリケーションへのオーケストレーションサービスだ。

Spring Cloud Data Flowを基調として、それ自身Spring XDのリファクタであるが、Spring Cloud Data Flow for Cloud FoundryはCloud Foundry上のデータ中心のマイクロサービスアプリケーションへ一連のパターンとベストプラクティスを用いて基礎的なエンタープライズアーキテクチャを提供する。しかしそれはすぐに使えるETLでもデータ統合ソリューションでもない。分散アーキテクチャへの関心と既存システムへの1度限りの統合を免れて、Spring Cloud Data Flowの開発者はプロジェクトの再利用への堅牢な基盤を持つことになる。

InfoQはEric Bottard氏に話を聞いた。氏はPivotalのシニアエンジニアでこの取り組みの責任者だ。

InfoQ「Spring Cloud Data Flow for Cloud Foundryがどんなもので、Springのエコシステムにおいて他のどのプロジェクトがそれをベースにしているか、簡単に解説してもらえませんか?このプロジェクトへの短縮名はありますか?」

Bottard「Spring Cloud Data Flow for Cloud FoundryはCloud Foundryで動作するSpring Cloud Data Flow製品の具体的なものです。これはより大きなファミリーの一員です(他のランタイムは"deployer"の抽象概念を通じてサポートされています)。Spring Bootアプリケーション上にオーケストレーション層として記述することができます。より正確には統合デプロイメントと"ストリーム"(いくつかのデータドリブンアプリで作られた論理的構造。そこでは各アプリケーションは次のアプリケーションと"会話する"。開始から終了までのデータフローとともにある)とタスク(固定された量のデータで一度だけ実行されることを意味するアプリケーション)のモニタリングができるようになります。

Spring Cloud StreamやSpring Cloud Taskを使っている、もしくはその2つを使っているSpring開発者のツールセットには任意で追加するものです。Data Flow自身は層状アーキテクチャにおいてSpring Bootと他のSpring Cloudライブラリを使って構築されています。

たしかに長い名前です。時々ニックネームとしてSCDFと読んでいます。Cloud Foundryエディションでは"SCDF for CF"となります。」

InfoQ「Spring XDはプロジェクト設計に大きく影響を与えていますか?Spring Cloud Data Flowにおいて克服したSpring XDの制約は何でしょうか?そしてこのプロジェクトはApache SparkやFlink、Kafkaといったプラットフォームとどのように比較しますか?」

 

Bottard「まったくその通りです。私たちはもともとSpring XDを分散データパイプラインのためのスタンドアロン製品として設計しました。デプロイするアプリケーションのためにレジリエントがあるランタイムを構築することに少なくない労力を投資しています。しかし終わりなきスケーリングやカナリアデプロイ、分散トレーシングのような機能に対する市場の要求の表れとして、私たちはこれらの関心がCloud Foundryのようなプラットフォームによってよりよく処理されることを実現しました。Spring Cloud Data Flowは顧客への価値創出により焦点を当てています。データドリブンアプリケーションを書く際の障壁を大いに低くします。

Data Flowと先ほど言及されたプロダクトのいくつかを比較するとき、Springの哲学を適用します。いくつかの技術は同じ市場シェアにあるものとして見られるかもしれませんが(たとえばApache Flink)、それらはデータ中心アプリケーションを作成する際にはしばしば必要でないが認識がいる専用のランタイム環境を要求することもあります。いくつかのオファーは私たちが活用するコンポーネントです(Apache Kafkaは間違いなくバインダとして選択する実装です。これはSpring Cloud Streamがメッセージングミドルウェアを抽象化するために使う用語です)。またしばしば、両方の世界からもっともよいところを得る、または既存のアーキテクチャから移行するために連携できます。これは通常Apache Sparkでは意味をなします。」

InfoQ「Cloud Foundryがマイクロサービスのプラットフォームである一方で、Spring Cloud Data Flow for Cloud Foundryは明確にデータマイクロサービスのためのものです。通常のマイクロサービスとデータマイクロサービスの違いを、とくにSpringプラットフォームに関して話してもらえませんか?」

Bottard「開発者がマイクロサービスについて考えるとき、RESTfulサービスや外部化された設定、動的なサービス検出を考えます。正確にはSpring BootとSpring Cloudが提供するものです。しかしエンタープライズアプリケーションはこれらの基本に留まりません。簡単にメッセージドリブンとタスクドリブンのアプリケーションを書く方法も必要です。それも特定の連携プロダクトのボイラープレートに取り組む必要なしでです。これはSpring Cloud StreamとSpring Cloud Taskが解決しようとするまさにそのものです。Spring Cloud Data FlowはSpring Cloud StreamやStream Cloud Taskのアプリケーションで構成されたデータパイプラインの調和を取ります。」

InfoQ「Spring Cloud Data Flow for Cloud Foundryはバッチとストリーミングアプリケーションの両方に使うことができますよね?実装の技術的詳細とどのように両者に対してプラットフォームを最適化しているかをいくつか説明してもらえませんか?」

Bottard「トリックなんです。書く必要がある"Spring Cloud Data Flow"アプリケーションといったものはないんです。すべて本当にData Flowを使って連携するSpring Cloud Stream / Taskアプリケーションです。これはData Flowの設計における重要な原則です。本当に"手動で"実行することもありえるマイクロサービスアプリケーションをともにフックする手助けのためにあります。それらすべてはまたアプリケーションを実行している実際のランタイムを取り除きます。Cloud Foundryは利用できる多くの実装のうちのたった1つです。ストリーミングと境界のあるデータの両方をあなたのユースケースが含んでいるときに、ことがおもしろくなり始めます。おそらくあなたは連続した処理を供給するためにタスク指向のイベント(たとえば処理しているバッチの完了通知)を欲しているのでしょう。これはData Flowが提供することです。

 

実装詳細の観点から、ストリームとタスクのアプリケーションはCloud FoundryのLRPとタスクの概念と各々密接に対応づけられます。LRPは長期間実行プロセスを表し、プラットフォームが管理します。つねにあり、そうなる必要があればスケールすることを確実にします。一方タスクには始まりと終わりがあります。」

InfoQ「開発者の観点からは、DSLやダッシュボードなどSpring Cloud Data Flowを使う方法がたくさんあります。これらのアプローチと一般的な始め方についてコメントをもらえませんか?」

Bottard「そのとおりです。Spring Cloud Data Flowは特定のユースケース(SCDF用語での"ストリーム"と"タスク")とこれらの構造が選択したランタイム(たとえばCloud Foundry)にデプロイされるかどうかとどのようにデプロイされるかを実現する手助けをする構造のモデルを保ちます。これらすべてがRESTful APIを通じて公開されています。ダッシュボードUIなのか提供しているシェルなのか直接なのか、どれで操作するかは本当にささいなことです。

提供しているシェルは普通の開発者ツールで、データエンジニアのプロファイルによっては好まれるものです。unix風のDSLを使います。アプリケーション間のコミュニケーションは"http --server.port=1234 | hdfs"のようにパイプで表現されます。

一方データサイエンティストとデータウェアハウスの人はダッシュボードUIを好む人もいます。これは、DSLのテキスト表現の上に実行計画のビューも表示します。解決策が大型になり、ストリームのいくつかがこののようにほかのストリームを"利用"し始めるとき役に立ちます。」

InfoQ「これはPivotalバージョンのCloud Foundryのためだけに向けられているのですか?それとも他のCloud Foundryベースのプラットフォームでも使えますか?プロジェクトのロードマップを詳しく教えていただけませんか?

Bottard「Data FlowはCloud Foundryとのやり取りではdeployerの抽象に依存しています。これは文書化されオープンソースとなっているCloud Foundry APIを背景に構築されています。そのためData Flow自身は当然他のプラットフォームと互換性があります。あるとすれば、あるプラットフォームで特定のサービス(たとえばRabbitMQ)へのサポートがないことが制約となるかもしれません。このケースではストリームは違うメッセージングミドルウェアを使う必要があるでしょう。

私たちは3ヶ月ごとにData Flowの新バージョンをリリースすることを目指しています。これにはしばしばコアの拡張だけでなく私たちが提供する革新的なアプリケーションのカタログへの追加を含みます。たとえばv1.2は構成タスクやロールベースのセキュリティ、 Dockerベースのアプリケーションを使う際のよりよいユーザ体験をもたらすでしょう。」

Spring Cloud Data Flow for Cloud Foundryを使い始めるには、クイックスタートセクションとドキュメントがある。

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT