天天看點

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

 阿裡雲ECS雲伺服器資源購買決策

作者:季奔牛 2019-1-31

摘要

        利用公有雲服務可以節省企業在計算資源上的開支這一點已經得到實踐證明,越來越多的企業正在從私有資料中心往公有雲遷移。然而面對公有雲産品衆多的規格和多種付費方式,企業往往容易陷入選擇困境。在本文中,作者以阿裡雲[1]的ECS産品[2]為例,嘗試通過建立純整數規劃模型,來使得滿足企業業務需求情況下的計算資源費用最小化。

關鍵詞: 公有雲、阿裡雲ECS、線性規劃

一.背景介紹

        随着雲計算技術的發展以及以阿裡雲為代表的一批國内雲計算企業提供的公有雲業務的成熟,越來越多的企業将自身的資訊系統及服務的技術棧和核心基礎架構遷移至公有雲服務上。尤其是對于初創企業而言,公有雲服務提供的按需購買,按量付費的使用模式可以顯著的節約成本,省去了昂貴的私有資料中心機房建設或租賃,伺服器、儲存設備的購買和搭建,以及大量的基礎設施運維開支。傳統的私有資料中心,因為建設、租賃、伺服器的采購,部署、配置,都需要一個比較長的周期,通常需要按月計,是以往往需要比實際業務需求提前很久開始實施,同時需要計劃足夠多的資源預留。而這些預留資源會帶來短期内的費用遠遠高于目前實際業務所需的資源開支。這也是為什麼很多企業往公有雲上遷移,一方面省去的高昂的基礎設施建設成本,另一方面,利用雲計算服務擴容便捷的優點,可以縮短提前購置計算資源的時間,根據業務發展的情況,靈活的擴張或降低資源使用。

       但是在使用公有雲的過程中,企業的CIO或IT負責人通常會面臨很多決策,例如:

        1. 該選擇何種規格的産品?

        2. 應該選擇哪種類型的付費方式,按小時計費,還是包月,包年?

        3. 如何知道企業的業務需要多少計算資源,這些計算資源通過購買怎樣的産品組合可以滿足,并且最省錢?

       以作者自身為例,購買決策的過程通常是“三拍”,第一次拍腦袋,決定需要什麼規格的伺服器,第二次拍腦袋,決定需要買多少台,第三次拍腦袋,決定買多久。顯然,這樣的購買決策存在很嚴重的問題,首先不知道規格是否合适,其次不知道是否夠用及夠用多久,最後,預估的量往往比較激進,會預留較多的餘量導緻費用遠超實際所需。

        在國外公有雲市場上,亞馬遜公司的AWS公有雲平台[3]占據着市場第一的份額,該公司有“Cost Explorer[4]”這款産品,可以幫助使用者分析使用資料,提供調整産品組合的建議,進而幫助客戶做出合理的決策來縮減或擴大使用規模。遺憾的是,在國内市場上,還沒有類似的産品出現。國内公有雲市場的龍頭阿裡雲,目前也隻是推出了一款還在公測階段的産品:“智能顧問[5]”,該産品僅提供簡單的分析功能,并向使用者推薦是否有ECS執行個體适合從按需付費改為按年付費。但是該産品目前還處于非常早期階段,無法幫助使用者根據業務需求來做出使得費用最小化的購買決策。

        下面,本文将以阿裡雲ECS産品為例,分幾部分描述如何根據實際業務量來優化ECS的産品組合。

        首先,作者将簡要分析阿裡雲ECS産品的産品規格以及不同的付費方式。之後将對優化問題做初步的分析,通過分析來試圖簡化問題,以友善資料收集和模型的建立。接着,作者将較長的描述為了解決問題需要哪些資料,以及如何從阿裡雲采集這些資料,資料需要如何整理。最後,作者将使用Excel工具建立一個純整數線性規劃模型,求出滿足作者所在公司目前業務需求情況下的分時段ECS産品組合和付費模式組合。

二. 阿裡雲 ECS産品分析

        雲伺服器Elastic Compute Service(ECS)是阿裡雲提供的一種基礎雲計算服務。本質上它是一種基于虛拟化技術産生的伺服器産品,使用ECS無需提前采購硬體裝置,而是根據業務需要,随時建立所需數量的雲伺服器ECS執行個體。在使用過程中,随着業務的擴充,可以随時擴容。如果不再需要雲伺服器,也能随時釋放資源,節省費用。通常,在購買ECS伺服器的時候,主要的考慮名額為vCPU核數和記憶體容量。

