Serverless時代的來臨 Serverless 顧名思義,是一種“無服務器”架構,因為屏蔽了服務器的各種運維複雜度,讓開發人員可以將更多精力用於業務邏輯設計與實現。在serverless架構下,開發者只需要關注於上層應用邏輯的開發,而諸如資源申請,環境搭建,負載均衡,擴縮容等等服務器相關的複雜操作都由平臺來進行維護。在雲原生架構白皮書中,對serverless的特性有以下概括: 全託管的計算服務,客戶只需要編寫代碼構建應用,無需關注同質化的、負擔繁重的基於服務器等基礎設施的開發、運維、安全、高可用等工作; 通用性,能夠支撐雲上所有重要類型的應用; 自動的彈性伸縮,讓用戶無需為資源使用提前進行容量規劃; 按量計費,讓企業使用成本得有效降低,無需為閒置資源付費。 回顧整個serverless的發展歷程,我們可以看到從2012年首次提出serverless概念為起點,再到aws推出lambda雲產品的這段時間內,人們對serverless的關注度出現了爆發式的增長,對無服務器的期待和暢想逐漸引爆整個行業,但serverless的推廣和生產落地的過程卻不容樂觀,serverless理念與實操生產的過程中存在gap,挑戰著人們固有的使用體驗和習慣。阿里雲堅信serverless將作為雲原生之後確定性的發展方向,相繼推出了fc,sae等多款雲產品來覆蓋不同領域,不同類型的應用負載來使用serverless技術,並且不斷在推進整個serverless理念的普及與發展。 就當前serverless整個市場格局而言,阿里雲已經做到了Serverless產品能力中國第一,全球領先,在去年forrester評測魔力象限中可以明顯的看到阿里雲在serverless領域已經與aws不相上下,於此同時,阿里雲 Serverless 用戶佔比中國第一,在2020年中國雲原生用戶調研報告中整個阿里雲serverless用戶佔比已經達到了66%,而在serverless技術採用情況的調研中表明,已經有越來越多的開發者和企業用戶將serverless技術應用於核心業務或者將要應用於核心業務之中。 Serverless彈性探索 彈性能力作為雲的核心能力之一,所關注的問題是容量規劃與實際集群負載間的矛盾,通過兩幅圖的對比可以看到,如果採用預先規劃的方式進行資源安排,會由於資源準備量和資源需求量的不匹配導致資源浪費或者資源不足的情況,進而導致成本上的過多開銷甚至業務受損,而我們期望極致彈性能力,是準備的資源和實際需求的資源幾乎匹配,這樣使得應用整體的資源利用率較高,成本也隨業務的增減和相應的增減,同時不會出現因容量問題影響應用可用性的情況,這就是彈性的價值。彈性其實現上分為可伸縮性和故障容忍性,可伸縮性意味著底層資源可以參照指標的變化有一定的自適應能力,而故障容忍性則是通過彈性自愈確保服務中的應用或實例處於健康的狀態。上述能力帶來的價值收益在於降成本的同時提升應用可用性,一方面,資源使用量貼合應用實際消耗量,另一方面,提升峰值的應用可用性,進而靈活適應市場的不斷髮展與變化。 下面將對當前較為普遍的三種彈性伸縮模式進行闡述和分析。 首先是IaaS彈性伸縮,其代表產品是各雲廠商雲服務器彈性伸縮,如阿里雲ess,可以通過配置雲監控的告警規則來觸發相應的ecs增減操作,同時支持動態增減slb後端服務器和rds白名單來保證可用性,通過健康檢查功能實現彈性自愈能力。ess定義了伸縮組的概念,即彈性伸縮的基本單位,為相同應用場景的ECS實例的集合及關聯slb,rds,同時支持多種伸縮規則,如簡單規則,進步規則,目標追蹤規則,預測規則等,用戶的使用流程為創建伸縮組和伸縮配置,創建伸縮規則,監控查看彈性執行情況。 kubernetes彈性伸縮,這裡主要關注於水平彈性hpa,其代表產品為k8s以及其所對應的託管雲產品,如阿里雲容器服務,k8s做為面向應用運維的基礎設施和Platform for Platform,提供的內置能力主要是圍繞著容器級別的管理和編排來展開的,而彈性能力聚焦於對底層pod的動態水平伸縮,k8s hpa通過輪詢pod的監控數據並將它與目標期望值比較進行,通過算法實時計算來產生期望的副本數,進而對workload的副本數進行增減操作,用戶在實際使用上需要創建並配置對應的指標源和彈性規則以及對應的workload,可以通過事件來查看彈性的執行情況。 最後介紹一下應用畫像彈性伸縮,其主要用於互聯網公司內部,如阿里asi容量平臺。容量平臺提供容量預測服務和容量變更決策服務,指導底層容量變更組件如AHPA/VPA實現容量彈性伸縮,並根據彈性結果修正容量畫像。以畫像驅動為主