2016-12-05 14 views
1

Cloud FoundryでSaaSアプリケーション用のサービスブローカーを実装しています。Cloud Foundry for SaaS

私のSaaSアプリケーションの作成サービスでは、別のサービス(サービスAと言う)のインスタンスも作成します。私のアプリケーションに搭載されているテナントごとに、別のサービス(サービスA)の新しいサービスインスタンスも作成されます。

新しく作成されたサービスインスタンス(service-A)の詳細は、環境変数を介してサービスブローカに渡されます。

この新しく注入された環境変数を処理できるようにするには、サービスブローカを再起動または再起動する必要があります。

これは、新規ブローカーのすべてのお客様のサービスブローカーの休暇を意味します。

私は以下の質問があります: 1)これらの種類のユースケースは、Cloud Foundryでどのように処理されますか? 2)Cloud Foundryが環境変数を使用してサービスの使用に必要な情報を渡す理由を選択した理由アプリケーションを再起動する必要があるため、制限されているようです。

答えて

1

最初の推測として、あなたのサービスは、顧客に提供される何らかのAPIである可能性があります。このAPIは、送信されたデータをデータベース(MongoDbやMysqlなど)に保存する必要があります。したがって、MongoDbまたはMysqlはあなたがService-Aと呼ぶものになります。

お客様のAPIエンドポイントのパフォーマンスを互いに独立させたい場合は、お客様のサービスごとに、つまりサービスの各サービスインスタンスごとに専用のデータベースをプロビジョニングしています。

サービスブローカーの環境からこれらのデータベースへの資格情報を取得する場合は、サービスブローカーをリストアする必要があります。あるいは、少なくともVCAP_SERVICES環境変数を再読み込みする必要があります。しかし、別の解決方法があります:

CC-APIを使ってサービスを作成し、好きなアプリケーションにバインドします。次に、このアプリケーションのバインディングを照会するためにCC-APIを再度使用します。これには資格情報が含まれます。ここでは、このエンドポイントのAPIドキュメントへのリンクです:

https://apidocs.cloudfoundry.org/247/apps/list_all_service_bindings_for_the_app.html

+0

返事をありがとう。 CC-APIを共通に使用していますか?あなたの経験から何か悪い面はありますか? – Abhinav

+0

私はこれがかなり一般的なシナリオだと思います。また、cf cliはバックグラウンドでCC-APIを使用します。このAPIの難しい点は、認証にoauthを使用することです。しかし、私はあなたのためにこれを行うことができるライブラリがあると思います。 – user152468

+0

CloudController APIライブラリ、特にJavaのものがあります。https://github.com/cloudfoundry/cf-java-client –

1

「正しい」方法でサービスを利用していないようです。あなたのユースケースについてさらに詳しく説明するのは非常に難しいです。たとえば、ブローカーにこの追加サービスを添付する必要があるのはなぜですか?

あなたの質問にお答えします:

1)これは似ていません。データをバッキングサービスとして使用するのではなく、サービスバインディングを使用してデータを表現しています。多くのサービスブローカーは、カサンドラクラスターのようなものを動的にプロビジョニングする必要がありますが、カッサンドラクラスターがどのCFサービスに属しているかについては、独自のデータストアに保持しています。ブローカーは、それが作成を担当するそれぞれのものにバインドしません。

2)12 Factor applications should treat backing services as attached, static resourcesです。実行中のアプリケーションに新しいMySQLデータベースを追加するのは普通ではありません。

+0

はカサンドラの例では、デフォルトではサービスが彼らのために予約され、いくつかのクラスタを持っていることを意味ですか?サービスブローカーがもう1つのクラスタを必要とする場合はどうなりますか?ブローカーが必要なときにクラスターを予約するべきではありませんか? – Abhinav

+0

これはService Brokerの実装に依存する非常に具体的な質問です。より洗練されたブローカーは、BOSHやその他の手段で新しいVMをプロビジョニングします。 私はあなたが達成しようとしていること、または自分のサービスを自分のアプリケーションにバインドするだけでなく、なぜブローカに追加のサービスインスタンスをプロビジョニングする必要があるのか​​理解していません。 –

+0

私のユースケースは、他の答えでuser152468で言及されたものと似ています。この種のユースケースには何らかの欠陥がありますか? – Abhinav

関連する問題