天天看點

基于阿裡雲建構自己的彈性應用

短短幾年,軟體、企業資訊系統、網際網路等行業因為雲計算的出現和普及發生了很多的改變。在今天,如果我們計劃建立一家新的網際網路初創公司的時候,我們不再需要把時間浪費在伺服器采購、idc選擇、網絡南北互通和伺服器硬體故障這些基礎設施上面。因為像ecs這類服務的出現,我們需要的伺服器資源已經變得唾手可得。同時,rds、redis、oss等服務的出現,我們甚至不需要自己去安裝和維護資料庫、緩存等軟體了。雲計算使網際網路初創公司能夠更關注自己核心業務的快速奔跑。

同時,雲計算本身也在快速發展。創業公司對雲計算的了解和應用能力,也成為了創業公司最終成敗的一個重要因素之一,因為這不僅影響到成本,同時也影響到産品的性能、規模、服務能力、使用者體驗和疊代速度。成本和疊代速度對于初創公司的重要性不言而喻。

阿裡雲在2015年底推出了一款新的服務,其目标皆在于幫助雲計算使用者進一步減少在基礎設施維護上的成本,提供更加靈活的雲計算資源維護能力。這款服務就是阿裡雲資源編排服務。

在資源編排服務出現之前,雖然我們已經不需要搬運沉重的伺服器到機房去,大部分時候我們隻要在阿裡雲的網站上點點滑鼠就能夠得到我們想要的伺服器資源,但是當管理的資源多起來以後,通過web界面來維護大量的雲産品的建立、配置仍然是頗有挑戰的工作,特别是當出于安全需要而引入複雜的網絡拓撲結構時,很多管理者不得不借助外部文檔來記錄資源間的依賴關系、系統整體架構和很多的配置細節。使用阿裡雲資源編排服務(resource orchestration service),使用者僅需要編寫一個文本檔案,就能很好的解決這些問題。借助這個檔案和編排服務提供的能力,我們不僅能夠定義我們的資源需求、配置細節和資源間的依賴關系,甚至我們可以在同一個檔案中描述整個網絡拓撲結構和系統架構。這個檔案神奇的定義了整個系統,并且重要的是隻有一個檔案,而且整個系統可以任意複制、修改。

資源編排的核心概念:

模闆:模闆是一個json格式的文本檔案,遵照阿裡雲資源模闆的格式定義。其中定義了使用者系統的所有資源細節和整體架構。阿裡雲資源編排模闆定義

資源編排服務:資源編排服務是阿裡雲提供的開放雲産品,提供restful風格的api、sdk和web界面供使用者使用。接受使用者送出的資源模闆,完成使用者系統的生命周期維護。

資源棧: 資源棧是一個邏輯上的概念,使用者定義的資源模闆檔案,由資源編排服務執行後得到的資源全體即是資源棧。一個資源棧代表了一個使用者的運作時系統。

基于阿裡雲建構自己的彈性應用

下面用一個網頁遊戲的例子來說明如何借助資源編排服務的能力來簡化整個系統配置。作為一個小的創業團隊,我們沒有專職的運維工程師,同時我們的遊戲很受歡迎,是一個峰值線上人數超過2000人的網頁遊戲。由于遊戲的特點導緻使用者操作比較頻繁,我們大概前期需要2台2核心4gb記憶體的ecs執行個體,一個rds.mss1.xlarge規格的sqlserver執行個體,2台ecs執行個體運作的是同樣的遊戲服務端程式,遊戲使用者通過統一的域名登入遊戲,不會感覺後面到底有多少機器來提供服務,是以我們還需要一個slb來做2台ecs的前端負載均衡器。整個遊戲系統的架構如下:

基于阿裡雲建構自己的彈性應用

為了建立整個遊戲系統,我們提前已經把遊戲軟體做成了一個私有鏡像,鏡像id是m-25qoptbjn,然後我們編寫了下面的模闆:

模闆完整定義了整個系統的資源細節和之間的依賴關系。我們登入阿裡雲資源編排服務的控制台,輸入上面的模闆内容,幾分鐘後網頁遊戲服務就已經搭建完成了。當然這個例子還是很簡陋的,随着遊戲營運,可能同時線上人數上升到了5000人,我們需要增加3台機器,我們隻要修改模闆檔案重新交給資源編排服務就可以進行系統擴容。如果我們需要在另一個地域,比如青島開辟一組新的服務,隻要把模闆檔案複制後,選擇在青島區域運作就同樣可以在幾分鐘内将整個服務複制到青島。

另一個例子,我們是一家為客戶提供基因分析服務的初創公司。我們通過采集客戶的唾液來提取基因資料,然後采用大規模機器學習的方法來對基因資料進行分析,并最終給客戶提供某些疾病的發病風險的可能性報告。人的基因資料一般都需要若幹gb的檔案來存儲,分析這些資料需要大量的計算資源。作為初創公司,維護幾百台伺服器是無法接受的成本。通過阿裡雲的資源編排服務,我們把整個分析所依賴的軟體和資源用一個模闆檔案來定義,當接到分析任務的時候,我們把模闆檔案交給阿裡雲的資源編排服務建構整個系統,可能是幾十台ecs,上面運作我們的分析軟體。當整個計算完成後,我們立即釋放所有資源。這樣,我們即有能力排程大量的計算資源來完成我們的業務,同時又不必為資源閑置買單。借助阿裡雲資源編排的能力,我們可以用同樣的模闆來同時建構多個一模一樣的系統,來并行處理。同時,阿裡雲資源編排服務提供api和sdk,使我們可以把整個流程和我們的業務系統進行內建,我們可以像寫代碼一樣的來操作雲計算資源。

上面的例子雖然很簡單,但是已經能夠建構出很多有用的系統。其他一些系統要更複雜,但是通過阿裡雲資源編排服務提供的能力,整體的運維複雜度依然可以控制在很低的程度。

阿裡雲資源編排服務是免費的,更多資訊請通路: https://www.aliyun.com/product/ros/

繼續閱讀