Serverless 作為雲計算的最佳實踐和未來演進趨勢,其全托管免運維的使用體驗和按量付費的成本優勢使得它在雲原生時代備受推崇。Serverless 的使用場景也由事件驅動,資料處理等部分特定場景轉向更為廣泛通用化的 WEB,微服務,AI,進而在電商,互娛,出行,乃至傳統行業都有融入。
在 Serverless 的普及與推廣過程中,開發運維人員雖然認同其降本提效的核心價值,但同時被諸如廠商鎖定,黑盒化,全屏蔽等一系列 Serverless 全包的特性所困擾;進而所引發的遷移成本高,問題排查難度大,根因定界分析困難等痛點亟需解決。
所謂開放,是指使用者可以擺脫心智負擔的,在不變更語言應用的前提下從任意平台遷移至 Serverless,是指使用者可以即開即用的擷取 Serverless 應用的全生命周期核心資料,更是指使用者可以将其原有的架構與 Serverless 架構進行融合,實作雲上雲下雲間的互通與混部。擁抱開放後 Serverless 将不會是需要改造以适配相容的,可望而不可即的技術試驗品,也不是一座獨立出來的,與原有技術體系割裂的資料孤島,而是承載技術開發者們理想與現實的,能夠讓技術變得更加普惠、通用、共享的最短路徑之一。
阿裡雲堅持在 Serverless 領域持續投入并在技術競争力上維持領先地位, SAE (Serveless 應用引擎)作為業界首款面向應用的 Serverless PaaS,能夠提供成本更優、效率更高的一站式應用托管方案。SAE 在 2018 年内部孵化之初就秉持着零門檻,零改造的宗旨進行應用(任務)的 Serverless 改造和落地實踐,并且在産品的發展曆程中不斷積極尋求被內建,增進 DEVOPS 全流程體驗,三年内助力千餘家客戶實作應用的雲原生 Serverless 化。SAE 目前已有和即将推出的功能均圍繞着“擁抱開放”展開,下面我們一起看看 SAE 目前所提供的産品功能特性以及它背後的思考邏輯。

