cfの便利機能を他の環境でも。open service broker
TRANSCRIPT
![Page 1: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/1.jpg)
CFのあの便利機能を他の環境でも。
OpenServiceBroker
![Page 2: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/2.jpg)
Pivotal Japan - Platform Architect
Kazuto Kusama@jacopen
![Page 3: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/3.jpg)
Open Service Brokerの前にService Brokerの話をしよう
![Page 4: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/4.jpg)
イメージしてみよう
![Page 5: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/5.jpg)
アプリ開発した!DBも用意して動かそう!① DBを作る
VM/ベアメタルにインストールしたりRDSのようなManagedサービス使ったり
![Page 6: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/6.jpg)
アプリ開発した!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](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/7.jpg)
アプリ開発した!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](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/8.jpg)
アプリ開発した!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](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/9.jpg)
アプリ開発した!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](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/10.jpg)
Cloud Foundryの解決方法Marketplace
![Page 11: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/11.jpg)
![Page 12: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/14.jpg)
イケてる😃
![Page 15: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/15.jpg)
Marketplaceのメリット•バックエンドサービスのプロビジョニングとコンフィグレーションが自動化できる•どのサービスも同じインタラクションで利用できる
この仕組みを実現するのがService Broker
![Page 16: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/16.jpg)
Service Broker• Cloud FoundryでMarketplaceを実現したい!• Cloud Foundryと外部サービスを中継する仕組みが要るよね•中継する仕組みが備えるべきAPIをService Broker APIとして定義• Service Broker APIを実装した中継くんをService Brokerと呼ぶ
![Page 17: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/17.jpg)
ServiceBrokerforAWS
create-serviceaws-rds-oracle
servicebrokerAPI AWSAPI
responseresponse
![Page 18: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/18.jpg)
ServiceBrokerforAWS
bind-serviceaws-rds-oracle
servicebrokerAPI
configuration
アプリケーションには環境変数で必要なコンフィグが渡される
configuration
AWSAPI
![Page 19: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/19.jpg)
ServiceBrokerforAWS
create-serviceaws-rds-oraclecreate-service aws-rds-postgrescreate-serviceaws-rds-auroracreate-serviceaws-dynamodbcreate-serviceaws-s3
どのAWSのサービスも同じインタラクションで作成可能
![Page 20: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/20.jpg)
ServiceBrokerforAWS
MySQLforPCF
Broker
GCPServiceBroker
NewRelicServiceBrokerさまざまなBrokerを登録することで
どのサービスもcreate service, bind-serviceで作成とバインディングができる
![Page 21: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/21.jpg)
Service Brokerの良さ• Service Brokerの設計や思想は非常にシンプルであり、かつ実用的•後付けする形でCloud Foundryの機能を拡張していける• Cloud Foundryの強さの要因の一つ
![Page 22: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/22.jpg)
12 Factor App•スケールし、クラウドに適したアプリを構築するための12の方法論
![Page 23: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/23.jpg)
バックエンドサービスをリソース化• 12 Factor AppのIV項「バックエンドサービス」で説かれている方法論
•バックエンドサービスをリソースとして扱い、アプリケーションにはそれをアタッチする
![Page 24: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/24.jpg)
Open Service Brokerとは
![Page 25: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/25.jpg)
すべてをコンテナ化するk8s、しかし・・・• KubernetesはStateful Setsなどの機能により、SoRな仕組みもホストできるようになりつつある。•しかし、無理にk8sの中で動かすのではなく、マネージドサービスを使った方がいいケースは往々にしてある。• たとえばメールサーバーなんて誰もホストしたくない。SendGridやAmazon
SESを使いたい• DBの運用をコンテナ内でしたくない、RDS使いたい• NewRelic、Datadogなどなど便利なサービスもいっぱいある。
![Page 26: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/26.jpg)
コンテナだってMarketplaceしたい!• Marketplaceの考え方はk8sでも活用できる• Service Brokerよく出来てるから、他でも使えるようにしよう!•でも、Cloud Foundry前提に作られている・・・
![Page 27: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/27.jpg)
organization_guidやspace_guidなど、Cloud Foundry固有のパラメータが必須になっている
例えば・・・
![Page 28: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/28.jpg)
Open Service Broker APIプロジェクト•さまざまな実装に対応した仕様を定める•テストスイートを作成する•この仕組みを広める
![Page 29: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/29.jpg)
CF固有のパラメータはdeprecatedにして、contextという汎用的、かつOptionalなパラメータを導入
例えば・・・
![Page 30: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/30.jpg)
ガバナンス
![Page 31: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/31.jpg)
実装
現在
![Page 32: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/32.jpg)
例えば、Trove Service Brokerなんてもアリかもしれない
![Page 33: CFの便利機能を他の環境でも。Open Service Broker](https://reader034.vdocuments.site/reader034/viewer/2022052116/5a6d02b87f8b9ade418b49a5/html5/thumbnails/33.jpg)
まとめ• Service BrokerはCFの強力な機能•エコシステムを広げるため、CF以外に解放。それがOpen Service Broker• Kubernetesでも、近い将来使えるようになるはず!