2.1 ECS 産品分類

地域及可用區[6]

        阿裡雲的公有雲業務分布在全球的各個地域,一個地域可以了解為由一個或若幹個實體資料中心組成的大資料中心。目前總共有19個地域,其中國内分7個地域,國外有12個地域。每個地域會包含若幹個可用區,可用區可以了解為一個實體上的資料中心。圖1列出了中國大陸地區的地域劃分和可用區的數量。

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

圖 1 阿裡雲在中國大陸的地域及可用區

       ECS産品在各個地域之間會有價格差異,但在同一個地域的不同可用區内價格相同。此外,在不同的地域,可以選擇的ECS産品規格可能存在差異。

ECS産品族群及規格[7]

        ECS産品可以根據種類劃分出多個層次。如圖2所示,ECS在第一層級可以劃分為多個族群,每個族群可以再劃分為多個規格族。最後,每個規格族又可以在根據産品vCPU核數和記憶體容量不同劃分為不同的規格産品。

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

圖 2産品規格層次劃分

        以X86計算規格族群下的通用型執行個體規格族為例,該規格族可以細分為8個産品規格。

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

圖 3通用型執行個體産品規格

2.2 ECS 産品定價[8]

        ECS資源的主要計費方式分為兩種,1是預付費(包括包年包月和按周付費),2是按量付費。不同的執行個體規格(vCPU核數和記憶體容量)價格不同。

預付費模式

 在購買ECS資源時,采用預付費模式是指購買時一次性支付該使用期的費用,無論是否使用執行個體,阿裡雲将在該使用期内預留執行個體資源。預付費模式會根據購買期限的不同有不同的折扣。常見的預付費主要分為一下幾類:

        1. 包1周

        2. 包1/2/3個月

        3. 包1/2/3/4/5年

按量付費

        按量付費是一種先使用後付費方式。使用這種方式的特點是按需取用資源,随時開啟和釋放資源,無需提前購買資源。按量付費的計費是以秒為機關,購買資源後開始計費,釋放資源後結束計費,根據使用時間乘以每小時單價計算費用。

        完整的産品規格清單及對應的預付費和按量付費價格可查閱附錄1《

阿裡雲

ECS産品規格及價格清單》

三.問題分析

3.1 企業ECS雲伺服器使用現狀

        目前作者所在企業正在使用的ECS執行個體超過30台,分别屬于5種産品規格,所有執行個體位于同一地域。所有ECS執行個體總計的vCPU為149核,記憶體為378G。根據收集的資料統計,平均CPU使用率為29.75%,峰值為74%。平均記憶體使用率為34.29%,峰值為68%。

        根據運維經驗,CPU使用率在20%-80%這個區間,記憶體的使用率在60-80%這個區間是比較理想的情況。如果CPU和記憶體的使用率過高,說明系統存在資源短缺的情況,需要通過增加ECS執行個體來擴大叢集規模。如果CPU和記憶體的使用率過低,說明系統存在資源過剩的情況,可以縮小ECS叢集規模來節省成本。

        從目前的實際CPU使用率和記憶體使用率來看,平均值都在合理區間的下限或者低于下限。峰值接近上限。目前所用的ECS執行個體都采用了包年付費的方式。無論CPU,記憶體的使用率如何變化,所付的費用是固定的。

3.2 現狀的優化方向

1)優化vCPU與記憶體比。

        現購買的執行個體vCPU核數與記憶體總量之比為: 

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

        而平均vCPU使用量與平均記憶體使用量之比為:

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

        由此可見,目前購買的執行個體規格(vCPU和記憶體比例)和實際應用有差距。目前業務對記憶體資源的使用高于預期。從這個角度考慮,可以通過優化ECS的産品規格組合來接近實際的CPU、記憶體應用比例。

2)優化支付方式

        如圖4所示,經過對1天24小時内的CPU使用率分析,最小使用率為0.04,最高使用率為0.74,方差為0.04,标準差為0.2。

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策
阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

