就在幾天前,AWS微信公眾號發佈了回顧AWS過去十年(2006-03 ~ 2016-03)發展歷程的一組數據。其中有一項數據讓我非常吃驚,如下圖:
為什麼會對此吃驚呢?如果對照上面的數據和個人瞭解到的其他方面信息,我得出了下面的結論:
目前,AWS僅競價實例的計算能力大概和2015年底國內所有主流公有云平臺(運營商除外)的雲主機計算能力總量相當。
如果你理解競價實例的含義,相信你也一定和我一樣驚訝於上面的結論。當然,如果你還不瞭解競價實例也沒關係,等我下面解釋完後相信你會理解我為什麼會驚訝。
什麼是EC2競價實例?
EC2實例按購買模式分為“按需實例(On-demand Instance)”、“保留實例(Reserved Instance)”和“競價實例(Spot Instance)”。相比較於按需實例和保留實例,競價實例非常不一樣.該實例的價格隨著供需關係的調整在不斷更新。用戶可以為獲取該實例出一個自己接受的最高價格,如果當前市場的價格低於用戶的出價,則用戶獲得(或者保留)實例資源進行計算。一旦市場價格高出用戶的出價,則該計算資源會被亞馬遜直接收回(注意:直到2015年亞馬遜才會提前兩分鐘通知用戶需要收回競價實例,之前都是直接收回實例)。通過上面描述,可看出EC2競價實例有兩個特徵:
- 該實例的價格隨供需隨時變化;
- 該實例是會被AWS隨時收回(如果你的出價不夠高);
目前的EC2競價實例到達多大規模?
如前所述,EC2的競價實例很難滿足通常我們對於一個雲服務的定義。很多時候,大家都把它作為AWS售賣自己閒置資源的一種手段而已(它最開始確實也是這個目的),所以自然就不會認為其會達到多大規模。但是根據前面AWS公佈的數據,這個量確又是非常驚人。為什麼這麼說呢?前圖提到其平均計算能力已經超過了2012年的所有EC2實例計算能力的總和。那我們就首先估計一下AWS在2012年的時候所有EC2實例規模。
儘管AWS從來不發佈其虛機實例的具體數量,但是還是有很多第三方機構和合作夥伴會有相關推測。其中大家比較認同的一組數據來自這篇文章(https://huanliu.wordpress.com/2014/02/26/amazon-ec2-grows-62-in-2-years/)。在這篇文章中,作者對AWS全球數據中心的機櫃數目做了個估算(如下圖):
從上圖可以看出,在2012年三月份EC2的全球機櫃數目至少到了7100個,按照文章中提到的當時機櫃服務器平均密度(120臺/rack),可以得出當時EC2虛機數下限為:
7100 x 120 = 85.2萬(臺)
如上數字還是隻是2012年年初的數字,按照同篇文章的數據,到2013年十二月份EC2虛機數目已經到達297萬臺。由此可以推測即使在2012年年中的時候AWS活躍EC2臺數也已經達到100~120萬臺的規模。而這個規模意味著什麼呢?按照我個人的判斷,國內現在所有主流公有云廠商(不包括運營商)在2015年底的規模總和大概也就在這個規模。所以,可想而知EC2的競價實例的規模已經有多大了。就是這種價格隨時變化、可以被AWS隨時收回的實例,其規模都已經趕上全國各種雲主機的總量。這種為“去庫存”而引入,本以為會是小眾需求的實例類型,現在卻已經是AWS用戶中的一種常態。所以,我們在對此感到吃驚的同時也值得好好反思其背後的原因。
注:由於Spot Instance會隨時被AWS收回,所以用臺數描述Spot Instance的規模不太合適。更嚴格的方式應該是計算能力(CPU/Memory量)。這裡為簡單起見,我用虛機臺數做一個大概對比,可能不太嚴謹,但對整個結論應該沒有實質性影響。
為什麼競價實例這麼受歡迎?
當然,如果初看競價實例上面的兩個特徵,很多人會可能困惑為什麼這種實例這麼受歡迎。但是,如果深入思考,我們會發現這種實例其實是一種對於AWS和用戶雙贏的一種產品形態。
競價實例是AWS售賣閒置資源的很好方式
對於公有云廠商來說,為最大保障其雲上彈性負載和未來發展需要,必然需要投資大量的IT基礎設施,就不可避免存在相對可觀的閒置資源。但是IT基礎設施質保期非常短且更新淘汰速度非常快。所以必須要及時處理掉這些可能的閒置資源,但同時又不能影響其他業務開展。可以隨時收回的實例最符合這種需求,但是挑戰在於如何給這種實例定價。一種可能的辦法直接降價促銷,但AWS選擇了另外一種更符合自身利益的方式,即競價機制,由市場來發現真正的價格,從而達到儘可能以最合理的價格賣出最多閒置資源的目標。所以,競價實例這種產品形態也就由此而生。
在競價實例的發展過程中,AWS還發現了它的另外一個非常好的用途,就是甩賣上一代EC2實例。由於CPU/Memory/Disk的快速迭代,為保證市場競爭力,AWS虛機類型迭代週期非常短,過去一段時間基本是一年更新一代(最新虛機類型已經是第四代)。由於價格差距不大,客戶在購買按需實例和預留實例時傾向於最新代的虛機類型(性價比最高)。由於機器質保期會比更新週期長几倍(一般為三年),所以較老類型的虛機閒置比例就會偏搞。通過競價實例為這些老型號閒置虛機提供了一個“去庫存”的途徑。如果仔細觀察競價實例的價格,你會發現老一代的實例類型其競價實例價格最便宜,而且波動還很小。所以,充分發展競價實例是AWS在保障自身虛機類型快速迭代的同時避免老型號虛機過度限制的有效途徑。
綜上來說,你可以看到競價實例對於像AWS這樣大規模的公有云供應商來說是一個非常有益產品形態,所以AWS自生也有足夠願意促進其發展。
競價實例為用戶部分業務提供廉價計算資源
對於雲平臺上的用戶來說,其業務形態非常多樣化。既有那些對於連續運行和實時響應要求非常高的在線業務,又有大量離線業務和實時性要求不敏感的業務,還有常見的高性能計算(HPC)場景。甚至,用戶端還存在部分對於成本非常敏感的業務(當處理成本高於某個閥值後該業務的商業價值就不存在,如某些日誌處理業務)。在過去,無論用戶的業務類型是哪種,他能獲得的資源都是為在線業務所準備的。競價實例的出現為非在線業務或者成本敏感業務提供了一種全新的計算資源類型。
由於競價實例會有可能被隨時收回,其市場價格比按需實例和預留實例便宜非常多,否則用戶就會轉向購買另外兩種實例。例如,下圖就是AWS新加坡區域m4.large類型(Linux操作系統)競價實例過去一週的價格走勢圖:
從上圖可以看出該類型競價實例過去一週價格一直在$0.02/小時上下波動。對比另外兩種購買方式,競價實例的價格優勢非常巨大(如下表)。
注意:除了如上價格波動和隨時會被收回這兩特徵外,競價實例和其他兩種EC2實例沒有任何使用上的區別。
根據AWS官方博客(https://aws.amazon.com/blogs/aws/new-ec2-spot-instance-termination-notices/),已經有不少大型企業(如本田汽車)成功使用AWS的競價實例把部分業務的計算成本下降高達70%。
競價實例的使用門檻在不斷下降
由於競價實例在價格和回收上的不確定性,導致競價實例的使用門檻比其他類型實例要高不少。除了對於業務自生的要求外(如可中斷、對完成時間不敏感等),如何定義競價策略,選擇最佳組合方式等也都有不低門檻。非常幸運的是,如同AWS其他服務一樣,AWS為競價實例的各種操作(出價、查詢歷史價格等)提供了全部API,這也讓自動化購買競價實例成為可能。得益於此,各種圍繞競價實例的第三方公司紛紛出現。它們主要是幫助客戶制定競價策略,根據歷史競價記錄實時調整出價,從而幫用戶用最少的錢最快完成計算任務。當然,AWS也在不斷改進競價實例的用戶使用體驗。去年,AWS為競價實例推出了全新的Spot Fleet API。簡單來說,通過這個API,用戶不再需要關注每個競價實例的具體競價策略,轉向關注自己業務需要的計算量、完成時間以及成本,而具體競價實例的組合搭配則由AWS在後臺根據當前競價實例價格智能幫助用戶選擇。Spot Fleet API的每次競價請求需要用戶提供的參數包括如下:
- 需要的計算資源量(如CPU總核數、Memory和Disk的總容量)
- 可以承受的最高單價
- 該申請的有效期
- 啟動實例的初始化配置(如鏡像ID、UserData等)
下圖就是AWS Spot Fleet操作的界面:
有了大量第三方公司及AWS自身的努力,競價實例的使用門檻在不斷下降,讓越來越多的用戶都有可能使用好競價實例並從中收益。
競價實例在國內有可能落地嗎?
既然競價實例在AWS全球市場的發展勢頭這麼好,它在國內能夠落地嗎?具體可以如下分析:
- 首先,本人還沒有在國內雲市場上發現一家提供競爭實例類型的供應商。即使是AWS在國內也未提供該服務(估計最大的挑戰還是國內數據中心規模不夠大,希望其寧夏數據中心對外開放後能夠提供該類型實例)。
- 其次,很多人擔心國內用戶是否能夠接受競價實例。這個擔心也非常合理,畢竟國內主要的雲主機使用方式仍然是包年包月模式,按需付費的實例類型都還未普及。所以,用戶對此接受確實需要一段時間。但是,用戶不同業務對不同模式計算資源的需求是會長期真實存在的。一旦市場上有這種類型實例出現,我相信一定會有用戶去嘗試,畢竟這可以大大降低用戶某些業務的計算成本,增強市場競爭力。
- 再次,國內雲供應商有沒有主動推進競價實例落地。短期看,以包月模式為主的國內雲供應商對競價實例的推進意願不會太強,他們更可能是通過降價促銷的方式來消化庫存。但是,我相信隨著雲主機規模的擴展(如國內雲主機規模到達1000萬臺時),公有云供應商在庫存上的壓力會快速提升。這時候如何以最合理的市場價格消化庫存會是一個重要課題,尤其是那些以按需服務為主要實例類型的供應商,其彈性負載導致的庫存劇烈變化一定會需要一種比降價促銷更高級的去庫存方式。這時候競價實例的推出就會自然而然得到來。
如上所述,競價實例在國內的落地仍然需要一個較長的時間。在這個過程中,無論公有云供應商還是雲上用戶都需要做出改變和努力。
- 首先,如我之前翻譯的那邊文章「為什麼說一個EC2實例並不是一臺服務器」所言。用戶要逐步改變把雲主機僅僅當成傳統服務器的替代品使用的觀念,逐步能讓雲主機成為部分業務的一個building block。這時候,競價實例就能給你的業務帶來最大的價值。
- 其次,作為公有云供應商。為了避免產品同質化競爭和虧本的降價促銷,希望能夠積極考慮競價實例(以及按需實例),從而形成自身的差異化競爭點。其實,個人一直覺得不用特別擔心用戶會不會使用好競價實例,給用戶提供足夠好的基礎組件,然後讓用戶去玩出各種花樣也未嘗不是一個很好的技術路徑選擇。其實,這也是AWS產品設計的一個重要原則:提供基元組件而不是框架服務。
附錄材料
下圖是AWS EC2實例購買方式演化歷程。注意,為滿足用戶需要使用競價實例不中斷完成一段時間負載的要求,AWS在2015年還開始提供Spot Block Instance。這種競價實例有固定預留時間(1個小時或者6個小時),在預留時間內不會被AWS主動收回,但是其申請時候的價格仍然是不斷變化的(比標準的競價實例稍微貴一點),關於Spot Block Instance的具體細節請參考AWS博客文章(https://aws.amazon.com/blogs/aws/new-ec2-spot-blocks-for-defined-duration-workloads/)。
Google於2015年推出可中斷實例類型(preemptible VM)。和AWS競價實例類似,它可以隨時被搶佔。但非常有趣的是Google對此類實例提供的是一個固定折扣價格(70%折扣)。具體可見Google雲平臺官方網站(https://cloudplatform.googleblog.com/2015/05/Introducing-Preemptible-VMs-a-new-class-of-compute-available-at-70-off-standard-pricing.html)。
編者注:本文作者徐桂林,為FIT2CLOUD(飛致雲)首席佈道師、東區總經理。
文章發佈時間: 2016年4月6日
閱讀更多 FIT2CLOUD飛致雲 的文章