Serverless 部署架構的開放性
許多使用者的應用其實并不是從零便開始使用 Serverless,而是出于對 Serverless 理念的認同,基于架構更新演進的訴求,期望将原有的部署環境如實體機,雲主機,Kubernetes 進行遷移或者是混部于 Serverless 之中。那麼在此場景下,應用遷移改造的成本顯得尤為重要,然而 Serverless 陡峭的學習曲線和廠商生态鎖定的刻闆印象,令諸多開發者望而卻步。正如先前所述,SAE 主打零門檻,零改造遷移,應用其實無需修改任何代碼邏輯,便可直接部署在 SAE 當中,而對于非容器類的應用,SAE 也提供内置的鏡像建構能力,并借助釋出單使得全 CICD 變得流程化、自動化、可視化。下面我們重點介紹一下跨平台的使用場景。
SAE與雲主機混部
SAE 支援與雲主機(ECS)執行個體進行混部,以便于在存量遷移的場景下實作快速彈性,發揮 SAE 的優勢,整個過程無需任何開發改造。具體的方式為,将存量 ECS 執行個體加入到 SAE 執行個體聲明使用的 SLB 後端虛拟伺服器組中,SAE 應用在部署、擴縮容、停止、啟動、重新開機、垂直擴縮容等場景中,會自動動态維護 SLB 後端的執行個體,統一對外提供服務。
SAE 與 Kubernetes 的流量互訪
SAE 支援與 Kubernetes(ACK) 進行流量互訪,借助公網 SLB/Ingress ,或者相同 VPC 下私網 SLB 協同 PrivateZone 内網域名解析的能力,暴露應用服務位址;亦或在微服務場景下采用同一注冊中心,均可實作在不變更原有架構的基礎上,進行 SAE 執行個體與 Kubernetes pod 的通信與互動。
Serverless 名額資料的開放性
Prometheus 是一套開源的監控報警系統。主要特點包括多元資料模型、靈活查詢語句 PromQL 以及資料可視化展示等,其已經成為了雲原生監控體系的事實标準。SAE 提供了開箱即用的可觀測能力,同時全面對接并相容Prometheus 生态,開放核心名額資料,以滿足使用者們在監控領域靈活配置、可定制、可擴充的訴求。
基礎監控資料
SAE 對應用所運作執行個體的 CPU、負載、記憶體、網絡和磁盤進行資料采集與分析,并能夠以動态圖的方式展示,友善使用者實時、且直覺地了解到應用運作裝置的狀态。采集的資料會預制在 Prometheus 中,并配置內建可視化大盤。使用者可以通過 Grafana 進行自定義大盤的配置。
應用監控資料
針對于 Java、Php 語言的應用,SAE 可以通過 agent 技術對其接口 RED 等資料進行埋點采集。同時,其資料也已預制在 Prometheus 中,并內建可視化大盤,使用者可以通過 Grafana 進行自定義大盤的配置。
對于其他的多語言應用,SAE 将采用 EBPF 技術,進行無入侵的七層監控資料的擷取,并提供全流程無感的使用體驗。多語言監控資料同樣會預制在 Prometheus 中,使用者可以通過 Grafana 進行自定義大盤的配置。
自定義監控資料
SAE 應用可以根據其自定義業務,手動埋點暴露自定義名額資料,并借助 VPC 内服務發現能力,接入Prometheus,保證在執行個體不斷變化的環境下,整個采集鍊路的可用性。
Serverless 通用運維的開放性
随着産品不斷發展演進,我們深刻的意識到 Serverless 并不意味着像願望般美好的将伺服器完全黑盒化,使用者完全信賴産品的内部操作,同時不斷教育使用者要采用符合 Serverless 的心智和行為方式進行開發運維,這樣既與使用者已有的知識體系和傳統運維習慣相沖突,又不利于各類問題的及時排查與根因定界。而使用者真正需要的是享有知情權的同時,借助全方位運維能力的提升來更加高效,自動的實作運維操作,降低運維複雜度,提升運維幸福感。SAE 結合使用者常見訴求和使用痛點推出了多項解決方案和最佳實踐來不斷優化和提升 Serverless 運維能力。
Webshell 與工具一鍵安裝
登入執行個體進行資訊收集和問題排查,在傳統運維中是必不可少的一環。在 Linux 環境下已經有諸多成熟的問題診斷工具去供使用者使用,SAE 深知不應該全然被動地将整個應用以及環境傳遞于第三方供應商,真正了解企業場景和業務邏輯的是使用者需要掌控力。SAE 在暴露應用執行個體的基礎上,提供了 Webshell 功能,使用者可以像通路本地主機一樣通路 Serverless 執行個體進行運維操作。同時為了更加高效地進行問題排查,SAE 提供了工具一鍵安裝的功能,解決了自定義鏡像中指令閹割的情況,并适配各種作業系統,可以在私網環境下下載下傳并更新工具。
檔案雙向傳輸
如何高效運維,一直是 SAE 專注的重點。使用者在日常開發部署測試的過程中,經常提到,期望将本地檔案或者配置上傳至雲端應用用于臨時調試,或者将雲上應用的日志,配置,Java dump,core dump下載下傳至本機。作為運維領域的剛需,SAE 推出 Serverless 場景下檔案雙向傳輸功能,在無軟體依賴,應用無入侵的前提下實作上傳下載下傳的功能。
跳闆機與端雲聯調
在開發聯調測試的過程中,受限于對應用本身環境的依賴,考慮到啟動部署速度和效率,開發者往往不願意重新在本地啟動雲上應用,模拟雲端執行環境進行本地調試。這其實也是 Serverless 場景下面臨的一大難題,SAE 借助内置跳闆機,實作本地服務與雲端 SAE 應用間的互調,同時支援 Java/php remote debug 和執行個體的遠端通路,真正的将本地和雲端環境融為一體。