圖 4 CPU使用率描述統計

        如圖5所示,經過對1天24小時内的記憶體使用率分析,最小使用率為0.09,最高使用率為0.68,方差為0.037,标準差為0.183。

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策
阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

圖 5 記憶體使用率描述統計

        通過上面兩個分析,可以得出CPU使用率和記憶體的使用率,存在明顯的不均衡,這是由于業務特點造成的。圖6是公司業務量的日均工作時間分布。服務的使用高峰是在9點至11點,14點至16點,之後緩慢下降。服務高峰期間,雲端服務的通路量增加,導緻CPU和記憶體的使用量增加。由于不同時間段的業務特點不同,對CPU和記憶體的資源使用情況不同,有些業務是計算敏感型,導緻CPU使用率上升,有些業務是記憶體敏感型,導緻記憶體使用率上升。是以CPU和記憶體的分布不會完全一緻,也不會與業務量的工作時間分布完全一緻,但大緻趨勢是近似的。

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

圖 6 日均業務量時間分布

        從圖4和圖5比較來看,CPU的使用高峰發生在上午9-10點,而記憶體的使用高峰發生在下午的14-15點。

CPU和記憶體在24小時内使用的波動也給我們帶來了優化空間,通過一定數量的預付費執行個體滿足大部分時間的使用需求,再通過高峰期增加按需執行個體,來滿足高峰期的計算資源的請求。

此外,CPU高峰和記憶體高峰的不同,也可以通過在不同時間段購買不同規格的按需執行個體來得到優化。

3.3 問題簡化

        通過上面的分析,我們就可以建立一個純整數規劃模型來确定購買哪些規格的執行個體,買多少個,什麼時間段買,選擇什麼付費方式買的問題。

        但在實際操作過程中會發現,問題過于複雜(實際情況是太多的決策變量導緻無法使用EXCEL工具來進行求解)。于是,必須想辦法簡化問題,通過盡可能減少決策變量的方法來使得計算過程更簡單。

3.3.1 确定一個地域

        由于不同的地域會導緻相同執行個體規格的價格不同,是以執行個體單價這個系數會成倍增加。考慮到公司服務主要部署在阿裡雲杭州的資料中心,是以選擇杭州為本次問題求解的固定地域。如果是多個地域,可以考慮不同地域分别應用模型,修改執行個體價格系數,分别求解。

        在本文中,我們将19個地域,縮減成1個。

3.3.2 确定規格清單

        在文章的第二部分,我們已經知道即使是同一個規格族,也有多個不同規格的産品。如圖3,通用型執行個體就有8個規格産品。但是通過觀察可以發現,相同的規格族,其CPU和記憶體的比例是固定的,其價格也是成正比的。差别隻在于不同執行個體間CPU和記憶體的大小不同。是以,可以考慮選擇各個規格族的若幹個規格的産品,即可以代表整體。前提是試用了資源池化的技術。公司購買的所有執行個體都會通過Docker容器化[9]和Kubernetes容器編排架構[10],将執行個體資源進行彙總,形成一個大的資源池,依賴容器編排架構來将業務應用均勻分布在不同的執行個體上,同時業務請求也會根據負載均衡産品來将請求分發到不同的執行個體上。是以,我們可以簡單假設這個資源池内的所有執行個體的CPU記憶體使用率是一緻的。而通過資源池化的技術,添加2個2核vCPU 4G記憶體的ECS伺服器,和添加1個4核vCPU 8G記憶體的ECS伺服器帶來的效果是一緻的。是以,為了簡化問題,我們可以選擇從各個規格族中使用2種規格的産品來進行問題的求解。

        這樣,就把同一個地域中總計510種産品規格縮減到如圖7所示的8種規格中。後面的模型将從這8種規格中選取合适的規格和數量。

執行個體類型 執行個體規格 vCPU 記憶體 按量(小時) 優惠月價 年付月價
密集計算型 ecs.ic5.xlarge 4 1.18 340 289
ecs.ic5.2xlarge 8 2.36 680 578
計算型 ecs.c5.xlarge 1.24 358 394.3
ecs.c5.2xlarge 16 2.49 716 608.6
通用型 ecs.g5.xlarge 1.77 484.5 382.5
ecs.g5.2xlarge 32 3.54 969 765
記憶體型 ecs.r5.xlarge 2.26 619.4 489
ecs.r5.2xlarge 64 4.53 1238.8 978

