Spring Cloud App Broker V1がマネージドサービスの開発を容易に
Spring Cloudは、Spring Cloud App Brokerと呼ばれる新たなフレームワークを導入した。Open Service Broker APIを実装するSpring Bootアプリケーションの開発と、それらアプリケーションのマネージドサービスとしてのプロビジョニングが容易になる。
Open Service Broker APIにより、KubernetesやCloud Foundryなど、クラウドネイティブプラットフォームで動作しているアプリケーションに対するバッキングサービスの提供が可能になる。このAPIの主要なコンポーネントがサービスブローカだ。サービスブローカはサービスのライフサイクルを管理し、提供するサービスカタログのフェッチ、サービスインスタンスのプロビジョンとプロビジョン解除、アプリケーションのサービスインスタンスへのバインドとバインド解除を行うためのコマンドを提供する。クラウドネイティブなプラットフォームは、Service Brokerと対話することにより、Service Brokerが提供するマネージドサービスのプロビジョンとアクセスの獲得が可能になるOSGIに精通している人にとって、Open Service Broker APIには、OSGIサービス、サービス参照、およびサービスレジストリと、考え方の点で近いものがある。
Spring Cloud App Brokerは、Spring Cloud Open Service Broker上の抽象化レイヤで、Spring Cloud Open Service Brokerインターフェースに対する独自の実装を提供する。Spring Cloud Open Service Broker自体は、Open Service Broker APIをサポートするプラットフォーム上において、サービスブローカの開発と管理を行うために使用されるフレームワークである。
Spring Cloud App Brokerを使用することで、YAMLあるいはJavaプロパティファイルで定義された外部設定を使って、Service Brokerを短期間で開発することが可能になる。まず最初に、Spring Bootアプリケーションを開発して、App Brokerの依存関係をプロジェクトのビルドファイルに含める。Gradleをビルドツールとして使用するプロジェクトの場合は、次の依存関係を追加する必要がある。
dependencies {
api 'org.springframework.cloud:spring-cloud-starter-app-broker-cloudfoundry:1.0.1.RELEASE'
}
例として、インテント分類やエンティティ抽出といった自然言語理解(NLU)機能を提供するサービスを定義して公開する場合には、以下のスニペットに示すように、spring.cloud.openservicebroker下のプロパティを使用したSpring Cloud Open Service Brokerの設定を含める。
spring:
cloud:
openservicebroker:
catalog:
services:
— name: mynlu
id: abcdef-12345
description: A NLU service
bindable: true
tags:
— nlu
plans:
— name: standard
id: ghijk-678910
description: A standard plan
free: true
このスニペットが示すように、spring.cloud.appbrokerの下のプロパティを使用したSpring Cloud App Brokerの設定を含めておく。
spring:
cloud:
appbroker:
services:
— service-name: mynlu
plan-name: standard
apps:
— name: nlu-service
path: classpath:mynlu.jar
deployer:
cloudfoundry:
api-host: api.mynlu.com
api-port: 443
default-org: test
default-space: development
Spring Cloud App Brokerはこれらの設定を利用して、NLUサービスの公開を処理し、サービスのプロビジョニングとバインドを管理する。
プロジェクトのドキュメントには、様々なサービスの設定オプションやカスタマイズ、展開オプションについて説明されている。注意が必要なのは、現時点ではCloud Foundryのみを展開プラットフォームとしてサポートしている点である。