當前位置:
首頁 > 最新 > Serverless真的不需要伺服器嗎?

Serverless真的不需要伺服器嗎?

凡事皆有「二八效應」:你真正關注的部分只有整件事情的20%;你代碼中80%的功能是由20%的核心部分實現……

不過,為了這20%能運轉得好,你還得和那80%作鬥爭——設置虛擬機實例,安裝必要的框架和庫等等「腳手架」工作。更麻煩的是,你還要考慮怎麼保證這些「腳手架」自己不出問題……

有沒有更有效率的方法來完成這些事情?

今天,我們來聊聊Serverless這個概念。

自從AWS發布Lambda之後,Serverless的概念就立馬火了起來。

各大廠商紛紛推出自己的類似方案,例如微軟的Azure Functions,谷歌的Cloud Functions。大家都號稱自己的Serverless實現很棒。

「半路殺出個程咬金」。沒想到一家創業公司搶先用「Serverless」註冊了公司名,還在各家形態各異的API的基礎上建立了一個統一的封裝框架,提供統一的介面。

那到底什麼是serveless呢?是否真的就像其字面意思,不需要任何伺服器呢?接下來我們就來深入了解下這個很火的技術方案。

在前面的一篇文章中,我和大家聊過IaaS, PaaS和SaaS。

其中的IaaS和PaaS分別代表了Infrastructure(基礎設施)和Plaftform(運行平台)。我們先簡要回顧下這兩個名詞,看看它們能不能幫你把不想乾的80%解決掉

AWS是最早的IaaS提供商,起初的目標是利用其豐富的運維經驗、高效的執行能力把「運維」作為一種服務賣給開發者

作為美國最大的電子商務公司,為了解決每年「黑五」的流量挑戰,Amazon需要準備大量的冗餘機器,以備不時之需。

可是看著這麼多的機器睡大覺,就像「守著金山過苦日子」一樣,太浪費了。不用白不用,Amazon把這些資源「包裝一下共享之」就是個水到渠成的想法。這就有了IaaS。

這樣,開發者只需要關注業務的實現,至於底層基礎設施的規劃、部署和運維,包括設置DNS伺服器,搭建監控系統,建立存儲系統等等,就可以讓AWS之類的運營商來負責。

然而,即使有了IaaS,開發者還是需要考慮更高層次上的高可用性,例如系統每個組件的穩定性、可靠性、高性能

而PaaS的出現在某種程度上解決了這個問題,但是自身過多的限制導致了它的適用場景有限。

所以,IaaS, PaaS可以幫你解決不少低層的問題,但是還不能全部「幹掉」那80%。

通常在IaaS和PaaS中都有Server這個概念。既然大家都渴望卸下更多的責任,於是大佬們「一揮手」,Server就不見了。Serverless橫空出世了。

跟PaaS只能在框架中實現功能所不同的是,Serverless中的功能服務是通過API開放給開發者。開發者就像「搭樂高」一樣,利用這些基礎功能「組裝」成各種應用服務。

Serverless是用服務來代替伺服器,所以開發者可以通過多個第三方API提供的功能來實現自己最核心的業務邏輯。

進一步,整個業務邏輯代碼被封裝成微服務,其部署、擴展、運維都被託管。開發者只需要按照代碼運行消耗的資源來付錢就可以了。

這樣IaaS,PaaS中所不能避免的組件高性能、擴展、可靠性等問題都被Serverless提供商給解決了。

伺服器的配置、部署、操作系統以及各種依賴庫的更新等等問題,開發者也都不需要考慮了,只管專註地寫自己的核心業務邏輯就好了。

但是Serverless不代表再也不需要伺服器了,就像無線網路不可能真正做到「無線」,還是需要拉根網線入戶,Serverless其實也是需要一些基本伺服器,不過這些機器主要用來做一些輔助功能,例如網關、測試等等。

Serverless的優點很突出。

無運維。沒有內部管理系統(例如監控系統、訪問控制系統),軟硬體不需要升級、維護。安全性、可用性、性能方面的問題都由第三方服務提供商來負責。

運營成本低。Serverless的收費模式是由事件來驅動,代碼被觸發執行了才會收錢。而其他模式中實例運行起來才能向外提供服務,而開機就得付費。更何況,這些機器實例不可能百分百用滿,總會有或多或少的一些閑余時間在空轉。

擴展性高。Serverless提供商天生的對高性能、可擴展性有了深入的設計和實現。所以擴展性從來就不是問題。

開發效率高。開發者只需關注具體的業務邏輯,原本的技術限制都不需要考慮。平台把自己的升級處理好,開發者把自己的升級處理好。線上版本升級也不再複雜,升級失敗的概率也大大降低。

Serverless當然不是銀彈,最後來說說它的不足。

成也蕭何敗也蕭何,Serverless的致命缺點是嚴重依賴第三方服務提供商

第三方服務提供商的系統無法控制,收費策略也會變更。甚至無法預測的系統升級和宕機也不無可能。

另外各家提供的服務介面不兼容。這就意味著代碼想要遷移到不同的廠商,需要一些改動甚至重構,這個成本就會比較高,只能跟廠商深度耦合。

安全性受到威脅時就很難優化伺服器,不可能像公有雲/私有雲那樣實施全面的安全策略和優化措施。

Serverless的優缺點很鮮明,其應用場景也有限。如果你對Serverless有任何疑惑,可以在文下留言或者聯繫英諾思科技工作坊。

圖片來源:google.com

職場新人們,速戳鏈接收寶典!

合格的工程師不會錯過這些……

運維人員該知道的……

時事新聞/趣聞


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 英諾思科技工作坊 的精彩文章:

人人都要懂點測試

TAG:英諾思科技工作坊 |