圖 7 規格與價格清單

3.3.2 确定付費模式清單

        1)考慮到運維的複雜度和可操作性,以及業務的持續性,我們可以忽略掉包周這種付費模式,因為包周與按量付費的價格相比并沒有優惠。

        2)考慮到雲計算技術仍然在持續快速發展中,公有雲的成本也在下降,根據經驗,每年阿裡雲都會下調ECS的單價,結合考慮到貨币的時間成本,包2年,3年,4年,5年這幾種模式也不在我們的考慮中。

        是以,單個規格産品的付費模式可以縮減為圖7所示的3種付費模式,即按小時,包月和包年。

        通過以上三個角度的分析,我們可以在不明顯影響模型結果的情況下,極大的縮減規模,進而可以使我們通過簡單的EXCEL工具進行求解。

四.資料資料收集與整理

在建立模型求解問題之前,我們首先需要做的是資料收集。資料主要分三個部分,第一部分是公開資料,這些資料可以從阿裡雲上直接找到。篩選和整理出我們需要使用的部分即可。第二部分是經驗資料,一台伺服器健康運作狀态下的CPU和記憶體負載有一個範圍存在,這個範圍雖然沒有标準,但是經驗豐富的運維人員可以根據自己企業的業務特點來估算一個合理範圍。第三部分是業務資料,這個需要從企業營運資料中獲得。本文中需要用到的非公開業務資料有ECS執行個體資訊,CPU和記憶體數目,節點的資源使用率等資訊。(因公司保密政策原因,本文中的所有非公開資料均進行過加工處理,非原始業務資料,但不會影響模型的建立和應用)

4.1阿裡雲執行個體規格和價格清單

阿裡雲的所有地域、産品規格和價格清單均可以直接從阿裡雲官網獲得。

本文選取的部分執行個體規格和價格清單如圖7所示。

4.2 CPU和記憶體使用率的經驗值

        根據運維經驗,CPU使用率在20%-80%這個區間,記憶體的使用率在60-80%這個區間是比較健康的。記憶體短時間内超過80%也不會有太大問題。是以,在下面的模型中,我們将選擇80%作為系數,确定CPU和記憶體使用率的最高門檻值。

4.3 業務資料

        需要獲得的業務資料有: 

  • 現有的ECS執行個體清單
  • 最近一個月,每天24小時,每個小時的CPU和記憶體使用量。

4.3.1 擷取ECS執行個體清單

        如果執行個體數量不多,可以從阿裡雲ECS服務的管理界面上手工擷取各個執行個體資訊。但如果執行個體數量過多,這種方法耗時耗力。是以在本文中,作者采用阿裡雲提供的公開的API接口及配套的SDK來通過程式設計的方式擷取執行個體資訊。

        圖8 是擷取執行個體資訊的代碼片段。

        該程式的作用是通過阿裡雲企業賬戶的授權,調用阿裡雲SDK,擷取指定區域内的所有執行個體資訊,傳回的結果将進一步使用程式進行加工處理,最後形成如圖9所示的規格清單。

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

圖 8擷取執行個體資訊的代碼示例

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

圖 9 阿裡雲現有執行個體清單

4.3.2 擷取單日每小時CPU和記憶體使用情況資訊

        阿裡雲自有的ECS監控服務會統計并存儲CPU和記憶體使用情況。我們仍然可以通過阿裡雲提供的相關API和SDK來擷取這些資訊。

        盡管阿裡雲會以秒為機關檢測CPU和記憶體資訊,但在存儲時會做聚合,我們也無需了解每一秒的使用資訊。利用阿裡雲的API和SDK,我們可以直接以3600秒為時間間隔,擷取單日各個時間段内的CPU和記憶體的聚合後的資訊,主要包括,該時間段内的均值,最高值和最低值。圖10 是擷取指定ECS執行個體單日每小時CPU和記憶體使用情況的代碼示例。

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

圖 10擷取指定執行個體單日資源使用情況代碼示例

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

