web-dev-qa-db-ja.com

Cloud Foundryの説明

だから、私はCloud Foundryを読んでいますが、それが何であるかについてはまだ混乱しています。とにかく、CFでのPaaSについての私の見解を示します。うまくいけば、皆さんが私が間違っているかどうかを教えてくれて、それを少し良く説明できるといいのですが。

Microsoft AzureやGoogle AppEngineのような従来のPaaSは、Webアプリを開発、テスト、ホスト、管理するための完全なプラットフォームを提供します。ただし、APIを使用する必要があり、提供するサービスとサポートする言語/フレームワークに制限されます。

Cloud Foundryは、ある種の「ミドルマン」のようです。これにより、アプリで多くのパブリッククラウドのサービスを使用できるようになります。これはどのように達成されますか? LibCloudやJCloudのような単一のAPIを使用していますか?たとえば、あるプロバイダーの1つのサービスと別のプロバイダーの別のサービスを使用できますか?また、Cloud Foundry自体がサービスを提供していますか?それは単に1つのプラットフォームから別のプラットフォームに簡単に移行し、単一のアプリで異なるプロバイダーの異なるサービスの組み合わせを使用できるようにする仲介者ですか?

60
Amoeba

私はCloud Foundryの開発者です-はい、Cloud Foundryは確かに少し曖昧です(しゃれはありません)。うまくいけば、物事を少し明確にすることができます。

Cloud Foundryは サービスとしてのプラットフォーム ですが、サービスとして インフラストラクチャが必要です その下。 Cloud Foundryは、 vSpherevCloudOpenStack 、および Amazon AWS[〜# 〜] bosh [〜#〜] ツール。ほとんどのWebアプリケーション開発者はそのことを気にしませんが、これは大規模なITインフラストラクチャを心配する必要がある人にとっては本当にクールです。

AcmeCorpのITを担当しているとします。 50,000人の従業員がいます。全員が社内のWebサービスであるFizzbuzzを使用して仕事を支援しています。すべての従業員をサポートするには、強力なプロセッサと大量のメモリを備えた複数のマシンで実行されるFizzbuzzアプリケーションのインスタンスが多数必要です。また、使用するFoo、Bar、Bazアプリケーションによって生成された情報を保存するために大量のディスクスペースが必要です内部的にも。自分のブレードサーバーで管理したいものをはるかに超えたので、データセンターをリースすることにしました。

残念ながら、AcmeCorpは恐ろしく機能不全です。財務部門は、使用するデータセンターについて大きな発言権を持ち、数年ごとにデータセンター間を切り替えます。数年ごとに、数週間のダウンタイムがあり、エンジニアがvSphere、vCloud、OpenStackなどを切り替えることによって公開されたFizzbuzzのバグを修正しようとします。

エンジニアが基盤インフラストラクチャに対して直接ではなく、Cloud Foundryに対してFizzbuzz、Foo、Bar、およびBazを記述した場合、ダウンタイムは最小限に抑えられます。特定のデータセンターにロックインされることについてそれほど心配する必要はありません。ホスティング層はCloud Foundryによって抽象化されているためです。 Cloud Foundryは、PostgreSQL、MySQL、Mongo、Redis、RabbitMQなど、特定のサービスセットもサポートしています。 Foo、Bar、およびBazがCloud Foundryが提供するサービスを使用する場合、インフラストラクチャ間を移行するときに心配する必要はもう1つ少なくなります。

後に、Fizzbuzzを他の大企業にサービスとして販売することで、大金を稼ぐことができることに気づきます。これは本当に良い状態です。エンジニアがFizzbuzzを再設計してCloud Foundryで実行するため、必要な限りCloud FoundryをAWSに簡単にデプロイできます。顧客は6か月間試用し、サービスを更新しないことに決めましたか?問題ありません。心配するデータセンターのリースはありません。すべてのEC2インスタンスを終了して先に進みます。サービスとしてFizzbuzzのインスタンスごとに1つのCloud Foundryを簡単に展開できるため、顧客のデータは互いに完全に分離されます。

ケーキのアイシングは、Cloud Foundryがオープンソースであることです。ニーズにあまり適していないことがわかった場合は、サポートにメールを送信して、Cloud Foundryのエンジニアが夢の機能を実装するのを待つ必要はありません。ソースも入手できるので、必要な変更。そして、それは Apache 2.0ライセンス の下で利用できるので、プル要求は喜んで受け入れられますが、必須ではありません。

Cloud Foundryが解決する問題の種類の絵を描くことを願っています。コメントで詳細を尋ねるか、将来の質問にもっと意味がある場合は、 Cloud Foundryメーリングリスト をチェックしてください。

84
Mark Rushakoff

私はCloud Foundryの開発者であり、Markの回答に少し追加して、元の質問で言及した他の詳細に焦点を当てたいと思います。

まず、GAEとAzureに言及します。どちらにも特定の制限があります-GAEでは、たとえば特定の言語やAPIに制限されます。オープンソースでもありません。 CFは拡張可能で(新しいバージョンではビルドパックがサポートされているため、「任意の」言語ランタイムを選択できます)、必要な場所で実行することを選択できます。

Markは今日CFを実行できる4つのIaaSプロバイダーに言及していますが、問題のIaaS(Azure、CloudStack、Google Compute Engineなどを将来のターゲットとして含める)が少数のクラウドプロバイダーインターフェイス(CPI)をサポートできると仮定しています)その後、それらのインフラストラクチャにもCloud Foundryを展開できます。

