Pages

Tuesday, November 30, 2010

Amazon web services: cloud best practices (part 1)

在 Amazon Web Services Blog 上,有一篇相當棒談論 Amazon Cloud 的技術文件:New Whitepaper: Architecting for the Cloud: Best Practices 最後更新時間為 May 2010,可見這份還蠻新的,以下為我對於 Amazon web services 提供哪些特色的重點心得分享。

談到雲端架構 (Cloud architect),我們就要瞭解雲端運算的好處,從一般商業運轉上或者技術考量上,以及使用 AWS (Amazon Web Services) 今日可提供的服務來了解。

商業上考量,AWS 可帶來好處:
  • 可以從幾乎零的內部硬體投資做起頭。如果今天要打造一個 large-scale 系統一定要花很多空間實體設備硬體購買,以及周邊安全管理到運作控管,這些都是很高的起步投資,需要一堆管理的文件送審,擋住專案開始時間。如果用了可以根據使用量來調整的雲端運算,就不用需要擔心資金或者起頭成本。
  • 即時到位內部硬體支援。過去當系統變成有名使用量大,但是內部硬體卻無法 Scale 到位造成自己是成功的受害者。或者是,如果如果投資硬體過頭卻沒做起來,卻變成失敗的受害者。因此即時到位就不用擔心預購 large-scale 系統做準備,還可以敏捷的提升,降低風險和低運轉的成本成為 As you grow and only pay for what you use。
  • 更有效率的資源調整。系統管理員通常會擔心當硬體支援不夠的時候,或者硬體支援過多卻停擺時候。當使用 Cloud 可以更有效的管理資源,只要根據情況透過提需要或者放棄掉資源。
  • 根據用量來計費。透過用量寄費,只要去付使用到的 infrastructure 就好,這樣可以省去多餘的開支。
  • 降低進入市場所需的時間。Parallelization 平行運算是提升運轉一個最好的方式。當需要空間換取時間的時候,可以調整出多點運算來加快一個工作所需要運算時間。

技術上考量,AWS 可帶來好處:
  • 自動化。可以建立出 API-driven 的 infrastructure。
  • 自動化延展。可以根據 Application 來調整大小符合非預期內的需求。自動化可以帶來更多效益。
  • 主動預期的延展。預先根據流量模式的期盼需求,來控制延展系統大小。
  • 提升測試能力。絕對不要讓硬體不夠用來測試。開發過程,讓每個階段可以自動化測試。可以打造即時測試的實驗室,來做測試規劃。
  • 災難回覆和商業運轉持續。Cloud 提供了低成本的資料儲存,能夠幾分鐘內,透過點位置,進行分散部署備份環境。
  • 讓過量的流量帶到雲端。透過 load balancing 戰術,可以讓流量分散好好進入 cloud 。

Amazon Web Services 提供了很多樣化的 infrastructure 讓我們來部署 web-scale 的方案,我們了解一下 AWS 有哪些服務:
  • Amazon Elastic Compute Cloud (Amazon EC2) 是個 web service 提供雲端上可控制計算時所需大小。可以選擇需要的作業系統、應用軟體、和相關的設定。Elastic IP addresses 可以讓我們來分布動態 IP address 來分配到我們的各個 instance 上。透過 Amazon CloudWatch 來監看目前使用狀況。
  • Amazon Simple storage service (Amazon S3) 是個分散式儲存空間,可以任何時候存取大量的 data as objects 於一個大的 containers 中,只要透過標準 HTTP 的溝通協定。
  • Amazon CloudFront service 提供了 content delivery。
  • Amazon SimpleDB 是一個 web service 提供即時資料庫功能,可以即時查詢。只要將 Dataset 包裝成 domain 然後將它們儲存與使用。Domains 是包含了項目裡面有 attribute-value 組合。
  • Amazon Relational Database Service (Amazon RDS) 提供了簡單方式架設運轉關聯式資料庫於雲端。可以啓動 DB Instance 然後連進像是 MySQL database 不用擔心一般資料庫的備份管理與升級。
  • Amazon Simple Queue Service (Amazon SQS) 提供了分散式的 Queue 來儲存 messages,當這些遊走於 Computers 和 Application components 之間。
  • Amazon Simple Notifications Service (Amazon SNS) 提供了通知 application 或者人們透過建立標題和使用 publish-subscribe protocol。
  • Amazon Elastic MapReduce 提供了 Hadoop framework 去跑在 Amazon EC2 和 Amazon S3 讓我們去做 JobFlows。 JobFlows 是一種 MapReduce steps 的 sequence。
  • Amazon Virtual Private Cloud (Amazon VPC) 可以建置 Private Cloud 包含了各種 AWS 功能,建立安全連線,透過自己外部的 Data center 和進入 AWS gateway 進入裡面。
  • AWS 也提供了 payment 和 billing 服務,來計算目前使用所需要付的費用。

使用 AWS 雲端不用擔心犧牲太多,因為還是可以自由選擇 Programming model,程式語言 (Programming language) 和作業系統 (Windows, OperSolaris 或者各種 Linux) 作為選擇,可以自由選擇 AWS 的服務自由組合使用,提供了用量計費,所以可以根據用的來付費而已。而且提供了很多很好用的系統管理工具來幫忙上手。

以上僅僅是三分之一的重點整理,就覺得收穫很多,這份原文後面還有更進階更精彩的內容,包含了雲端概念和好的實踐模式,都是可以作為學習很好的題材。
另外如果您想要了解更多關於 Amazon 雲端服務,推薦參考『Inside - 網路趨勢行銷與開發』的雲端運算相關文章。

No comments:

Post a Comment