圖 11 單日CPU使用情況

        圖11所示為該程式獲得的CPU單日使用情況的資料,該資料為JSON結構,資料點包含了1-24小時各個小時時間段内的CPU使用最高值,最低值和平均值。

        該程式擷取的是指定節點的單日的小時資料。在第三部分中已經解釋過,在資源池化技術的支援下,叢集内各個節點的負載是均衡的,是以我們可以隻采集單個節點的資料。但是業務量在不同日期可能會有不同,是以,作者進一步采用程式化的方式,通過循環調用metrics_collect腳本,來擷取連續31天的資料,對每個時間段求平均值。最後得到如圖12所示的單節點分時段CPU和記憶體使用率。

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

圖 12分時段CPU和記憶體使用率均值

        通過現有的執行個體清單的規格,我們可以計算出目前購買的ECS的總vCPU數和總記憶體容量。結合收集得到的不同時段的CPU和記憶體使用率均值,我們就可以計算出,目前業務規模下,各個時間段實際需要的CPU和記憶體數量。再除以CPU和記憶體使用的最高比率,就可以得到各個時間段最合理的CPU和記憶體數。

五.模型的建立與計算

通過以上部分的資料收集,我們就可以得到足夠的資料去建立模型,然後取出最合理的産品組合和付費方式。

5.1數學模型:

目标函數:

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

        目标函數由兩部分組成:

        第一部分是包年費用

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策
  • Xn代表的是ECS規格n産品按年付費購買數量。
  • Pyn代表的是ECS規格n産品的按年付費的月價格。
  • 兩者乘積求和再乘以12個月即是按年付費的價格。

第二部分是按需付費價格

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策
  • Znm代表的是ECS規格n産品在m時段内按需購買數量。
  •  Phn代表的是ECS規格n産品按需付費的小時價格。
  • 兩者成績求和再乘以365天即是按需付費的年化價格。

線性限制條件:

a.  CPU限制

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策
  •  Znm代表的是ECS規格n産品在m時段内按需購買數量。
  • Cpun代表的是ECS規格n産品的vCPU核數。
  • TCm代表的是在m時間段業務實際所需的vCPU核數。

b.  記憶體限制

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策
  • Memn代表的是ECS規格n産品的記憶體數量。
  • TMm代表的是在m時間段業務實際所需的記憶體數量。

非負整數限制條件:

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

5.2 Excel模型:

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

圖 13阿裡雲ECS費用優化問題模型

圖13展示使用EXCEL建立該純整數規劃模型的部分截圖    

該圖中,黃色代表決策變量,藍色代表系數,我們需要求出的是各個規格的執行個體使用按年付費模式需要買多少個。同時,按需付費模式下,在不同的時間段,分别需要購買多少個。限制條件是各個時段所擁有的CPU和記憶體不超過門檻值,并且執行個體個數為整數。目标是求出所有包年執行個體費用總和加上各個時段按需執行個體的費用總和,并使之在滿足限制條件的情況下總和最小。

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策
阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

圖 14問題求解

        通過EXCEL的Solver來進行求解,如圖14所示,目标為總費用最小。限制條件總共有4個,分别限制記憶體和使用率的最高值,及必須是整數解。

        實際操作過程中發現,盡管已經做了很多優化,減少了非常多的決策變量,該模型在4核16G記憶體的電腦上用EXCEL進行求解時仍然運作了1個多小時都無法得到結果。最後隻能通過上圖所示,通過降低限制精度來加快運作速度。

六.結果分析和收益

    通過該模型的計算,我們可以得到以下結果:

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

圖 15年付費執行個體

        圖15為得到最優解後,各個規格按年付費方式所需購買的執行個體數。

        需要包年購買:

        1) Ecs.ic5.xlarge執行個體 1台

        2) Ecs.c5.2xlarge 執行個體7台

        3) Ecs.r5.xlarge 執行個體3台

        按年付費總計費用為72194.4元/年

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