さまざまなプロバイダーのサービスをどのように使用できるかを尋ねます。 Herokuのように、Cloud Foundry(.com)の今後のバージョンは、追加のベンダーの機能をプラグインできる「マーケットプレイス」をサポートします。独自のCloud Foundryインスタンスを実行している場合は、アプリをデプロイして接続するサービスを選択できます。

それはかなりクールです:-)詳細を知りたい場合は、メーリングリストで私たちと話してください!

23
Andy Piper

これをAPIに関するコメントとしてAndyの答えに追加したいのですが、残念ながらそれを行うのに十分な評判がありません。私の知る限り、Cloud Foundryには特定のAPIはありませんが、環境変数を介して多くの有用な情報を提供します(例:VCAP_SERVICES, VCAP_APPLICATION, VCAP_CONSOLE_IP, VCAP_APP_PORT)、任意の言語またはフレームワークからアクセスできます。このような変数からの多くの情報はCloud Foundryの内部にありますが、それらの一部は非常に役立つ場合があります。主なものは VCAP_SERVICES これは、アプリにバインドされているサービスに関する情報を提供します。

たとえば、アプリが現在実行されているAzure Cloud Serviceインスタンスに関する情報(IDなど)を収集する場合、Azure Management Libraryの this クラスを使用します。

その順番で、Cloud FoundryはVCAP_APPLICATION envを提供します。変数。次のフィールドが含まれます。

{"application_users": [],
"instance_id":"97467a9cf508cb75273284b948b6319b",
"instance_index":1,
"application_version":"330b7caf-50e5-48f4-8792-1c80a90b06f1",
"application_name":"helloworld",
"application_uris":["helloworld.vcap.me"],
"started_at":"2013-07-22 10:58:16 +0300",
"started_at_timestamp":1374479896,
"Host":"0.0.0.0",
"port":61014,
"limits":{"mem":256,"disk":1024,"fds":16384},
"version":"330b7caf-50e5-48f4-8792-1c80a90b06f1",
"name":"helloworld",
"uris":["helloworld.vcap.me"],
"users":[],
"start":"2013-07-22 10:58:16 +0300",
"state_timestamp":1374479896}

そして最後に、ログ、監視、診断に関するいくつかの言葉。現在、これはCF PaaSレベルでは実装されていませんが、これが実装されることを期待しています(本当に便利な機能であるため)。変数(たとえばVCAP_LOGS, VCAP_PERFORMANCE_COUNTERS)はアプリに公開されます。

6
Pavel K

確かにCFはIaaS(サーバー、ストレージ、ネットワーク)とアプリケーションの間の抽象化レイヤーであり、パブリッククラウドとプライベートクラウドの間でアプリを移動するための移植性を提供しますが、それだけではありません:

1。非常に水平方向に拡張可能なコンテナベースのプラットフォーム

アプリはコンテナで実行されるため、アプリをホスト(VM)に割り当てるよりも優れたリソース管理が可能になります。 Warden/GardenはCFネイティブコンテナーテクノロジーですが、最近のバージョンではDockerもサポートされています。

2。アプリケーションに複数のHA層を提供する自己修復プラットフォーム

正常性管理システムは、停止することなく、失敗したアプリインスタンス、コンテナホスト、プラットフォームプロセス、およびVMを復活させます。可用性ゾーンのサポートにより、インフラストラクチャレイヤーでHAが提供されます。ローリングアップデートとカナリアデプロイにより、デプロイまたはプラットフォームのアップグレード中であっても、ダウンタイムをゼロにできます。

。独断的な多言語アプリケーションの実行時

Herokuの「buildpack」コンストラクトを使用して、アプリ言語が自動検出され、適切なランタイムスタックがVanilla OSイメージの上に構築されるため、開発者はコードの記述に集中できます。

4。ステートフルデータサービスの開発者オンデマンドプロビジョニング

開発者は、アプリの環境に自動的に挿入されたuri/credentialsを使用して、MySQL、RabbitMQ、Redisなどのクラスターのスライスを自己プロビジョニングできます。

4
zachb317