2013-04-29 186 views
51

所以我一直在讀Cloud Foundry,但我仍然對它是什麼感到困惑。無論如何,我還是要關注CF上的PaaS,希望你們能告訴我我是否錯了,並且解釋它好一些。Cloud Foundry解釋

像Microsoft Azure或Google AppEngine這樣的傳統PaaS產品提供了開發,測試,託管和管理您的Web應用程序的完整平臺。然而,您必須使用他們的API並且僅限於他們提供的服務以及他們支持的語言/框架。

Cloud Foundry似乎是某種「中間人」,它允許您的應用使用來自許多公共雲的服務。它是如何完成的?是否有您使用的單個API,如LibCloud或JCloud?例如,您可以使用來自一個提供商的一項服務,以及來自另一個提供商的另一項服務嗎Cloud Foundry本身是否提供任何服務?還是僅僅是允許您輕鬆從一個平臺遷移到另一個平臺的中間人,並且在單個應用程序中使用來自不同提供商的不同服務組合?

回答

73

我是Cloud Foundry的開發人員 - 是的,Cloud Foundry的確有點模糊(沒有雙關語意思)。希望我能幫助澄清一些事情。

Cloud Foundry是platform as a service,但它下面需要infrastructure as a service。 Cloud Foundry通過BOSH工具支持vSpherevCloudOpenStackAmazon AWS作爲基礎結構。大多數Web應用程序開發人員都不關心這些,但對於那些不必擔心大型IT基礎架構的人來說,這非常酷。

假設您負責AcmeCorp的IT工作。你有5萬名員工都使用你的內部網絡服務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提供的服務,那麼當您在基礎設施之間遷移時,就不必擔心這些問題。

後來,你意識到你可以通過將Fizzbuzz賣給其他大型企業來發財。您的狀況非常好:因爲您的工程師重新架構Fizzbuzz以在Cloud Foundry上運行,您只需將Cloud Foundry部署到AWS即可。客戶試用了六個月,並決定不續約服務?沒問題,您沒有任何數據中心租賃問題 - 只需終止所有這些EC2實例並繼續前進。您可以輕鬆地爲每個Fizzbuzz實例提供一次Cloud Foundry部署即服務,以便您的客戶數據完全相互隔離。

Cloud Foundry是開放源代碼的錦上添花。如果您發現它不太適合您的需求,則不必僅僅通過電子郵件向支持人員發送電子郵件,並等待Cloud Foundry工程師實施您的夢想功能 - 您也有源代碼,以便您可以製作任何你需要的改變。它可以在the Apache 2.0 license下使用,所以拉取請求很樂意接受,雖然不是必需的。

我希望畫種的是Cloud Foundry的解決問題的圖片。隨意在評論中詢問更多細節,或者如果這對於將來的問題更有意義,您可以查看Cloud Foundry mailing list

+0

什麼仍然是模糊的定價? cf stack是免費的,你付了什麼?有沒有發現? :) – Tomo 2014-11-09 20:41:55

+0

馬克,很好的信息。如果AcmeCorp不斷預置部署Fizzbuzz的新實例,每個實例緩存,消息,日誌記錄,數據庫連接,環境變量等略有不同的配置,可這些配置被參數化,並在自助服務控制檯曝光CloudFoundry,允許開發團隊按照他們認爲合適的方式配置和部署Fizzbuzz的新實例? – raffian 2014-11-10 04:36:06

+0

寫得很好... – underdog 2015-06-17 10:32:40

20

我是Cloud Foundry的一個開發人員代表,並希望加少許馬克的回答集中於一些你在你原來的問題中提到的其他細節。

首先,您提到GAE和Azure。這兩者都有一定的侷限性 - 例如,GAE限制您使用特定的語言和API。都不是開放源代碼。 CF是可擴展的(例如,新版本具有buildpack支持,使您可以選擇「任何」語言運行庫),並且您可以選擇在需要的位置運行它。

Mark提到4個IaaS提供商,我們今天可以運行CF,但假設有問題的IaaS(假設我們包含Azure,CloudStack,Google Compute Engine等作爲未來目標)可以支持少量我們稱之爲雲提供商接口(CPI),那麼您也可以將Cloud Foundry部署到這些基礎架構上。