圖 16按需付費執行個體

        圖16為得到最優解後,各個時間段,按量付費方式所需購買的各規格的執行個體數。

        1) 8-9點時間段需要購買ecs.r5.xlarge執行個體1台。

        2) 9-10點時間段需要購買ecs.ic5.2xlarge 執行個體8台。

        3) 10-11點時間段需要購買ecs.ic5.xlarge 執行個體7台, ecs.g5.xlarge執行個體1台。

        4) 11-12點時間段需要購買ecs.ic5.xlarge執行個體5台,ecs.ic5.2xlarge執行個體1台。

        5) 13-14點時間段需要購買ecs.c5.xlarge執行個體4台。

        6) 14-15點時間段需要購買ecs.c5.xlarge執行個體1台,ecs.g5.2xlarge執行個體1台,ecs.r5.2xlarge執行個體1台。

        7) 15-16點時間段需要夠買ecs.ic5.xlarge執行個體6台。

        8) 16-17點時間段需要夠買ecs.ic5.2xlarge執行個體1台,ecs.c5.xlarge執行個體1台。

        折算成年費用後按需付費總計費用為23498.7元/年

        總費用 = 年付費費用+按需付費費用 = 72194.4元/年 + 23498.7 元/年= 95693.1元/年

阿裡雲ECS雲伺服器資源購買決策 阿裡雲ECS雲伺服器資源購買決策

圖 17費用最小化後按年付費與按需付費配置設定

        圖17展示了vCPU和記憶體在優化後的配置設定情況。

        vCPU的配置設定圖中,橙色部分為年付費所獲得的vCPU資源,黃色部分為按需付費獲得的vCPU資源。記憶體的配置設定圖中,藍色部分為年付費所獲得的記憶體資源,橙色部分為按需付費獲得的記憶體資源。

        經過計算,在優化前,原本的ECS執行個體均為包年模式,總費用為154046.1元/年。經過模型優化後,采用包年結合按需付費的模式,總費用為95693.1元/年。費用降低了37.88%。

        該計算結果為根據處理過的業務資料計算得出的結果,實際節省的費用要遠高于該數字。

七.該模型使用的限制條件

        該模型能夠幫助企業決策者,根據自身的業務量,來做出購買何種類型ECS執行個體,何時購買,按什麼付費方式購買的問題。但是,使用此模型仍有一定的限制條件。

7.1 業務穩定

        該模型是基于業務穩定的前提下建立的。在計算單日CPU和記憶體的使用率時,采取了擷取31天資訊,取平均值的方法。如果業務是不穩定的,波動過大,則會對模型的準确性造成影響。例如,如果業務是在上升過程中,則該模型計算出來的結果将無法滿足未來的實際業務需求的計算資源。如果業務是在萎縮過程中,則該模型計算出來的結果将超過實際業務需求的計算資源。

        由于公司業務處于穩定期,是以,該模型适用于作者所在公司。如果業務處于上升期或萎縮期,可以考慮采用回歸的方式求出業務量的函數,通過預測下一階段業務量,修改模型中的限制條件,再求最優解。

7.2 産品規格限制

        由于公司隻用到了單一規格族的ECS産品,是以,該模型隻添加了x86系列ECS産品。如果實際業務中,需要其他規格族,則需修改已知條件和系數。同時決策變量也會增多,可能導緻無法使用EXCEL工具求解。

7.3 資源池化

        該模型中,一個重要的要求就是資源池化。購買的執行個體必須投入資源池中,通過分布式架構,将業務負載均勻分布在不同節點上。如果技術上無法采用這樣的架構,要求特定業務必須跑在特定規格的伺服器上,則無法應用該模型。此時會增加資料采樣的複雜度,模型也會增加更多的決策變量和限制條件。

7.4 其他費用優惠

        該模型隻考慮了阿裡雲正常價格下的情況。未考慮阿裡雲可能會采取的各種優惠措施,如大客戶優惠,雙十一促銷,正常降價等情況。如果優惠情況發生,需要修改系數,重新計算最優解。

7.5 實施

        通過該模型得到最優解後,真正的實施過程會面臨2大挑戰。

  • 每小時都要變更ECS的産品組合,對運維是個巨大的挑戰。需要運維工程師能夠自動化的去購買和釋放ECS執行個體,因為交易涉及到公司的現金支出,除了合規性的要求,還需要防範程式錯誤可能帶來的風險。
  • 模型在擷取每小時CPU和記憶體使用率時采用的聚合間隔為1小時,用于計算時所使用的是平均值。是以,可能實際的CPU和記憶體使用情況要高于預計情況。與此同時,根據經驗,業務在實際過程中可能出現“毛刺現象”,即短時間内資源使用率突然拉高,後又立即恢複。為了應對這樣的突發情況,需要有一套監控和報警機制,當實際資源使用率高于門檻值時,能自動化的進行臨時擴容,必要時需采取熔斷措施[11]。

