Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

5,179 views

Published on

OpenStack Daysで発表した資料です

Published in: Technology
  • Be the first to comment

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

  1. 1. CFのあの便利機能を 他の環境でも。 Open Service Broker
  2. 2. Pivotal Japan - Platform Architect Kazuto Kusama @jacopen
  3. 3. Open Service Brokerの前に Service Brokerの話をしよう
  4. 4. イメージしてみよう
  5. 5. アプリ開発した!DBも用意して動かそう! ① DBを作る VM/ベアメタルにインストールしたり RDSのようなManagedサービス使ったり
  6. 6. アプリ開発した!DBも用意して動かそう! host: aaa.bbb.ap-northeast-1.rds.amazonaws.com:5432 db: production user: mssql pass: xxxxx ① DBを作る VM/ベアメタルにインストールしたり RDSのようなManagedサービス使ったり ② コンフィグを控える ホスト名orIP、DB名、ユーザー名、 パスワードは最低限控えておく必要がある
  7. 7. アプリ開発した!DBも用意して動かそう! host: aaa.bbb.ap-northeast-1.rds.amazonaws.com:5432 db: production user: mssql pass: xxxxx db: host: aaa.bbb.ap-northeast-1.rds.amazonaws.com:5432 name: production user: mssql pass: xxxxx ① DBを作る VM/ベアメタルにインストールしたり RDSのようなManagedサービス使ったり ② コンフィグを控える ホスト名orIP、DB名、ユーザー名、 パスワードは最低限控えておく必要がある ③ アプリのコンフィグを修正 アプリのコンフィグファイルに②を記述。 より汎⽤的にするなら、環境変数から読み込むように することも。
  8. 8. アプリ開発した!DBも用意して動かそう! host: aaa.bbb.ap-northeast-1.rds.amazonaws.com:5432 db: production user: mssql pass: xxxxx db: host: aaa.bbb.ap-northeast-1.rds.amazonaws.com:5432 name: production user: mssql pass: xxxxx ① DBを作る VM/ベアメタルにインストールしたり RDSのようなManagedサービス使ったり ② コンフィグを控える ホスト名orIP、DB名、ユーザー名、 パスワードは最低限控えておく必要がある ③ アプリのコンフィグを修正 アプリのコンフィグファイルに②を記述。 より汎⽤的にするなら、環境変数から読み込むように することも。 ④ 起動!
  9. 9. アプリ開発した!DBも用意して動かそう! host: aaa.bbb.ap-northeast-1.rds.amazonaws.com:5432 db: production user: mssql pass: xxxxx db: host: aaa.bbb.ap-northeast-1.rds.amazonaws.com:5432 name: production user: mssql pass: xxxxx ① DBを作る VM/ベアメタルにインストールしたり RDSのようなManagedサービス使ったり ② コンフィグを控える ホスト名orIP、DB名、ユーザー名、 パスワードは最低限控えておく必要がある ③ アプリのコンフィグを修正 アプリのコンフィグファイルに②を記述。 より汎⽤的にするなら、環境変数から読み込むように することも。 ④ 起動!
  10. 10. Cloud Foundryの解決方法 Marketplace
  11. 11. CF CLIでDBを作成し、アプリに紐付ける例 cf push frontend (1) cf create-service p-mysql 100mb-dev mydb (2) cf bind-service frontend mydb (3) Frontend Application ① フロントエンドアプリをpush ② DBを作成(marketplaceのp-mysqlを選択) Frontend Application DB ③ アプリとDBを紐付け(バインド) Frontend Application DB
  12. 12. CF CLIでDBを作成し、アプリに紐付ける例 cf push frontend (1) cf bind-service frontend mydb (2) Backend Application ① フロントエンドアプリをpush ② アプリとDBを紐付け(バインド) Frontend Application DB Backend Application
  13. 13. イケてる 😃
  14. 14. Marketplaceのメリット • バックエンドサービスのプロビジョニングとコンフィグレーション が自動化できる • どのサービスも同じインタラクションで利用できる この仕組みを実現するのがService Broker
  15. 15. Service Broker • Cloud FoundryでMarketplaceを実現したい! • Cloud Foundryと外部サービスを中継する仕組みが要るよね • 中継する仕組みが備えるべきAPIをService Broker APIとして定義 • Service Broker APIを実装した中継くんをService Brokerと呼ぶ
  16. 16. Service Broker for AWS create-service aws-rds-oracle service broker API AWS API responseresponse
  17. 17. Service Broker for AWS bind-service aws-rds-oracle service broker API configuration アプリケーションには環境変数で 必要なコンフィグが渡される configuration AWS API
  18. 18. Service Broker for AWS create-service aws-rds-oracle create-service aws-rds-postgres create-service aws-rds-aurora create-service aws-dynamodb create-service aws-s3 どのAWSのサービスも同じインタラクションで作成可能
  19. 19. Service Broker for AWS MySQL for PCF Broker GCP Service Broker New Relic Service Broker さまざまなBrokerを登録することで どのサービスもcreate service, bind-serviceで 作成とバインディングができる
  20. 20. Service Brokerの良さ • Service Brokerの設計や思想は非常にシンプルであり、かつ実用的 • 後付けする形でCloud Foundryの機能を拡張していける • Cloud Foundryの強さの要因の一つ
  21. 21. 12 Factor App • スケールし、クラウドに適したアプリを構築するための12の方法論
  22. 22. バックエンドサービスをリソース化 • 12 Factor AppのIV項「バックエンド サービス」で説かれている方法論 • バックエンドサービスをリソースと して扱い、アプリケーションにはそ れをアタッチする
  23. 23. Open Service Brokerとは
  24. 24. すべてをコンテナ化するk8s、しかし・・・ • KubernetesはStateful Setsなどの機能により、SoRな仕組みもホスト できるようになりつつある。 • しかし、無理にk8sの中で動かすのではなく、マネージドサービスを 使った方がいいケースは往々にしてある。 • たとえばメールサーバーなんて誰もホストしたくない。SendGridやAmazon SESを使いたい • DBの運用をコンテナ内でしたくない、RDS使いたい • NewRelic、Datadogなどなど便利なサービスもいっぱいある。
  25. 25. コンテナだってMarketplaceしたい! • Marketplaceの考え方はk8sでも活用できる • Service Brokerよく出来てるから、他でも使えるようにしよう! • でも、Cloud Foundry前提に作られている・・・
  26. 26. organization_guidやspace_guidなど、 Cloud Foundry固有のパラメータが必須になっている 例えば・・・
  27. 27. Open Service Broker APIプロジェクト • さまざまな実装に対応した仕様を定める • テストスイートを作成する • この仕組みを広める
  28. 28. CF固有のパラメータはdeprecatedにして、 contextという汎用的、かつOptionalなパラメータを導入 例えば・・・
  29. 29. ガバナンス
  30. 30. 実装 現在
  31. 31. 例えば、Trove Service Brokerなんてもアリか もしれない
  32. 32. まとめ • Service BrokerはCFの強力な機能 • エコシステムを広げるため、CF以外に解放。 それがOpen Service Broker • Kubernetesでも、近い将来使えるようになるはず!

×