从 DevOps 到 NoOps,Serverless 技术的落地方式探讨
Serverless 技術正以一種全新的方式,幫助云上客戶進一步節省云的使用成本,實踐 NoOps 理念,同時,他也正深刻變革著開發者們的編程模式,所謂“Write locally, compile to the cloud”。
本文將介紹 Serverless 技術來降低云的使用成本和提升運維效率的業務背景和由來,并結合 Serverless 應用引擎(SAE)這款產品來呈現 Serverless 技術的落地方式。
云上業務開發和運維現狀
目前,很多客戶的上云仍處于資源云化的階段,以降低資源購置成本為主要驅動力,應用運行在到虛擬化環境中,應用的開發和運維還需要消耗大量的人力。
如上圖,在這種模式下,客戶除了要完成業務邏輯開發外,還需要完成以下工作:
- 評估系統容量:包括系統總訪問量、平均訪問量、壓測找出單機 QPS、線上冗余情況等等,整個容量評估工作是一個十分復雜的過程;
- 準備基礎設施:包括網絡拓撲規劃,以及ECS 虛擬機資源、外網訪問入口SLB、存儲資源RDS、NAT等云產品的購買;
- 應用部署:對虛擬機資源進行初始化,需要手動或自建自動化部署流程完成應用部署;如果是微服務形態的應用,還需要考慮注冊中心和服務之間的依賴關系管理;
- 系統運維:需要進行系統監控、應用監控,并對異常情況報警,并自建運維體系和運維工具。
痛點分析
系統上線后,隨著用戶越來越多,系統承載的流量也會越來越大。流量可能會出現規律性的波峰和波谷,也有可能會出現突發大流量的場景,當流量陡增將要或已經超出系統承受能力時,需要系統擴容,而擴容是需要按照容量評估、準備云上資源、應用部署幾個流程重新操作一遍,效率較低,可能擴容完成時流量波峰已經過去了,還有可能出現因系統資源不足而造成的系統不可用。當系統流量再正常到正常水位,又會出現資源利用率低的問題,再相應的進行縮容,但縮容的時機很難把握,勢必會造成一定的閑置資源的浪費。
那我們期望的系統反饋是什么樣的呢?
如上圖,我們期望的是,資源需求和實際的資源使用量走勢能有一個很好的擬合,能夠從容應對突發流量,并且能夠有效降低閑置資源成本。為了達到這個目標,系統需要具備哪些能力呢?
- 實時監控和數據分析:做到按需彈性,首先需要對把系統運行和應用運行狀態監控起來,并具備監控數據的分析能力;
- 彈性策略設置:提供可配置的彈性策略,并根據應用運行情況設置進行合理的設置;
- 秒級彈性:基于監控數據分析和彈性策略設置,系統可以實現自動彈性的能力,彈性能力越強越好,能達到秒級彈性;
- 細粒度計量:上云的目標是降成本、提效率,因此需要配置細顆粒度的計量計費能力,支持小規格的計算資源配置才能真正達到降本的目的;
- 應用實例能夠自動水平擴縮:上面介紹的幾種能力都是基于一個前提,應用實例能夠自動水平擴縮,這需要應用實例是無狀態的或者系統自動維護應用的狀態。
上面的幾點分析可以提取幾個關鍵詞:按需彈性、細粒度計費、實時監控,這正是我們今天需要討論的 serverless 技術所需要解決的問題,接下來我們看下阿里云現有的4個 serverless 產品形態。
阿里云的 Serverless 產品形態
ECI/Serverless Kubernetes:是面向容器的 Serverless Container,應用的載體是容器鏡像,靈活性好,配合調度系統可以支持各種類型應用,無需管理底層基礎架構。
函數計算:是面向函數的 Function as a Service,提供了事件驅動的編程方式,用戶只需實現函數的處理邏輯,開發效率很高;按照調用量計費,可以根據業務流量平滑調整計算資源,采用 FaaS 最大的挑戰是需要改變應用架構和開發交付模型。
Serverless 應用引擎(SAE):是面向應用的 Serverless 產品,用戶不需要要改變應用架構和開發交付模型,只需提供應用實現,無需管理底層計算資源。SAE 提供了優化的彈性策略、支持秒級計費,并且提供了豐富的服務治理能力,可以方便地實現服務的灰度發布、熔斷、降級,并與現有CI/CD系統集成。
什么是阿里云Serverless 應用引擎(SAE)
Serverless 應用引擎(SAE)基于神龍裸金屬服務器和 ECI 計算資源構建 Kubernetes 集群平臺,并實現了多租戶管理,在 Runtime 層實現了應用生命周期管理、發布策略管理、彈性伸縮、微服務管理等能力。簡單講,就是面向微服務和其他在線負載提供 Serverless 技術的落地方案。
如上圖,SAE 為主流的微服務框架的應用提供了 Serverless 應用托管能力,包括 Spring Cloud、Apache Dubbo 或者阿里云 HSF 框架等,支持多種部署渠道,包括UI、云效、插件等,支持多種部署方式,包括WAR、JAR、鏡像等。對于單體應用和采用 Spring Cloud、Dubbo、HSF框架開發的 Java 應用,SAE 支持零代碼改造,即可完成遷移。
多租戶應用托管能力實現
SAE 基于 Kubetnetes 集群對多用戶提供應用托管能力,那 SAE 如何實現多租管理的呢?對于租戶的隔離,主要有4個方面,包括系統隔離、數據隔離、服務隔離和網絡隔離:
- 系統隔離:基于安全沙箱容器技術的應用運行時環境,擁有獨立的內核,能夠提供多租戶環境下對系統調用、內核的隔離能力;
- 數據隔離:安全容器啟動時,通過 devicemapper 在宿主機上提供一個獨占的存儲空間作為 rootfs;
- 服務隔離:SAE 命名空間是邏輯隔離環境,和微服務級別租戶信息(例如T1、T2、T3)綁定,與 K8S 中 namesapce 一一對應,微服務租戶信息下發到 K8S Secret 中保存;
- 網絡隔離:SAE 命名空間和唯一的 VPC 綁定,底層通過 ENI 網卡打通同一個VPC 網絡,實現不同用戶的 POD 屬于不同網絡平臺,并且 POD 和宿主機屬于不同網絡平面,VPC 實現用戶專屬網絡隔離。
核心優勢-免IaaS運維
用戶只需對網絡進行規劃,無需管理底層計算資源,完成業務開發后,可以直接通過程序包或者鏡像部署應用,極大提高用戶開發和運維效率;SAE 對接了多個云產品,如SLB、SLS、NAT等,在應用部署時可以選擇使用,可以一站式支持流量訪問、日志收集、存儲等能力。
核心優勢-彈性能力
SAE 支持定時彈性和指標彈性功能,定時彈性適用于資源畫像有周期性的應用場景,多用于證券、醫療、政府、教育等行業;指標彈性目前支持 CPU 和內存指標彈性,適用于有突發流量或典型脈沖的應用場景,多用于互聯網、游戲、社交平臺等行業。
核心優勢-一鍵啟停開發測試環境
企業開發測試環境一般晚上不使用,但需要長期保有應用實例,閑置資源成本高。使用 SAE 一鍵啟停功能能夠高效管理開發測試環境,按需釋放閑置資源,做到節省成本。
產品數據
- 容器啟動時長為20s:支持突發場景快速擴容,啟動時長指的是 100M 大小的鏡像從Pull image 到容器正常啟動的耗時,不含應用啟動時間。
- 最小實例規格為0.5C1G:支持細粒度資源訴求,0.5C1G 建議用在開發測試環境中;
- 多套環境按需啟停,成本可以節省47%~57%:按一套環境 5 臺 ECS 每天使用 8 小時,分別針對 ECS 按量付費和包年包月兩種情況計算來對比資源成本,方案詳情可以查看。
運維體驗
ECS 應用部署方案和使用 SAE 進行應用托管方案在運維方面的對比如下:
歡迎加入 SAE 的用戶交流釘釘群:23198618
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的从 DevOps 到 NoOps,Serverless 技术的落地方式探讨的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软KV Store Faster如何巧
- 下一篇: 阿里云杜欢:云上Serverless开发