cfの便利機能を他の環境でも。open service broker

Post on 28-Jan-2018

2.652 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CFのあの便利機能を他の環境でも。

OpenServiceBroker

Pivotal Japan - Platform Architect

Kazuto Kusama@jacopen

Open Service Brokerの前にService Brokerの話をしよう

イメージしてみよう

アプリ開発した!DBも用意して動かそう!① DBを作る

VM/ベアメタルにインストールしたりRDSのようなManagedサービス使ったり

アプリ開発した!DBも用意して動かそう!

host:aaa.bbb.ap-northeast-1.rds.amazonaws.com:5432db:productionuser:mssqlpass:xxxxx

① DBを作る

VM/ベアメタルにインストールしたりRDSのようなManagedサービス使ったり

② コンフィグを控える

ホスト名orIP、DB名、ユーザー名、パスワードは最低限控えておく必要がある

アプリ開発した!DBも用意して動かそう!

host:aaa.bbb.ap-northeast-1.rds.amazonaws.com:5432db:productionuser:mssqlpass:xxxxx

db:host:aaa.bbb.ap-northeast-1.rds.amazonaws.com:5432name:productionuser:mssqlpass:xxxxx

① DBを作る

VM/ベアメタルにインストールしたりRDSのようなManagedサービス使ったり

② コンフィグを控える

ホスト名orIP、DB名、ユーザー名、パスワードは最低限控えておく必要がある

③ アプリのコンフィグを修正

アプリのコンフィグファイルに②を記述。より汎⽤的にするなら、環境変数から読み込むようにすることも。

アプリ開発した!DBも用意して動かそう!

host:aaa.bbb.ap-northeast-1.rds.amazonaws.com:5432db:productionuser:mssqlpass:xxxxx

db:host:aaa.bbb.ap-northeast-1.rds.amazonaws.com:5432name:productionuser:mssqlpass:xxxxx

① DBを作る

VM/ベアメタルにインストールしたりRDSのようなManagedサービス使ったり

② コンフィグを控える

ホスト名orIP、DB名、ユーザー名、パスワードは最低限控えておく必要がある

③ アプリのコンフィグを修正

アプリのコンフィグファイルに②を記述。より汎⽤的にするなら、環境変数から読み込むようにすることも。

④ 起動!

アプリ開発した!DBも用意して動かそう!

host:aaa.bbb.ap-northeast-1.rds.amazonaws.com:5432db:productionuser:mssqlpass:xxxxx

db:host:aaa.bbb.ap-northeast-1.rds.amazonaws.com:5432name:productionuser:mssqlpass:xxxxx

① DBを作る

VM/ベアメタルにインストールしたりRDSのようなManagedサービス使ったり

② コンフィグを控える

ホスト名orIP、DB名、ユーザー名、パスワードは最低限控えておく必要がある

③ アプリのコンフィグを修正

アプリのコンフィグファイルに②を記述。より汎⽤的にするなら、環境変数から読み込むようにすることも。

④ 起動!

Cloud Foundryの解決方法Marketplace

CF CLIでDBを作成し、アプリに紐付ける例

cf push frontend (1) cf create-service p-mysql 100mb-dev mydb (2)cf bind-service frontend mydb (3)

FrontendApplication

① フロントエンドアプリをpush

② DBを作成(marketplaceのp-mysqlを選択)

FrontendApplication

DB

③ アプリとDBを紐付け(バインド)

FrontendApplication

DB

CF CLIでDBを作成し、アプリに紐付ける例

cf push frontend (1) cf bind-service frontend mydb (2)

BackendApplication

① フロントエンドアプリをpush ② アプリとDBを紐付け(バインド)

FrontendApplication

DB

BackendApplication

イケてる😃

Marketplaceのメリット•バックエンドサービスのプロビジョニングとコンフィグレーションが自動化できる•どのサービスも同じインタラクションで利用できる

この仕組みを実現するのがService Broker

Service Broker• Cloud FoundryでMarketplaceを実現したい!• Cloud Foundryと外部サービスを中継する仕組みが要るよね•中継する仕組みが備えるべきAPIをService Broker APIとして定義• Service Broker APIを実装した中継くんをService Brokerと呼ぶ

ServiceBrokerforAWS

create-serviceaws-rds-oracle

servicebrokerAPI AWSAPI

responseresponse

ServiceBrokerforAWS

bind-serviceaws-rds-oracle

servicebrokerAPI

configuration

アプリケーションには環境変数で必要なコンフィグが渡される

configuration

AWSAPI

ServiceBrokerforAWS

create-serviceaws-rds-oraclecreate-service aws-rds-postgrescreate-serviceaws-rds-auroracreate-serviceaws-dynamodbcreate-serviceaws-s3

どのAWSのサービスも同じインタラクションで作成可能

ServiceBrokerforAWS

MySQLforPCF

Broker

GCPServiceBroker

NewRelicServiceBrokerさまざまなBrokerを登録することで

どのサービスもcreate service, bind-serviceで作成とバインディングができる

Service Brokerの良さ• Service Brokerの設計や思想は非常にシンプルであり、かつ実用的•後付けする形でCloud Foundryの機能を拡張していける• Cloud Foundryの強さの要因の一つ

12 Factor App•スケールし、クラウドに適したアプリを構築するための12の方法論

バックエンドサービスをリソース化• 12 Factor AppのIV項「バックエンドサービス」で説かれている方法論

•バックエンドサービスをリソースとして扱い、アプリケーションにはそれをアタッチする

Open Service Brokerとは

すべてをコンテナ化するk8s、しかし・・・• KubernetesはStateful Setsなどの機能により、SoRな仕組みもホストできるようになりつつある。•しかし、無理にk8sの中で動かすのではなく、マネージドサービスを使った方がいいケースは往々にしてある。• たとえばメールサーバーなんて誰もホストしたくない。SendGridやAmazon

SESを使いたい• DBの運用をコンテナ内でしたくない、RDS使いたい• NewRelic、Datadogなどなど便利なサービスもいっぱいある。

コンテナだってMarketplaceしたい!• Marketplaceの考え方はk8sでも活用できる• Service Brokerよく出来てるから、他でも使えるようにしよう!•でも、Cloud Foundry前提に作られている・・・

organization_guidやspace_guidなど、Cloud Foundry固有のパラメータが必須になっている

例えば・・・

Open Service Broker APIプロジェクト•さまざまな実装に対応した仕様を定める•テストスイートを作成する•この仕組みを広める

CF固有のパラメータはdeprecatedにして、contextという汎用的、かつOptionalなパラメータを導入

例えば・・・

ガバナンス

実装

現在

例えば、Trove Service Brokerなんてもアリかもしれない

まとめ• Service BrokerはCFの強力な機能•エコシステムを広げるため、CF以外に解放。それがOpen Service Broker• Kubernetesでも、近い将来使えるようになるはず!

top related