セッション「Task Madness - Modern On Demand Processing」
Springには、マイクロサービスでのバッチ処理を実現するプロダクト「Spring Cloud Task」があります。このSpring Cloud Taskについて、 Michael Minellaさん(以下、Michaelさん)とGlenn Renfroさん(以下、Glennさん)によるセッションが行われました。
セッションはMichaelさんからの「現在のマイクロサービスはサービスが長期間稼働していることが前提になっているが、 あらゆるユースケースを考えると、短命なマイクロサービスも必要だ」という問題提起から始まりました。
短命なマイクロサービスというと、従来のシステムでいうところのバッチ処理がそのイメージに近いでしょう。 ただし、バッチ処理は任意のタイミングで何度も実行するため、ディレイドバッチとして実装し、常駐プロセスとして起動しておくのが一般的ですが、マイクロサービスは都度サービスプロセス自体を起動/終了させるほうが自然です。 これは、常駐プロセス下でマルチスレッド処理をしてしまうとスケーラビリティの確保が難しいためで、マイクロサービスではマルチプロセスにしてスケーラビリティを高めるほうが適切ということです。
「マルチプロセスにしてスケーラビリティを高めるために、Spring Cloud Taskがある」というのがMichaelさんの説明です。 また、Spring Cloud Data Flowによってマイクロサービス間の一部にSpring Cloud Taskを組み込むことで オンデマンドに処理を起動でき、システム全体の振る舞いにより柔軟性をもたらすとのことでした。
Glennさんは、2つのデモを披露しました。 1つ目は、Spring Cloud Taskを使った「Hello World」のデモです。 このデモからは、Spring Bootアプリケーションの使用感そのままにSpring Cloud Taskを作ることができる手軽さが伝わってきました。 2つ目は、Spring Cloud Data Flowの一部としてSpring Cloud Taskを組み込んだデモでした。 他のマイクロサービスと連携し、必要なときだけ起動できるのはもちろん、 実行履歴もWebベースの管理画面から参照できるので、扱いやすそうに見えました。
聴講者との質疑応答は終始活発で、これからさらに人気を集めるプロダクトになりそうです。
なお、Spring Cloud TaskはすでにGA版がリリースされており、最新版は1.0.2です。
また、この講演のスライドやデモサンプルはGitHubで視聴できます。 気になった方は、ぜひアクセスしてみてください。
セッション「Continuous Delivery for Microservice Architectures with Concourse & Cloud Foundry」
このセッションでは、Pivotal Cloud FoundryプロダクトマネージャであるAlex Leyさん(以下、Alexさん)が、 マイクロサービスのための継続的デリバリ(Continuous Delivery)について講演しました。
Alexさんは最初に、継続的デリバリをMartin Fowler氏の言葉を借りて「いつでもプロダクションをリリース可能にするための開発の規律である」 と提示しました。 その上で、継続的デリバリにおけるマイクロサービスとモノリスの違いは、 小さなサービスそれぞれのインテグレーション、デリバリ、オペレーションを別に考える必要がある点である、と主張しています。
セッションでは、マイクロサービスの継続的デリバリを実現する手段として、 Cloud Foundryのプロジェクトである「Concourse CI」を提示し、 サービスの単体テスト、デプロイ、スモークテストといった一連のデリバリのパイプラインをデモで説明しました。 Concourse CIは、パイプラインを設定することで、視覚的にそれぞれの状態を監視することができるそうです。
今後はマイクロサービスの浸透により、小さなサービスで構築された複雑なシステムに対して、 それぞれの小さなサービス単位にデプロイが必要になることが予見されます。 マイクロサービスのアーキテクチャを採用する際には、 継続的デリバリのパイプラインを単純化できるConcourse CIが利用されるケースが増えるのではと感じました。
