What have you found for these years?

2011-04-20

VMware CloudFoundry

乍看之下還真不知道這是要做什麼的...

Cloud Foundry - Make it Yours!
Learn more on Cloud Foundry

翻了一陣子,加上讀了一些他們的 source code, 才大概覺得,
可能是想做比 EC2 高階,但又比 Heroku 低階的東西吧。

程式碼看起來寫得還有點草莽,沒有很好看,不過也不至於太糟,
感覺是才剛開始做。或是說,本來 open source 前就不會把他
寫得太過好看?但至少既然這是 VMware 領軍在做的,應該值得關注吧。

如果真的做起來,我個人覺得對這個世界很有幫助.....
軟體世界有太多無謂的重造輪子了。有些當然是很有意義的,
但很多真的只是浪費時間和資源而已..

我個人最感興趣的部份是,他是怎麼跑我們要的 application?
翻網站總是翻不到什麼,直接看程式永遠是最快的...

Use the source, Tux!

於是根據他的使用範例,加上調查他的 command line tool,
(vmc push env --instances 4 --mem 64M --url env.vcap.me -n)
可以找到他 upload_app 的定義。可以很明確看出來,是先把
application zip 起來,然後 HTTP POST 至 vcapcloud_controller.
vcap 應該就是整個 infrastructure 吧,而 cloud_controller 則是
web service 之類的,是用 rails 3 寫的。其他一些比較小的 web
interface 則是 sinatra 寫的。真遺憾不是全部 sinatra.. XD

於是可以再追到 AppsController#update 的定義。接著可以看到,
事情交給 App#latest_bits_from 去處理。接著他只是把
App#package_state 改寫成 'PENDING', 然後更新
App#package_hash 成新的 zip file 的 SHA1 hash...

也就是說,接下來大概就是交給某個 worker 讀出這個 zip file,
然後更新 app_package. 我想這等同於 Heroku 的 slug 吧。

不過再下來變得好複雜,我有點懶得繼續追查了.. 目前沒找到 worker 的
部份,但是找到做 staging 的那段程式。光這邊就很複雜了,步驟很多,
這段程式似乎是直接寫在 rails 裡,然後用 Fiber 來做 event-driven
blocking code..

另外則是 dea, 看起來是拿來跑 application 的 server, 直接寫在
eventmachine 上面。裡面 secure/sandbox 的部份做得非常複雜,
是直接針對 linux or mac (darwin) 寫的,連 bsd 都不支援。

也可以看看 Grigorik 的 VMware CloudFoundry: Ruby powered PaaS
還有 RightScale 的 Cloud Foundry Architecture and Auto-Scaling

buzz

0 retries:

Post a Comment

All texts are licensed under CC Attribution 3.0