隨著「雲端計算(Cloud Computing)」這個名詞和概念被提出之後,就逐漸開始受到大家的重視。一直到今天,可以說是最當紅的Buzzword,無論是不是真的和雲端計算的概念相符,也都被掛上了「雲」這個當今最潮的字。所以,我們看到了有些產品或服務號稱「個人雲」、「家庭雲」之類的名稱。又像前一陣子社會新聞上出現的「迷你雲」,同樣也都是搭著「雲端」的概念或名詞所提出的產品。這些例子其實說明「雲端」做為一個 Buzzword ,的確是時下當紅的流行。無論相關程度的高低與否,許多產品或服務都試圖和其產生關聯。

當然,所有的Buzzword除了引發此類的流行及跟風之外,同樣也會引發反向的思考,也就是「雲端」的概念或想法,是否僅僅止於一種流行,而沒有太多實質的用處?

當然,也有一些質疑者,認為雲端技術或平臺,不過是新瓶裝舊酒,技術內涵的變化並不多,卻用了一個新的流行名詞,來加以包裝。

在本文中,試著分享一些我們過去實際應用雲端平臺的經驗,以及所得到的好處,或許可以做為讀者的參考,評估是否採用雲端的技術或平臺。

實際使用Google的PaaS雲端平臺服務
我們的開發團隊最早開始使用雲端的平臺,是從Google的App Engine,也就是所謂的 GAE 開始。為什麼使用GAE呢?有幾個原因,第一個是我們的系統必須服務可能來自於全世界的使用者,而在那之前已經試著在一些國家租用主機,但是若是為了提供更多地區更好的服務,就必須在更多國家進行類似的事情,而這不論在成本上或是在管理上都有頗高的複雜度。

當我們採用GAE來運行一些服務的程式時,由於GAE原本就是建立在Google的基礎設施之上,所以,針對全世界各地以最適合的機房來提供服務,便是它內建天生的機制。對應用程式的開發者而言,並不需要考慮這些事情。

在使用GAE之前,我們的模式是在世界多處租用而來的主機上運行我們的服務,利用一個服務的分派器判斷使用者所在地,再將它導到距離最近的主機上。一方面我們必須自行實作分派器,將使用者及伺服器的距離、伺服器的負載,以及伺服器是否發生異常等因素考慮進來。

另一方面,我們在伺服器管理上的複雜度也高。採用GAE之後,我們不需要再倚賴自己實作的分派器,因為GAE的實作無疑地比我們更好,而它背後實際能執行的伺服器數量、頻寬等級,也都比我們自己租用的條件好。

在使用GAE之後,我們完全不需要考慮這件事,因為整個平臺就是「雲」,我們不需要知道、也不考慮、更不需要介入最後真正為你提供服務的,究竟是Google的那一部伺服器,因為平臺的機制自動會幫我們完成這些事情,無論是使用者所在地、伺服器的負載、異常的處理,還有更多其他的因素,它都納入考慮。而且,在部署程式的時候,將程式部署至多部伺服器的工作,我們也不需要參與。對我們來說,就是把程式部署到「雲端」。將這些具體的細節簡化、抽象化成為「雲」,正是雲端平臺的大作用之一。

此外,GAE的平臺運作的穩定度也好,即使遭受到類似DDoS(分散式阻斷式攻擊)也不會發生大問題。負責系統維護的同事,比較不需要擔心半夜還會被服務監督系統的示警簡訊叫起。

我們利用GAE來運行某些服務,主要是因為GAE做為一個PaaS(Platform as a Service),它有提供一些更高階的應用程式開發環境,像是透過它的Datastore API,便可以用BigTable的方式來操作所儲存的資料。BigTable是為了處理海量資料而設計的,我們有些服務利用BigTable,得到了更快速的資料存取能力,可以更快速完成資料查詢的動作,並且回傳給客戶端。

搭配Amazon雲端服務EC2和SDN

除了GAE之外,我們也利用了Amazon的AWS(Amazon Web Services),來處理一些不同性質的工作及服務。

AWS有各種不同的服務,對一般人來說,最常使用到的可能包括了EC2、S3、或CDN。

EC2 像是個虛擬主機,有了EC2,你就像是有了自己擁有的一部伺服器,只不過你可以依照需求和用量決定你要的等級,因此,這自然也就決定了費用的多寡。而且,它還可以讓你選擇你的虛擬伺服器所在的位置,例如美東或是美西、愛爾蘭等等。

為什麼我們會使用EC2呢?

首先,我們有些在背景性質的工作需要被執行。這些工作並不是持續運行的服務,而是定期需要被執行的公用程式。如果我們租用傳統的主機,那麼就會讓主機有許多的時間是在閒置。但是因為EC2服務的特性,可以在需要執行時才建立起主機的實例,因此,只有當這些公用程式需要被執行時,我們才會建立主機實例,也才會需要付錢。執行多久就付多少錢。相較於租用傳統主機的方式,這顯然經濟許多。

另一方面,因為EC2提供API,因此,對於所有和主機實例,以及程式運行的活動,都可以透過這樣的API來做到控制,完全不需要人工介入,而且,更可以妥善地控制成本。

而這正是雲端平臺所帶來的優點之一,就和傳統的電力服務一樣,可以依照用量來付量,而不需要租用一個主機,即使有許多的時間在閒置,仍然必須要計費。

有時候,我們對於一些公用程式完成工作的期限要求不同,例如,平常只需要一個程式在一天內完成工作,因為突發的狀況,我們希望它一個小時之內就完成工作。這時候,我們只需要很簡單的配置24倍的實例,就可以將時間縮短成為原來的1/24。這就是像EC2這樣的平臺,所能帶來的好處之一──彈性。

隨著我們對用量的需求不同,我們可以輕易地、很有彈性做調整。倘若是舊有租用主機的模式,並不那麼容易可以因應突發狀況,就多租用額外的主機來應付。

有了EC2之後,隨時可以依據需求,來決定資源的配置量,所以有了很好的彈性。

我們使用EC2,還有另一個原因,就是我們的這些公用程式一樣需要在全世界各區執行,它們的目的,並不是為了服務不同地區的使用者,而是為了從各區就近進行一些工作,這些工作是要反映在該區網路上執行工作的情況。

例如,監測該區網路連至某特定伺服器的連線速度或連線距離等等。如果只是集中在特定地區的主機,就無法進行此類和網路所在位置相關的工作。也因為「網路位置」對我們來說很重要,所以我們也使用了在臺灣、中國的類似EC2的平臺,因為EC2在這兩個地區,目前尚沒有提供服務。

除了EC2之外,我們也用Amazon CDN將部份大型的檔案部署到各地去,這使得全球的使用者欲存取該檔案時,都能得到最高的傳輸效能及品質。同樣的,這也是傳統自行建置主機的方式所難以比擬的便利。

對我們的開發團隊而言,目前將一些合適的服務或公用程式,置於不同屬性的雲端平臺上運行,的確獲得許多的好處。

所以,固然雲端計算的技術是資訊技術逐步累積而來,但用雲端的抽象概念予以詮釋之後,所帶來的不僅是流行,也有真正具體的利益。

作者簡介


Advertisement

更多 iThome相關內容