白話普及serverless架構

最近serverless概念炒的特別的火,更有甚說今年是serverless元年,說是“無服務器服務”,以後開發如何如何省工,如何如何牛逼等。我個人覺得其實serverless的出現很早就有了,而且是伴隨着雲一起的,更多的是換了一個高大上的名字,換種玩法,炒炒概念,給公有云打打廣告。既然這個概念有的聊了,小弟不才願意拋磚引玉下。

什麼是serverless architecture(沒有服務器的架構)?

在目前主流雲計算IaaS(Infrastructure-as-a-Service,基礎設施即服務)和PaaS(Platform-as-a-Service,平臺即服務)中,開發人員進行業務開發時,仍然需要關心很多和服務器相關的服務端開發工作,比如緩存、消息服務、Web應用服務器、數據庫,以及對服務器進行性能優化,還需要考慮存儲和計算資源,考慮負載均衡和橫向擴展能力,考慮服務器容災穩定性等非專業邏輯的開發。這些服務器的運維和開發知識、經驗極大地限制了開發者進行業務開發的效率。設想一下,如果開發者只需要關注業務邏輯開發而無須關注如何在服務器中運行部署服務,無須關注性能優化服務,是否可以極大地提升開發效率和產品質量?這種去服務器而直接使用服務的架構,我們稱之爲Serverless架構。

Serverless是一種構建和管理基於微服務架構的完整流程,允許你在服務部署級別而不是服務器部署級別來管理你的應用部署。更加強調底層VM和OS的透明化;fPaaS,全稱Function Platform as a Service( 功能即服務架構)。其優勢如下:

1.完全使底層透明化,應用程序只與語言運行環境交互,無需關注硬件及操作系統。

2.採用事件驅動,服務代碼開發、部署在API請求下支持

3.運營穩定,後端伸縮計算服務提供支撐。隔離性,健壯性相對較好。

4.無須關心devops

最常見得玩法介紹:

介紹一個基於Docker的Serverless平臺的一個高層次的參考架構,要點如下:

Docker容器作爲事件處理的計算環境運行

將函數化事件處理邏輯打包成爲Docker鏡像,利用鏡像倉庫進行管理和分發

事件調度器配合Docker集羣來調度事件處理執行

白話普及serverless架構

利用Docker容器的方法實現Serverless平臺,有如下優勢:

利用Docker提供的輕量級OS虛擬化能力,能夠敏捷地創建事件執行運行環境,並提供基本的資源、安全隔離能力

使用Docker鏡像和鏡像倉庫,簡單標準地對事件處理邏輯進行打包和在分佈式環境下進行軟件分發;通過Docker鏡像的版本管理和追蹤能力,可以管控應用發佈,保證應用在大規模分佈式環境中部署的一致性。

在Docker容器內部,開發人員可以自由選擇使用不同的語言和框架進行事件處理,容器之間不會相互干擾。

Docker容器提供了標準化的外界環境交互的能力,應用邏輯可以通過環境變量、文件卷或者網絡來訪問上下文狀態信息。

對不同實現的Docker容器進行統一的標準化運維處理,大大減少運維的複雜性,可以更好地實現自動化運維

基於Docker編排技術(比如阿里雲容器服務等)提供的集羣管理和編排能力,可以大大簡化事件調度器的實現

受益於成熟的Docker的DevOps流程,可以大大提升開發交付效率

Serverless應用場景程序:

在高負載場景使用REST API從Web應用程序收集指標

從傳入的包含訂單和狀態信息的電子郵件中提取和存儲數據

創建提供標準後端CRUD操作的REST API

在大數據場景的ETL過程中收集和轉換數據

分析來自實時數據流的日誌消息

構建一個在後臺可以與多個API交互的聊天機器人chatbot


更多交流學習敬請關注微信公衆號


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章