八.繼續優化的方向

8.1業務量變化與資源使用率的關系

        雖然現階段,公司的業務比較穩定,但是随着公司的發展,業務量不可能是一成不變的。幸運的是,我們公司雲端請求的業務量的變化是可以提前預知的,不用采用回歸的方式去預測。因為公司的雲端服務服務對象主要是智能家居和機器人裝置,我們可以根據銷售量,準确的知道數天後(通常延後的時間是物流時間)業務量的變化情況。我們需要去統計的是,公司的不同品類的産品增加量與CPU和記憶體使用量的關系,進而根據不同品類的銷售量,來計算出未來一段時間,CPU和記憶體的使用需求。

8.2 結合搶占式執行個體

        該模型隻考慮了包年和按需付費這兩種購買模式,當作者在寫這篇文章的時候,發現阿裡雲近期新推出了一種模式,即搶占式執行個體。搶占式執行個體也是一種按需執行個體,與普通的按需執行個體不同的是,搶占式執行個體的每小時價格不是一成不變的,而是會根據供需關系的變化,改變單價。通常,搶占式執行個體的價格要低于按需執行個體。在購買搶占式執行個體時,必須為指定的執行個體規格設定一個價格上限(即願意為這個執行個體規格支付的最高價格),當指定的執行個體規格目前市場價格低于出價時,就能成功建立搶占式執行個體,并按目前市場價格計費。當供需關系發生變化導緻市場價格高于出價時,執行個體會被自動釋放。

    搶占式執行個體适用于非實時性的,非關鍵型的應用。通過搶占式執行個體可以顯著降低價格。通過擷取搶占式執行個體不同規格的價格曲線,預測市場價格,并在模型中加入應用類型的分類,增加限制條件,可以進一步優化費用。

8.3 增加阿裡雲其他産品的計算

        在這篇文章中,作者隻考慮了阿裡雲ECS的費用最小化。但是在實際業務中,除了ECS産品,我們通常都需要應用其他一些阿裡雲産品,如RDS[12],MQ[13],OSS[14]等等。對這些産品,與ECS類似,也有多種規格,和不同的付費方式,我們可以給每種産品分别建立線性規劃模型,得出最優解,然後計算出阿裡雲使用總成本的最優解。當然,多個産品可能帶來一些額外的複雜度,比如,不同産品之間是會有依賴關系,是以需要考慮模型計算的順序,前一個模型計算出來的結果,可能會成為後一個模型計算的限制條件。

九.總結

        以上是作者關于優化阿裡雲ECS産品資源購買決策做成一些嘗試,提出來供大家一起探讨,有任何建議或意見也歡迎聯系作者。

        最後希望阿裡雲智能顧問産品越做越好,能早日幫助企業決策者分析産品使用情況,合理優化組合,降低使用費用,實作共赢。

參考資料:

[1] 阿裡雲 

https://www.aliyun.com/

[2] 阿裡雲ECS 

https://www.aliyun.com/product/ecs

[3] AWS公有雲 

https://aws.amazon.com

[4] Cost Explorer 

https://aws.amazon.com/aws-cost-management/aws-cost-explorer

[5] 阿裡雲智能顧問 

https://www.aliyun.com/product/advisor

[6] 阿裡雲地域及可用區 

https://help.aliyun.com/knowledge_detail/40654.html

[7] 阿裡雲ECS産品規格 

https://help.aliyun.com/document_detail/25378.html

[8] 阿裡雲ECS産品價格 

https://help.aliyun.com/document_detail/25398.html

[9] Docker容器 

https://www.docker.com/

[10] Kubernetes 容器編排架構 

https://kubernetes.io/

[11] 微服務架構下的熔斷 

https://yq.aliyun.com/articles/7443

[12] 阿裡雲RDS 

https://www.aliyun.com/product/rds/mysql

[13] 阿裡雲MQ 

https://www.aliyun.com/product/ons

[14] 阿裡雲OSS 

https://www.aliyun.com/product/oss

[15] 商務與經濟統計 原書第 13 版 戴維 R. 安德森 機械工業出版社

[16] 資料、模型與決策 原書第 5 版 弗雷德裡克 S.希利爾 機械工業出版社

繼續閱讀