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

33
CFのあの便利機能を 他の環境でも。 Open Service Broker

Upload: kazuto-kusama

Post on 28-Jan-2018

2.652 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: CFの便利機能を他の環境でも。Open Service Broker

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

OpenServiceBroker

Page 2: CFの便利機能を他の環境でも。Open Service Broker

Pivotal Japan - Platform Architect

Kazuto Kusama@jacopen

Page 3: CFの便利機能を他の環境でも。Open Service Broker

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

Page 4: CFの便利機能を他の環境でも。Open Service Broker

イメージしてみよう

Page 5: CFの便利機能を他の環境でも。Open Service Broker

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

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

Page 6: CFの便利機能を他の環境でも。Open Service Broker

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

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

① DBを作る

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

② コンフィグを控える

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

Page 7: CFの便利機能を他の環境でも。Open Service Broker

アプリ開発した!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名、ユーザー名、パスワードは最低限控えておく必要がある

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

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

Page 8: CFの便利機能を他の環境でも。Open Service Broker

アプリ開発した!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名、ユーザー名、パスワードは最低限控えておく必要がある

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

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

④ 起動!

Page 9: CFの便利機能を他の環境でも。Open Service Broker

アプリ開発した!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名、ユーザー名、パスワードは最低限控えておく必要がある

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

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

④ 起動!

Page 10: CFの便利機能を他の環境でも。Open Service Broker

Cloud Foundryの解決方法Marketplace

Page 11: CFの便利機能を他の環境でも。Open Service Broker
Page 12: CFの便利機能を他の環境でも。Open Service Broker

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

Page 13: CFの便利機能を他の環境でも。Open Service Broker

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

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

BackendApplication

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

FrontendApplication

DB

BackendApplication

Page 14: CFの便利機能を他の環境でも。Open Service Broker

イケてる😃

Page 15: CFの便利機能を他の環境でも。Open Service Broker

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

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

Page 16: CFの便利機能を他の環境でも。Open Service Broker

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

Page 17: CFの便利機能を他の環境でも。Open Service Broker

ServiceBrokerforAWS

create-serviceaws-rds-oracle

servicebrokerAPI AWSAPI

responseresponse

Page 18: CFの便利機能を他の環境でも。Open Service Broker

ServiceBrokerforAWS

bind-serviceaws-rds-oracle

servicebrokerAPI

configuration

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

configuration

AWSAPI

Page 19: CFの便利機能を他の環境でも。Open Service Broker

ServiceBrokerforAWS

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

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

Page 20: CFの便利機能を他の環境でも。Open Service Broker

ServiceBrokerforAWS

MySQLforPCF

Broker

GCPServiceBroker

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

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

Page 21: CFの便利機能を他の環境でも。Open Service Broker

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

Page 22: CFの便利機能を他の環境でも。Open Service Broker

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

Page 23: CFの便利機能を他の環境でも。Open Service Broker

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

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

Page 24: CFの便利機能を他の環境でも。Open Service Broker

Open Service Brokerとは

Page 25: CFの便利機能を他の環境でも。Open Service Broker

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

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

Page 26: CFの便利機能を他の環境でも。Open Service Broker

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

Page 27: CFの便利機能を他の環境でも。Open Service Broker

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

例えば・・・

Page 28: CFの便利機能を他の環境でも。Open Service Broker

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

Page 29: CFの便利機能を他の環境でも。Open Service Broker

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

例えば・・・

Page 30: CFの便利機能を他の環境でも。Open Service Broker

ガバナンス

Page 31: CFの便利機能を他の環境でも。Open Service Broker

実装

現在

Page 32: CFの便利機能を他の環境でも。Open Service Broker

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

Page 33: CFの便利機能を他の環境でも。Open Service Broker

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