Serverless計算
- 2022 年 1 月 23 日
- 筆記
- Serverless, 雲計算
雲服務的演化歷程
整個it系統服務的搭建,隨著時間有多個層級的演化。從最早的內部部署(On-premises) 到基於雲的Iaas,Paas,Saas,Baas, Faas。服務的構建對開發者越來友好,也更低成本。
內部部署(On-premises)
最早的IT系統在部署時,其依賴的所有環節,皆需IT企業自己搞定,成本和門檻都很高。伺服器要放置在機房管理,伺服器上要裝系統,機房需要打通網路,磁碟不夠要買硬碟,此外還要考慮多機房災備等等。這些對大企業來說尚且有難度的種種,對創新企業更是難上加難。
於是以亞馬遜AWS為代表的雲供應商誕生了,早期他們所提供的Iaas能夠很好的解決上述諸多不便
基礎設施即服務(Infrastructure as a Service)
雲服務商管理機房、伺服器、磁碟、網路接入這些硬體問題。而在其上,使用虛擬化的方式供IT公司自主選擇資源大小、性能, 自此基礎設施物理的繁雜工作被屏蔽。軟體開發公司只需要安裝作業系統、各種中間件(比如MQ,RPC框架、資料庫等),然後構建應用部署,並提供服務
平台即服務 (Platform as a service)
當系統以微服務構建時,服務調用該怎麼註冊發現、數據量太大時,怎麼分散式的存儲。日誌怎麼收集查詢,整個系統該如何監控等等依然需要強大的Devops團隊,進行運維。為了解決這個問題,雲供應商在基於Iaas的基礎上提供了Paas平台,它們以平台化的方式提供存儲、監控、服務治理等服務,使得軟體供應商,只需要專註於具體的應用開發和部署即可。
就拿數據存儲來說,阿里有RDS,騰訊有TDSQL。這些Paas級的平台,提供了很好的可靠性和擴展性,使得初創公司可以專註於業務開發交付,而不是一定要請個DBA
軟體即服務 (Software as a service)
前三者都是針對的軟體供應商本身的開發運維方式。而Saas只的是軟體開發好後的服務提供方式。比如一個CRM系統,
- 本地化部署, 客戶出於對數據安全的需求,需要將CRM部署在其公司內部,這可能就牽扯到On-premises模式,需要客戶方的IT小組搞定相關的依賴環境
- 私有雲部署,客戶購買軟體後,將CRM部署在自己私有雲,或者在公有雲上買相關的Iaas、Paas服務,將CRM系統部署其上。總之這套系統是某個客戶獨享的
- Saas話部署,CRM軟體供應商,開發初期,就將CRM以租戶的概念進行設計研發。這樣後期使用CRM系統的客戶,只需要付費開通一個帳號,即可享有整個系統服務。
所以Saas不是一種開發部署方式,而是一種系統服務提供方式,他不牽扯開發運維的便捷性,而取決於客戶需要什麼樣的軟體服務形式。軟體供應商開發的Saas服務,完全也可以使用內部部署的方式,暴露到公網。或者使用共有與的Iaas,Paas平台。
Serverless是什麼
無伺服器計算 (Serverless computing) 。同Iaas、Paas一樣,更多的是針對軟體供應商在軟體開發運維過程中的進一步的封裝抽象,降低開發門檻,使其更加拒絕到業務交付
基於函數和事件更細粒度
傳統的微服務系統,最小的開發粒度是一個微服務。而 serverless引入的概念是Function,可以理解為一個功能。比如一個用戶中心微服務,就可以拆解為用戶註冊Function,用戶登錄Function ,用戶查詢Function等。
這些功能Function之間以事件進行通訊。Function的運行、Event的轉發都是有雲供應商來管理控制
冷啟動、按需付費
傳統方式構建的微服務系統,無法動態擴容,比如針對雙十一大促,一個電商公司可能需要提前基於預估的流量進行資源申請,系統擴容。預估不可能精確,估少了,流量一大,系統容易崩掉。估多了,資源要真金白銀的收費,對公司也是一種損失。
Function的功能夠單一,夠精簡使得雲供應商的serverles可以按需冷啟動部署Function。軟體開發人員,可以按需付費。
無伺服器和運維
以微服務方式開發系統,我們需要關注服務要部署幾台容器。要基於運維時刻關注系統吞吐量,以便在遇到系統瓶頸時進行系統擴容。而使用 Serverless,開發人員再也不用關注伺服器和運維這兩件事, Serverless雲供應商來自動化解決
參考資料
#executive-summary-summing-up-saas-vs-paas-vs-iaas
//serverless-stack.com/chapters/zh/what-is-serverless.html
//aws.amazon.com/cn/blogs/china/iaas-faas-serverless/