目前 Serverless 已成爲雲原生社區關注的重點之一,有人說它是微服務的繼承者,將會完全改變軟件研發的現狀,那麼真實狀況如何呢?本文將介紹 Serverless 市場觀察、落地挑戰,以及螞蟻金服對 Serverless 的實踐。算法
當咱們回顧雲計算的發展歷程,會看到基礎架構經歷了從物理機到虛擬機,從虛擬機再到容器的演進過程。在這大勢之下,應用架構也在同步演進,從單體過渡到多層,再到當下的微服務。在變化的背後,有一股持續的動力,它來自於三個不變的追求:提升資源利用率,優化開發運維體驗,以及更好地支持業務發展。小程序
目前, Serverless 已成爲雲原生社區關注的重點之一,它的發展也不例外。相比容器技術,Serverless 能夠將資源管理的粒度更加細化,使開發者更快上手雲原生,而且倡導事件驅動模型支持業務發展。從而幫助用戶解決了資源管理複雜、低頻業務資源佔用等問題;實現面向資源使用,以取代面向資源分配的模式。根據 CNCF 在2018年末基於 2400人的一份統計報告,已有 38% 的組織正在使用Serverless 技術,相比 2017 同期增加了 22%。(數據來源:CNCF Survey)安全
圖片來源:Gartner Report: China SummaryTranslation Evolution of Server Computing - VMs to Containers to Serverless -Which to Use When服務器
目前市場上,雲廠商提供了多種 Serverless 產品和解決方案,大體可劃分爲:
1.函數計算服務:如 AWS Lambda,特色是以代碼片斷爲單位運行,並對代碼風格有必定要求。
2.面向應用的 Serverless 服務:如 Knative,特色是基於容器服務,並提供了從代碼包到鏡像的構建能力。
3.容器託管服務:如 AWS Fargate,特色是以容器鏡像爲單元運行,但用戶仍需感知容器。
從社區來看,CNCF 雲原生基金會正經過 Serverless 工做組協調社區討論並促進規範和標準的造成,工做組產出了 Serverless 白皮書和全景圖等重要內容。其中,全景圖將目前的生態劃分爲了平臺層,框架層,工具鏈層和安全層這四個模塊。架構
在交流過程當中,咱們發現 Serverless 很好地解決了客戶的一些訴求:包括經過 0-1-0 的伸縮能力來提升資源時用率,下降成本;支持代碼包出發,從而讓客戶無感化實現雲原生,歷史應用無需通過容器化改造;支持靈活的觸發器配置,引導用戶對應用進行事件驅動的改造,從而適應業務的高速發展等。這些優點,使得 Serverless 在小程序開發的場景下大放異彩。框架
同時,對於在企業級應用的生產環境落地 Serverless,各方也有了不少探索和突破。在前段時間的 KubeConChina 2019 大會上,Serverless 工做組會議也以此爲話題展開了討論。目前的核心挑戰可概括爲:less
1.平臺可遷移
目前衆多平臺都推出了本身的 Serverless 標準,包括代碼格式、框架和運維工具等,用戶既面臨較高的學習成本和選擇壓力,也擔憂沒法在平臺之間靈活遷移 Serverless 應用。運維
2.0-M-N 性能
線上應用對控制請求延遲有嚴格的要求,所以,用戶須要謹慎地驗證 Serverless 0-1冷啓動速度、M-N 擴容速度以及穩定性都達到了生產要求。函數
3.調試和監控
用戶對底層資源無感知,只能藉助平臺能力對應用進行調試和監控,用戶須要平臺提供強大的日誌功能進行排錯,和多維度的監控功能時刻了解應用狀態。微服務
4.事件源集成
採用 Serverless 架構後,應用每每進行更細粒度的拆分,並經過事件串聯。所以用戶但願平臺能集成大多數通用的事件源,並支持自定義事件,使得觸發機制更加靈活。
5.工做流支持
完成某個業務,每每涉及多個 Serverless 應用之間的配合,當數目較多時,用戶但願能夠用工做流工具來進行統一編排和狀態查看,提升效率。
SOFAStack 致力於經過產品技術解決雲上客戶實際痛點,沉澱螞蟻金服技術實踐,幫助用戶以高效、低成本的方式遷移到雲原生架構。Serverless 應用服務(Serverless Application Service,簡稱 SOFA SAS)是一款源自螞蟻金服實踐的一站式 Serverless 平臺。SAS 基於 SOFAStack CAFE 雲應用引擎 (Cloud ApplicationFabric Engine 簡稱 CAFE),CAFE的容器服務已經經過了 CNCF 的一致性認證,是一個標準的Kubernetes。
Serverless 應用服務產品在兼容標準 Knative 同時,融入了源自螞蟻金服實踐的應用全生命週期管理能力,提供了 Serverless引擎管理、應用與服務管理、版本管理與流控、根據業務請求或事件觸發較快的 0-M-N-0 自動伸縮、計量、日誌及監控等配套能力。同時結合金融雲上客戶實際痛點,產品獨居匠心的提供獨佔版與共享版兩種形態,以及傳統代碼包、容器鏡像與純函數三種研發模式,以解決用戶的不一樣需求,下降客戶准入門檻。
一鍵部署:用戶能夠經過代碼包或容器鏡像的方式一鍵部署應用並在任意時刻測試執行。
引擎管理:SAS 提供了豐富的引擎全生命週期管理、診斷、監測等能力,爲獨佔版客戶賦能 Serverless 引擎數據面的全方位管理與運維運營能力。
服務及版本:SAS 提供應用管理、應用服務管理以及版本管理。版本能夠採用容器鏡像方式部署也能夠採用傳統VM發佈模式下的代碼包部署,不少狀況下用戶代碼無需修改也無需編寫維護Dockerfile 便可遷移。
0-M-N:SAS 提供 0-M-N-M-0 的Serverelss 快速伸縮能力,支持事件觸發或流量觸發的 0-M,多種指標的 M-N(如 QPS、CPU、MEM 等等)
日誌監控計量:產品內置了日誌、監控、計量等配套設施能力,幫助用戶進行調試和應用狀態監控。
流量控制:基於 SOFAMesh,SAS提供基本流控能力,後續會與服務網格進一步深度集成提供大規模多維跨地域及混合雲的流控能力。
觸發器管理:產品支持基於常見週期以及秒級精度的cron表達式觸發器,可關聯並觸發無服務器應用,後續將支持更多 IaaS、PaaS 管控型與數據型事件。
性能簡析:橫軸爲徹底在同一時刻觸發冷啓的Java應用個數,縱軸爲冷啓應用的平均與最小耗時。隨着壓力增大,50個Java應用同一時刻調度加冷啓平均耗時2.5秒左右,100個Java應用同一時刻調度冷啓平均耗時3-4秒,最短耗時1.5到2秒。
性能簡析:Pooling 快彈慢縮時序算法,池容量和實際單位時間申請量關係可作到如圖所示(藍色爲實際申請量,綠色爲池容量)
目前產品已順利支撐生產環境小程序 Serverless 模式。同時經過 0-M-N-M-0 的能力在很大程度上下降了小程序的運營成本。在行業客戶領域,某保險公司決定近期遷移部分日結前置和長尾應用到 Serverless 產品平臺,這也是咱們產品又一個重要突破。將來,咱們致力於將SAS 打形成爲一個金融級的 Serverless 平臺。
KubeCon China 2019 大會上, Serverless 應用服務正式亮相,在 SOFAStack 工做坊吸引了百餘名參與者,一同體驗基於 Serverless 輕鬆構建雲上應用。
原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。