將應用程式的「後端」放置於「雲端」之上執行,看起來已經是許多開發者的主要選項之一了,尤其是置於公有的雲端平臺之上。

因為這麼做有一些好處,很具吸引力,像是初期投入成本低,只需要隨著用量多寡來支付費用即可,而且隨著服務規模提升,也容易隨時添加資源以因應規模的增長。

再者,雲端平臺上提供的各種現成資源,也可以讓開發者省去開發一些應用程式中的「基礎設施」,因而得以加快應用程式的開發速度。

不過,若要在雲端計算平臺上開發自有的應用程式時,多半還得從兩種選項中挑出一個。第一種是選擇在所謂的IaaS(Infrastructure as a Service)層次上,而第二種則是在PaaS(Platform as a Service)之上。當然,在前一陣子,我們還介紹了在雲端提供「後端(backend)」服務的BaaS(Backend as a Service)的型態,針對行動裝置App、物聯網裝置應用開發等需要後端環境服務的需求,推出雲端資料儲存/分析與後臺操作等服務,近年來Facebook和Google也分別透過收購Parse與Firebase這類BaaS公司來搶占這塊市場,這也為開發團隊提供了第三種雲端平臺新選項。

那麼,對開發者來說,究竟應該如何抉擇呢?

立足於PaaS,長久一來一直是我認為很不錯的選擇,因為PaaS可以提供一個高階的開發及運行環境,在這個高階的環境裡,許多開發時的基礎設施都被封裝起來了,這使得開發者毋需面對一些較為低階的技術底層,一來開發的觀點可以放在比較高階的層次,二來自己也不需花時間去打造這些技術底層。

此外,之所以想在雲端上運行,規模可擴充性絕對是很重要的原因之一。而在 PaaS 之上,平臺本身通常已經解決掉許多涉及規模可擴充性的議題,像是伺服器資源的自動擴展、多伺服器運作時的容錯及負載平衡……等等。

特別是有些PaaS,還提供了高度可擴充規模的資料存取架構,更使得在此類的PaaS之上開發,可以更輕易地操作大規模的資料,卻不需要花費心思在資料存取效率之上,這是極具吸引力的一點。例如Google著名的PaaS平臺──Google App Engine,即提供應用程式操作BigTable式的資料儲存庫,即使資料量極大,操作仍能有其效率。

但是,在這幾年來,PaaS上的開發看起來一直沒有成為主流,即使是像Google App Engine 這樣的平臺,也一直沒有成為開發者選項的主力。看起來,開發者仍然是偏好IaaS勝過於PaaS。

在PaaS上的開發有其優勢,但是這其中究竟存在什麼問題,使得開發者不願意做此抉擇呢?

就拿我們團隊來說,多年前也曾選擇將一組服務置於Google App Engine上,但運行這些年來,最後也決定將其撤離,使用運行於IaaS上的等價實作品予以取代。

為什麼用PaaS的人數始終無法提高?用法、成本、怕被綑綁,都是原因之一

許多人不使用、或是漸漸搬離PaaS的原因之一,應該包括了價格。像Google App Engine最早提供了不錯的價格方案,的確吸引了一些開發者使用App Engine──儘管不少人不見得會真正使用到App Engine的優點,幾乎只是把它當做是Web 應用程式 Hosting的方案而已。但是,隨著時間的過去,價格也有了調整,這讓開發者真正的認真思考:他們對PaaS的需求,是否的確足夠充份。

不可諱言的,PaaS的營運成本勢必高過於IaaS,因為它提供遠多過IaaS的服務內容,因此,倘若只把PaaS的服務當做是IaaS來運用,自然就會覺得在價格上和IaaS相比缺乏競爭力。

雲端平臺吸引人的地方之一,當然是價格及成本的投入曲線。對任何雲端服務的開發者來說,隨時盤算成本是否合算,幾乎是基本常識了。正因為太多人並未真正的運用到PaaS的優點,或者說,並沒有那麼深入的使用到PaaS所帶來的好處,這使得他們在考量到成本時,最終放棄了PaaS。

打個比方來說吧,倘若你只需要在App Engine上運行Web應用程式,但卻沒有運用到它能因應大型資料規模的資料儲存能力、也沒有大量的流量及計算需求,幾乎是沒有讓PaaS有用武之地,那麼,換到IaaS常常會是比較省錢的做法。

除了因為沒有用到PaaS的優勢因而成本提高之外,開發者在特定的PaaS上開發還有一個顧慮,那就是害怕因此鎖死在特定的平臺上,難以遷移。

這是很合理的考量,因為PaaS所提供的環境更高階了,這意謂著這個環境可能是它所獨有的。倘若你的應用程式裡用了App Engine的某個API,那麼就只能在App Engine上執行,而不容易搬到其他的平臺之上了。

開發者可能會視此點為隱憂,因為被特定的平臺甚至是特定的公司所綁死,是一件風險不小的事情。一來價格完全受制於人,沒有選擇權,二來倘若此平臺的服務有朝一日被宣佈終止,那麼影響的層面就會很大了。

如果能有跨PaaS業者的標準API介面存在,讓開發者可以在多個平臺上,運行相同的應用程式,那麼,或許開發者對於PaaS的這一點顧慮,就可以減少不少吧。

IaaS也能提供自動擴展規模,不一定非用PaaS不可

目前選擇在IaaS上開發,仍然是雲端應用程式的主流方式,許多PaaS所標榜的好處,在IaaS上也有一些選擇,例如,若想擁有自動擴展規模的能力,就有一些自動擴展器可以使用、想要監測服務的存廢與否以做因應,也有相當多的監測及管理工具。現在,在IaaS有非常多的工具被發展出來,這使得開發者對於PaaS的需求又更加的薄弱了。

另一方面,提供IaaS的平臺業者卻很多,這意謂著開發者可以從中選擇最適合自己的,包括不同IaaS的網路特性、所提供的服務項目、收費模式、以及價格……等等。只要使用通用型的工具,所開發的應用程式就可以運行在不同的IaaS平臺之上。就像現在,我們有些服務因為一些原因,同時運行在多種不同IaaS業者的平臺之上一樣,並不會被綁死,因而得到了選擇平臺的彈性空間。

不過要注意的是,有些IaaS上仍有一些獨有的東西,它們一方面固然可以帶來開發的便利性,節省開發的時間及力氣,但是另一方面,也同時會有將開發者綁在該平臺上的可能性。

至於綁得究竟有多死,取決在它本身的特性,有些或許容易找到替代品並移植,有些或許並不容易。因此,在IaaS上開發,若不希望被特定業者綁死,那麼使用平臺所獨有的產物時,就要特別小心及評估。

PaaS的未來,在於開發者對於IaaS以外的服務需求

總的來說,目前PaaS風氣未起,跟需求不夠強烈有關,這使得開發者不願意多付成本,來取得PaaS在IaaS之外的額外服務。

而在IaaS上,人們開發各種工具,更使得對PaaS的需求愈加薄弱。再同時考慮到應用程式平臺可攜性的問題,導致了許多開發者傾向於選擇IaaS,這正是目前我所觀察到的現況。

至於PaaS是否有朝一日急追直上,就讓我們再繼續觀察吧!

作者簡介


Advertisement

更多 iThome相關內容