按需付費(fèi):使用云計(jì)算的正確姿勢
原文編者按:正文開始前,首先允許我介紹下作者,因?yàn)檫@篇文章讓我對(duì)我司的這位北大學(xué)霸又有了新的認(rèn)識(shí),他的手機(jī)移動(dòng)電源都是在公司充好電才帶回去,簡直太會(huì)過日子了。。。不過也只有這種精神才能寫出這篇文章。因?yàn)?,?duì)于采用云計(jì)算的企業(yè),省錢也是訴求之一。
下面進(jìn)入正文:
都說云計(jì)算像水和電,你會(huì)水龍頭一直開,出門不關(guān)燈么?
傳說中云計(jì)算的優(yōu)點(diǎn)是快捷便宜,說快捷可能分歧不大,在界面上點(diǎn)幾下一臺(tái) VM 幾分鐘就出來了,可說到價(jià)格分歧就來了。去 IDC 買一臺(tái)物理機(jī)的價(jià)格可是要比買同等配置的云主機(jī)一年便宜多了,那么使用云計(jì)算真的就比物理機(jī)貴么?我們用怎樣的姿勢來使用云計(jì)算才能達(dá)到成本的***化。
按需付費(fèi)
降低成本的核心秘訣就是四個(gè)字——『按需付費(fèi)』。
都說云計(jì)算像水電,你會(huì)把水龍頭放到*** 7 * 24 一直開著,所有的燈不分白天黑夜都這么亮著么?一般人還會(huì)把洗衣服的水留下來沖廁所,拔下幾個(gè)燈泡省電,手機(jī)移動(dòng)電源也都是在公司充好電才帶回來。。。
為什么到用計(jì)算資源的時(shí)候就不管有用沒用,使用率多少就一直開著,一直付費(fèi)呢?
對(duì)于一些不需要一直在線的服務(wù),比如定時(shí)任務(wù),離線數(shù)據(jù)處理如果為他們單獨(dú)分配一臺(tái)機(jī)器,那么假設(shè)這一臺(tái)機(jī)器一個(gè)月 30 元,服務(wù)一天只有 8 個(gè)小時(shí)是工作的,那么每個(gè)月有 20 元你相當(dāng)于是送給云服務(wù)商的。如果你能夠精細(xì)的控制服務(wù)的啟動(dòng)停止時(shí)間,只在服務(wù)運(yùn)行的時(shí)候開啟機(jī)器,那么每個(gè)月的費(fèi)用會(huì)有大幅下降。
對(duì)于在線服務(wù),傳統(tǒng)上我們?yōu)榱祟A(yù)防訪問的自然增長以及某些情況的訪問突增對(duì)機(jī)器造成的壓力,會(huì)把機(jī)器的負(fù)載控制在很低的水平。可能當(dāng)前的水平 1 核 1G 就可以應(yīng)付,我們?yōu)榱朔乐瓜到y(tǒng)抖動(dòng)非得弄個(gè) 4 核 8G 的,CPU 使用上了 20% 都心驚膽戰(zhàn),恨不得 CPU 使用率只有個(gè)位數(shù)。這樣你相當(dāng)于用花費(fèi)了一個(gè)預(yù)想的峰值費(fèi)用,卻只真正使用了其中很小的一部分,把剩下的錢又拱手送給運(yùn)廠商。
如果我們也像摳自家水電那樣來思考,我們應(yīng)該讓每臺(tái)已有的機(jī)器負(fù)載盡可能的高,等到峰值來的時(shí)候,就像開大水管一樣再放幾臺(tái)機(jī)器出來,等到峰值過去再把水管放小,一毛多余的水電費(fèi)也不交,而且再也不用年初頭疼今年預(yù)算到底該怎么做了。
如果一切都能按照按需付費(fèi)的理念來的話那么每一分錢都會(huì)被壓榨出最多的價(jià)值,然而現(xiàn)實(shí)卻不是那么美好。
現(xiàn)實(shí)殘酷
按需付費(fèi)的理想很美好,但現(xiàn)實(shí)很殘酷。說是按需付費(fèi),前提是云廠商有能力提供按需付費(fèi),但是很多的粒度都是 1 小時(shí),即使用了 1 小時(shí) 1 秒也要收取 2 小時(shí)的錢。能夠按秒計(jì)費(fèi)固然很好,但小時(shí)級(jí)別計(jì)費(fèi)相對(duì)于包年包月來說已經(jīng)好了很多,但是還會(huì)有一些嚴(yán)重的問題限制了我們自由地按需使用云計(jì)算。
按需使用就意味著頻繁的啟動(dòng)、停止、擴(kuò)容、縮容,目前云廠商提供計(jì)算資源通常在分鐘級(jí)別,而給一個(gè)裸機(jī)裝上你的服務(wù)通常又要很長時(shí)間,等待的過程就會(huì)讓人心情煩躁,等擴(kuò)容成功峰值早就過了。如果提供秒級(jí)別的計(jì)費(fèi),但是服務(wù)上線卻要小時(shí)級(jí)別,那么這種按需還是不要的好。
另一方面,動(dòng)態(tài)的擴(kuò)容縮容對(duì)維護(hù)人員來說也是個(gè)負(fù)擔(dān),之前買好機(jī)器在固定的時(shí)間進(jìn)行部署,現(xiàn)在動(dòng)不動(dòng)就會(huì)需要上線下線,可能在凌晨深夜,也可能在外出玩耍,要是如此崩潰的按需使用,那么還是讓我浪費(fèi)點(diǎn)錢,包年包月,把水龍頭開大點(diǎn)吧。
云計(jì)算的武器
為了能夠按需使用,我們需要更快的部署速度和更方便的部署方法,給我們的水龍頭加上智能控制。
云服務(wù)一般會(huì)提供虛擬機(jī)鏡像服務(wù)來更快的創(chuàng)建服務(wù),但是:
1.一來虛擬機(jī)鏡像的創(chuàng)建是個(gè)比較重量級(jí)的操作,基礎(chǔ)環(huán)境做鏡像還比較合適,而頻繁變更的服務(wù)去自動(dòng)化做鏡像是一件比較麻煩的事情;
2.二來即使有了鏡像如果是分鐘級(jí)別的啟動(dòng),也達(dá)不到我們按需使用的要求。
而快速的部署和秒級(jí)別的啟動(dòng)是 Docker 所擅長的領(lǐng)域。如果我們能把服務(wù)利用 Docker 鏡像進(jìn)行封裝和分發(fā)并運(yùn)行,那么我們就可以達(dá)到秒級(jí)別的部署和啟動(dòng)。當(dāng)然前提是這個(gè)云廠商是賣 Docker 容器的,如果你是靠買虛擬機(jī)再管理 Docker 的話,那么反而會(huì)更累。
Docker 能解決部署速度的問題,但是頻繁部署所帶來的手動(dòng)操作問題并沒有解決。這種操作盡管可能在界面上點(diǎn)幾下就可以,但是自動(dòng)化才是云計(jì)算的正確使用姿勢,不然盡管計(jì)費(fèi)達(dá)到秒級(jí)別,部署也達(dá)到秒級(jí)別,但是人的響應(yīng)卻要幾分鐘到數(shù)小時(shí),那么前面的速度依然沒有意義。
我們希望使用云計(jì)算能像使用智能家電那樣,所有東西都是自動(dòng)化的,進(jìn)門燈亮,出門燈關(guān),空調(diào)自動(dòng)調(diào)控室內(nèi)恒溫,完全不需要人動(dòng)手。這就需要平臺(tái)能夠提供足夠的 API 讓使用者能夠自主的隨心所欲的控制所有的計(jì)算資源。
Docker 和 API 是我們能夠自由按需使用云計(jì)算的兩大利器。在構(gòu)建靈雀云的平臺(tái)的過程中,我們也一直在按照按需使用的目標(biāo)前進(jìn),目前我們的服務(wù)都是按秒計(jì)費(fèi),并且可以通過API實(shí)現(xiàn)按需啟停??梢酝ㄟ^調(diào)用API啟動(dòng)服務(wù)時(shí),設(shè)置以下兩個(gè)參數(shù)實(shí)現(xiàn):
- started_at 啟動(dòng)時(shí)間
- stopped_at 停止時(shí)間
完整的API介紹文檔:http://docs.alauda.cn/api/services.html
作者簡介
劉夢馨,靈雀云高級(jí)軟件工程師,兼相聲大師,目前在靈雀云從事CaaS平臺(tái)的研發(fā)工作。從事過開發(fā)、測試、運(yùn)維相關(guān)職位,專注于云計(jì)算和虛擬化技術(shù)。個(gè)人博客 http://oilbeater.com。