天天看點

從 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 技術的落地方式探讨

歡迎加入 SAE 的使用者交流釘釘群:23198618