從 DevOps 到 NoOps,Serverless 技術的落地方式探討

Serverless 技術正以一種全新的方式,幫助雲上客戶進一步節省雲的使用成本,實踐 NoOps 理念,同時,他也正深刻變革著開發者們的編程模式,所謂“Write locally, compile to the cloud”。

本文將介紹 Serverless 技術來降低雲的使用成本和提升運維效率的業務背景和由來,並結合 Serverless 應用引擎(SAE)這款產品來呈現 Serverless 技術的落地方式。

雲上業務開發和運維現狀

目前,很多客戶的上雲仍處於資源雲化的階段,以降低資源購置成本為主要驅動力,應用運行在到虛擬化環境中,應用的開發和運維還需要消耗大量的人力。

從 DevOps 到 NoOps,Serverless 技術的落地方式探討

如上圖,在這種模式下,客戶除了要完成業務邏輯開發外,還需要完成以下工作:

  • 評估系統容量:包括系統總訪問量、平均訪問量、壓測找出單機 QPS、線上冗餘情況等等,整個容量評估工作是一個十分複雜的過程;
  • 準備基礎設施:包括網絡拓撲規劃,以及ECS 虛擬機資源、外網訪問入口SLB、存儲資源RDS、NAT等雲產品的購買;
  • 應用部署:對虛擬機資源進行初始化,需要手動或自建自動化部署流程完成應用部署;如果是微服務形態的應用,還需要考慮註冊中心和服務之間的依賴關係管理;
  • 系統運維:需要進行系統監控、應用監控,並對異常情況報警,並自建運維體系和運維工具。

痛點分析

系統上線後,隨著用戶越來越多,系統承載的流量也會越來越大。流量可能會出現規律性的波峰和波谷,也有可能會出現突發大流量的場景,當流量陡增將要或已經超出系統承受能力時,需要系統擴容,而擴容是需要按照容量評估、準備雲上資源、應用部署幾個流程重新操作一遍,效率較低,可能擴容完成時流量波峰已經過去了,還有可能出現因系統資源不足而造成的系統不可用。當系統流量再正常到正常水位,又會出現資源利用率低的問題,再相應的進行縮容,但縮容的時機很難把握,勢必會造成一定的閒置資源的浪費。

從 DevOps 到 NoOps,Serverless 技術的落地方式探討

那我們期望的系統反饋是什麼樣的呢?

如上圖,我們期望的是,資源需求和實際的資源使用量走勢能有一個很好的擬合,能夠從容應對突發流量,並且能夠有效降低閒置資源成本。為了達到這個目標,系統需要具備哪些能力呢?

  • 實時監控和數據分析:做到按需彈性,首先需要對把系統運行和應用運行狀態監控起來,並具備監控數據的分析能力;
  • 彈性策略設置:提供可配置的彈性策略,並根據應用運行情況設置進行合理的設置;
  • 秒級彈性:基於監控數據分析和彈性策略設置,系統可以實現自動彈性的能力,彈性能力越強越好,能達到秒級彈性;
  • 細粒度計量:上雲的目標是降成本、提效率,因此需要配置細顆粒度的計量計費能力,支持小規格的計算資源配置才能真正達到降本的目的;
  • 應用實例能夠自動水平擴縮:上面介紹的幾種能力都是基於一個前提,應用實例能夠自動水平擴縮,這需要應用實例是無狀態的或者系統自動維護應用的狀態。

上面的幾點分析可以提取幾個關鍵詞:按需彈性、細粒度計費、實時監控,這正是我們今天需要討論的 serverless 技術所需要解決的問題,接下來我們看下阿里雲現有的4個 serverless 產品形態。

阿里雲的 Serverless 產品形態

從 DevOps 到 NoOps,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 技術的落地方案。

從 DevOps 到 NoOps,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等,在應用部署時可以選擇使用,可以一站式支持流量訪問、日誌收集、存儲等能力。

核心優勢-彈性能力

從 DevOps 到 NoOps,Serverless 技術的落地方式探討

SAE 支持定時彈性和指標彈性功能,定時彈性適用於資源畫像有周期性的應用場景,多用於證券、醫療、政府、教育等行業;指標彈性目前支持 CPU 和內存指標彈性,適用於有突發流量或典型脈衝的應用場景,多用於互聯網、遊戲、社交平臺等行業。

核心優勢-一鍵啟停開發測試環境

企業開發測試環境一般晚上不使用,但需要長期保有應用實例,閒置資源成本高。使用 SAE 一鍵啟停功能能夠高效管理開發測試環境,按需釋放閒置資源,做到節省成本。

從 DevOps 到 NoOps,Serverless 技術的落地方式探討

產品數據

從 DevOps 到 NoOps,Serverless 技術的落地方式探討

  • 容器啟動時長為20s:支持突發場景快速擴容,啟動時長指的是 100M 大小的鏡像從Pull image 到容器正常啟動的耗時,不含應用啟動時間。
  • 最小實例規格為0.5C1G:支持細粒度資源訴求,0.5C1G 建議用在開發測試環境中;
  • 多套環境按需啟停,成本可以節省47%~57%:按一套環境 5 臺 ECS 每天使用 8 小時,分別針對 ECS 按量付費和包年包月兩種情況計算來對比資源成本,方案詳情可以查看。

運維體驗

ECS 應用部署方案和使用 SAE 進行應用託管方案在運維方面的對比如下:

從 DevOps 到 NoOps,Serverless 技術的落地方式探討


分享到:


相關文章: