微服務方興未艾,Serverless橫空出世。

關于Serverless,網上衆說紛纭,本人也是前幾個月剛剛了解到Serverless,但第一次看到Serverless就感覺這應該就是雲計算的未來,由于還處于很早期的階段,毫無疑問,Serverless還有很多缺點,如實時性不足、運作時長限制等,但相信随着技術的進步,這些問題都會逐漸解決,本文隻談談Serverless相對傳統基礎設施的優勢,以及為什麼Serverless很可能是雲計算的未來趨勢。
Serverless通常被翻譯成無伺服器架構,它是一種事件驅動的函數級計算服務,同時也是一種極緻的微服務設計,彈性伸縮能力無與倫比。
Serverless平台是一種高度抽象的代碼運作環境,它能直接冷啟動一段邏輯代碼,既簡單易用又無比強大,使用者無需管理伺服器,僅僅寫出業務邏輯代碼就能即刻運作。
目前Serverless的主要形态是FaaS(Function as a Service),國外有AWS Lambda、Azure Functions、Google Cloud Functions等,國内阿裡雲、騰訊雲等都提供了FaaS服務。
一切皆因成本
大學時無意中在圖書館看到一本書《問道雲計算》,書中一個觀點令人印象深刻,作者認為雲計算就像是國家電網,通用的計算服務将會成為像電力這樣的社會基礎設施。
現在用電很友善,牽根電線安個電表就行了,你不開電器電表就不會轉,每月電表轉多少國家電網收你多少錢,這些都太平常不過了,然而這要放到雲計算,簡直不可思議。
試想如果你家的電表換成以時間計費,你願意麼?也就是給你牽了根電線,然後不管你用沒用、用多少,每時每刻都要給你計費,而且電力功率還有限制(按你購買的雲服務CPU核數、記憶體等),超出功率就給你斷閘限電······ 你可能會驚呼:這TM就是赤裸裸的搶劫啊!
然而現在的雲計算公司就是這麼幹的,你按CPU核數、記憶體、帶寬買雲服務,不管你用沒用、用多少,每時每刻都要給你計費,而且始終按最高“功率”計費。
但這也并不代表雲計算公司多麼暴利,虛拟機成本本來就這麼高,容器成本也不低,為此AWS很早就提供了EC2競價執行個體,現在很多雲計算公司都推出了按秒計費的雲伺服器,但這依然還是延續着那種粗暴的計費方式,成本依舊高昂。
在所有的經濟活動中,成本一定是首要考慮的因素之一,Serverless對傳統雲伺服器的颠覆就在于它極大的成本優勢,它能精确地按計算量來計費,就像電表按用電量計費,與時間無關一樣,避免了虛拟機、容器大量的計算資源閑置浪費,對普通使用者來說,成本上可以秒殺虛拟機和容器,能夠大幅降低雲計算服務的價格。
雲計算的門檻
現在的雲服務就像是早期的發電站一樣,提供的是不同電壓不同功率的電力,你得自己買變壓器、自己去搭高壓線、自己去搗騰變壓器電壓頻率,然後才能用,serverless則是直接讓國家電網給你220V 50Hz的電力,你直接插上插頭就能用了。
Serverless就像插座一樣即插即用,極大地降低了雲計算的接入使用門檻,通過FaaS加API網關基本上可以重構大部分的企業級應用。
未來在Serverless平台上建立高可用、高可擴充性的微服務将是異常簡單的事情,隻寫點業務代碼就行了,你根本不用去考慮架構、擴充、并發之類的問題。是以有了Serverless,普通人完全沒必要花大價錢買雲主機或容器服務,既麻煩又浪費。
未來Serverless很可能取代虛拟機和容器,成為雲計算的主流形态,雲計算使用者可能也不會再接觸虛拟機和容器了,直接面向Serverless開發就行了。
此外Serverless基于事件驅動,部署更新比容器更快,這在靈活開發、持續內建中更有優勢。
IT的基礎設施
要成為基礎設施,首先是要讓人放心,但目前雲計算依然是一件讓人操心的事情,開發部署應用時你需要考慮可擴充性、高可用性,每個服務一般都要部署多個執行個體,還要做服務發現、負載均衡、容錯斷路等,容器還要用Kubernetes管理叢集······
但對開發人員而言,他們隻想專注于業務邏輯,并不想為伺服器管理和運維有關的基礎設施問題操心。
Serverless幾乎把這些IT的基礎設施問題一次性解決了,Serverless天然具備高可用、完全的彈性伸縮等特點。
國外的工程師給 Serverless 打出一句口号就是:
Focus on your application, not your infrastructure.
熵的轉移
從單機到分布式叢集,從虛拟機到容器,從單體應用到微服務架構,無論IT系統如何演變,系統的複雜性都不會降低,而且還會呈指數級增加,這就像實體世界的熵增加原理一樣,系統隻會演變得越來越複雜和難以管理。
實際中應用開發越來越簡單是因為我們不斷把複雜性從上層轉移到下層,最終通過自動化程式把複雜性從人轉移給了機器,是機器最終承擔了底層越來越複雜的重擔,通過這樣的複雜性轉移就能不斷降低IT系統的成本。
Serverless對傳統的IT架構是颠覆性的,它更徹底地把複雜性轉移給了基礎設施,把IT系統的熵不斷轉移給機器,剩下的隻是業務的複雜性。
重新定義雲應用
傳統的應用都是常駐記憶體型,每個應用啟動時都需要開辟自己的程序并常駐在CPU、記憶體中,這種應用不僅長時間占用硬體資源,而且啟動速度很慢,例如在容器環境中,使用Java開發的微服務啟動速度明顯偏慢,而短時間、快速啟動的函數單元則具有明顯優勢。
Serverless一個了不起的地方就是它的應用不是常駐記憶體的,隻有你去喚醒它,觸發它的事件時才會占用計算資源,其他時間都是退出硬體靜靜地躺在硬碟上的檔案而已。
很多人以為提供虛拟機、容器管理就是雲計算了,以為虛拟機容器就能把計算資源抽象出來了,那其實和以前的伺服器租賃沒啥差別,正如《問道雲計算》書中所說,它并沒有建構出通用的計算資源池,真正的雲計算應該像Serverless這樣,對硬體基礎設施進一步抽象,建構出通用的計算資源池。從這個角度來看,Serverless在重新定義雲計算的形态。
除了雲基礎設施,Serverless同時也在重新定義雲應用,傳統的軟體形态可能必須重構,運作在Serverless平台上的函數式應用可能才是雲應用的應有形态。
展望Serverless的未來
未來的Serverless平台上,通過函數式應用調起硬體資源,不管底層是CPU、GPU、FPGA還是ASIC,都可以通過FaaS提供計算服務;上層都是統一的函數式應用,不管你是普通的web服務、多媒體處理還是神經網絡訓練,都可以通過FaaS擷取計算服務。
當然目前來看,Serverless還遠未成熟,但從未來來看,Serverless必将是雲計算的一道曙光,甚至是雲計算的一場革命。
掃一掃關注我的微信公衆号
轉載于:https://my.oschina.net/tanterry/blog/1584024