您問如何使用來自不同提供商的服務。與Heroku一樣,即將推出的Cloud Foundry(.com)版本將支持可從其他供應商插入功能的「市場」,如果您正在運行自己的Cloud Foundry實例,則可以選擇要部署和連接到應用程序的服務。

它很酷:-)再來說說我們的郵件列表,如果你想了解更多!

+0

感謝從我的答案,安迪填補空白! – 2013-05-04 02:34:08

+0

感謝你們倆,馬克和安迪!然而,我仍然對API有一個疑問。 Cloud Foundry提供的某種通用API允許我的應用程序本身是通用的,因爲我的代碼可以與我選擇的任何IaaS服務一起運行?哦,雖然我在這裏,是否有任何代碼教程可以告訴我如何開始? – Amoeba 2013-05-17 12:35:32

+0

沒有您需要擔心的「Cloud Foundry API」。如果你對一個死的標準node.js,Grails,Ruby等應用程序,那麼你應該能夠將它推到CF上,而無需任何特殊的代碼更改。 在教程,你可以看看docs.cloudfoundry.com – 2013-05-21 13:53:49

6

想補充這是關於API安迪的回答評論但遺憾的是沒有足夠的信譽來做到這一點。據我瞭解,Cloud Foundry確實沒有特定的API,但它通過環境變量(例如VCAP_SERVICES, VCAP_APPLICATION, VCAP_CONSOLE_IP, VCAP_APP_PORT)提供了許多有用的信息,可以從任何語言或框架訪問。儘管來自這些變量的大量信息是Cloud Foundry的內部信息,但其中一些信息可能非常有用。主要的是VCAP_SERVICES,它提供了綁定到你的應用的服務信息。例如,如果我想收集有關Azure雲服務實例(例如,其ID)的信息,那麼我的應用程序當前正在運行該實例,我將使用Azure管理庫中的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級別上實現,但我希望這會實現(因爲它是一個非常有用的功能),也許還有一些新的env。變量(如VCAP_LOGS, VCAP_PERFORMANCE_COUNTERS)將會暴露給我們的應用程序。

+1

如果您無法發表評論,則不應將答案用作其他選項。不過,我相信這是合法的,因爲你正在改進答案。我會建議在將來而不是提出新的答案,建議對現有答案進行編輯。 – 2013-07-26 11:09:51

+0

「據我瞭解的Cloud Foundry真的還沒有具體的API」 - 事實上,它的確,雲控制器API(這裏http://docs.cloudfoundry.com/docs/reference/cc-api.html記錄)。 「關於日誌,監控和診斷的幾句話,目前尚未在CF PaaS級別上實現」 - 這些功能正在通過正在開發的Loggregator添加。 – 2013-07-31 15:22:05

+1

那麼,據我所知,提到的API不是PaaS管理API(其原因是在CF中實現並在Andy提供的鏈接中描述),而是從部署的應用程序角度(API可以由已部署的應用程序調用)。沒有這樣的應用程序API(基本上,據我所知,因爲支持大量的框架)。請糾正我,如果我錯了。 – 2013-08-01 11:42:08

2

當然CF是您的IaaS(服務器,存儲和網絡)和應用程序之間的抽象層,讓您的便攜移動公共雲和私有云中的應用程序,但它也更:

1 。高度水平可擴展的基於容器的平臺

Apps可以在容器允許,而不是主機(VM)的應用分配更好的資源管理運行。守望者/花園是CF本地容器技術,儘管最近版本也支持Docker。

2.自愈平臺提供HA的多層到您的應用程序

健康管理體系復活失敗的應用實例,容器主機,平臺流程以及虛擬機,沒有中斷。可用區域支持在基礎架構層提供HA。即使在部署或平臺升級期間,滾動更新和金絲雀部署也可實現零停機時間。

3.一種固執,通曉應用運行時

使用的Heroku「buildpack」構建體,應用程序語言是自動檢測和適當的運行時棧上建立一個香草OS映像的頂部,允許開發人員專注於編寫代碼。的狀態數據服務

4.開發者按需配置

開發者可以自行提供一個MySQL,RabbitMQ的,Redis的,等與URI /憑證集羣切片自動注入到他們的應用程序的環境。