Cloud Platform要提供的是與雲端軟體有關的APIs以及開發介面,讓軟體可以和基礎建設連結,它還負責將基礎建設提供的資源進行抽象化,雲端軟體的開發人員只要透過由Platform抽象化後的APIs即可使用基礎建設內的各式資源,無須了解基礎建設的實作細節。
我們在前一天簡單介紹了Cloud Infrastructure,今天我們來介紹一下Cloud Platform,也就是Platform as a Service,如果要將Cloud Computing的架構比喻成一台電腦的話,昨天介紹的Cloud Infrastructure是硬體,明天將介紹的Cloud Software是應用程式,而Cloud Platform就是作業系統了,沒錯,Cloud Platform要提供的是與雲端軟體有關的APIs以及開發介面,讓軟體可以和基礎建設連結,它還負責將基礎建設提供的資源進行抽象化,雲端軟體的開發人員只要透過由Platform抽象化後的APIs即可使用基礎建設內的各式資源,無須了解基礎建設的實作細節。
以Google App Engine為例,Google的Platform提供了Google Data APIs,開發人員只需要運用這些API來開發程式即可,無須知道他們資料是怎麼存取的,包含BigTable與GFS(Google File System)這些技術,Google Data APIs已經將這些I/O的細節完全抽象化,故開發人員只需了解這些API的用法,對於細節部份則無須著墨,就像作業系統上的APIs一樣,應用程式開發人員不需要知道作業系統的核心細節,即可以完成許多工作(例如Inter-process Communication, Sockets, Process/Threads, …)。
Cloud Platform通常都會要求開發人員使用特定的語言,像是Force.com(Salesforce.com的PaaS)僅可使用Apex(少數可用Java)語言開發,Google App Engine則是支援Java與Python的開發,微軟的Windows Azure Platform則是以VB與C#為主,但也有提供Java與PHP的開發支援,而語言的使用會是開發人員選擇Cloud Platform的因素之一,另一個則是支援資訊(文件,範例程式等)的充份與否,各家Cloud Platform廠商都有提供充份的開發技術資源給開發人員參考使用。
Cloud Platform通常會提供不同的應用程式開發支援服務,就像作業系統必須提供應用程式電腦資源一樣,像是運算與儲存這種基本要求,或是資料庫與帳戶管理等不同的特殊資源,不同的Cloud Platform會提供不同的應用程式支援:
這些應用程式支援都會提供簡單的API介面給開發人員,以隱藏在API之下高度複雜的API邏輯以及資料實際儲存與處理的工作,雲端服務供應商多半都會提供元件或是開放式的HTTP REST API來給開發人員自由存取,請記住,開發雲端應用程式和在本機開發完全不同,要對網路應用程式開發有相關的知識或經驗,尤其是HTTP的通訊以及存取。若沒有開發HTTP通訊應用程式的經驗的話,可能會在發展雲端應用時碰到阻礙,不過雲端的Cloud Platform供應商都會想辦法降低這阻礙發生的機會。
為了要吸引開發人員使用其Cloud Platform,雲端供應商通常都會釋出輔助的套件來幫助開發人員使用,以微軟為例,Visual Studio Tools for Windows Azure以及Windows Azure SDK就很有效的輔助了.NET開發人員開發Windows Azure應用程式,並降低發展Windows Azure Platform應用程式的門檻,開發人員不須付出太多的學習成本即可將開發經驗由本機延伸到Windows Azure雲端應用上。
還有一點要強調的是,雲端應用程式並不像本機應用程式一樣,只要開除錯器就能快速偵錯,雲端應用程式並不是儲存在本機上,若要像除錯本機應用程式般,那麼光是網路通訊以及放在雲端上的運算成本就不划算,因此請務必記住,任何雲端應用程式都必須要測試過,才可以放到雲端做進一步的測試,而不是想到就丟上雲端測試,那樣不但不符合成本
效益,也會讓自己花費太多無謂的時間在網路傳輸上。
Reference:
http://wiki.developerforce.com/index.php/Documentation