擁抱開(kāi)放,Serverless 時(shí)代的下一征程
精選作者 | 競(jìng)霄
Serverless 作為云計(jì)算的最佳實(shí)踐和未來(lái)演進(jìn)趨勢(shì),其全托管免運(yùn)維的使用體驗(yàn)和按量付費(fèi)的成本優(yōu)勢(shì)使得它在云原生時(shí)代備受推崇。Serverless 的使用場(chǎng)景也由事件驅(qū)動(dòng),數(shù)據(jù)處理等部分特定場(chǎng)景轉(zhuǎn)向更為廣泛通用化的 WEB,微服務(wù),AI,進(jìn)而在電商,互娛,出行,乃至傳統(tǒng)行業(yè)都有滲透。
在 Serverless 的普及與推廣過(guò)程中,開(kāi)發(fā)運(yùn)維人員雖然認(rèn)同其降本提效的核心價(jià)值,但同時(shí)被諸如廠商鎖定,黑盒化,全屏蔽等一系列 Serverless 全包的特性所困擾;進(jìn)而所引發(fā)的遷移成本高,問(wèn)題排查難度大,根因定界分析困難等痛點(diǎn)亟需解決。
所謂開(kāi)放,是指用戶可以擺脫心智負(fù)擔(dān)的,在不變更語(yǔ)言應(yīng)用的前提下從任意平臺(tái)遷移至 Serverless,是指用戶可以即開(kāi)即用的獲取 Serverless 應(yīng)用的全生命周期核心數(shù)據(jù),更是指用戶可以將其原有的架構(gòu)與 Serverless 架構(gòu)進(jìn)行融合,實(shí)現(xiàn)云上云下云間的互通與混部。擁抱開(kāi)放后 Serverless 將不會(huì)是需要改造以適配兼容的,可望而不可即的技術(shù)試驗(yàn)品,也不是一座獨(dú)立出來(lái)的,與原有技術(shù)體系割裂的數(shù)據(jù)孤島,而是承載技術(shù)開(kāi)發(fā)者們理想與現(xiàn)實(shí)的,能夠讓技術(shù)變得更加普惠、通用、共享的最短路徑之一。
阿里云堅(jiān)持在 Serverless 領(lǐng)域持續(xù)投入并在技術(shù)競(jìng)爭(zhēng)力上維持領(lǐng)先地位, SAE(Serveless 應(yīng)用引擎)作為業(yè)界首款面向應(yīng)用的 Serverless PaaS,能夠提供成本更優(yōu)、效率更高的一站式應(yīng)用托管方案。SAE 在 2018 年內(nèi)部孵化之初就秉持著零門檻,零改造的宗旨進(jìn)行應(yīng)用(任務(wù))的 Serverless 改造和落地實(shí)踐,并且在產(chǎn)品的發(fā)展歷程中不斷積極尋求被集成,增進(jìn) DevOps 全流程體驗(yàn),三年內(nèi)助力千余家客戶實(shí)現(xiàn)應(yīng)用的云原生 Serverless 化。SAE 目前已有和即將推出的功能均圍繞著“擁抱開(kāi)放”展開(kāi),下面我們一起看看 SAE 目前所提供的產(chǎn)品功能特性以及它背后的思考邏輯。
一、Serverless 部署架構(gòu)的開(kāi)放性
許多用戶的應(yīng)用其實(shí)并不是從零便開(kāi)始使用 Serverless,而是出于對(duì) Serverless 理念的認(rèn)同,基于架構(gòu)升級(jí)演進(jìn)的訴求,期望將原有的部署環(huán)境如物理機(jī),云主機(jī),Kubernetes 進(jìn)行遷移或者是混部于 Serverless 之中。那么在此場(chǎng)景下,應(yīng)用遷移改造的成本顯得尤為重要,然而 Serverless 陡峭的學(xué)習(xí)曲線和廠商生態(tài)鎖定的刻板印象,令諸多開(kāi)發(fā)者望而卻步。正如先前所述,SAE 主打零門檻,零改造遷移,應(yīng)用其實(shí)無(wú)需修改任何代碼邏輯,便可直接部署在 SAE 當(dāng)中,而對(duì)于非容器類的應(yīng)用,SAE 也提供內(nèi)置的鏡像構(gòu)建能力,并借助發(fā)布單使得全 CICD 變得流程化、自動(dòng)化、可視化。下面我們重點(diǎn)介紹一下跨平臺(tái)的使用場(chǎng)景。
1.SAE 與云主機(jī)混部
SAE 支持與云主機(jī)(ECS)實(shí)例進(jìn)行混部,以便于在存量遷移的場(chǎng)景下實(shí)現(xiàn)快速?gòu)椥?,發(fā)揮 SAE 的優(yōu)勢(shì),整個(gè)過(guò)程無(wú)需任何開(kāi)發(fā)改造。具體的方式為,將存量 ECS 實(shí)例加入到 SAE 實(shí)例聲明使用的 SLB 后端虛擬服務(wù)器組中,SAE 應(yīng)用在部署、擴(kuò)縮容、停止、啟動(dòng)、重啟、垂直擴(kuò)縮容等場(chǎng)景中,會(huì)自動(dòng)動(dòng)態(tài)維護(hù) SLB 后端的實(shí)例,統(tǒng)一對(duì)外提供服務(wù)。
2.SAE 與 Kubernetes 的流量互訪
SAE 支持與 Kubernetes(ACK) 進(jìn)行流量互訪,借助公網(wǎng) SLB/Ingress ,或者相同 VPC 下私網(wǎng) SLB 協(xié)同 PrivateZone 內(nèi)網(wǎng)域名解析的能力,暴露應(yīng)用服務(wù)地址;亦或在微服務(wù)場(chǎng)景下采用同一注冊(cè)中心,均可實(shí)現(xiàn)在不變更原有架構(gòu)的基礎(chǔ)上,進(jìn)行 SAE 實(shí)例與 Kubernetes pod 的通信與交互。
二、Serverless 指標(biāo)數(shù)據(jù)的開(kāi)放性
Prometheus 是一套開(kāi)源的監(jiān)控報(bào)警系統(tǒng)。主要特點(diǎn)包括多維數(shù)據(jù)模型、靈活查詢語(yǔ)句 PromQL 以及數(shù)據(jù)可視化展示等,其已經(jīng)成為了云原生監(jiān)控體系的事實(shí)標(biāo)準(zhǔn)。SAE 提供了開(kāi)箱即用的可觀測(cè)能力,同時(shí)全面對(duì)接并兼容 Prometheus 生態(tài),開(kāi)放核心指標(biāo)數(shù)據(jù),以滿足用戶們?cè)诒O(jiān)控領(lǐng)域靈活配置、可定制、可擴(kuò)展的訴求。
1.基礎(chǔ)監(jiān)控?cái)?shù)據(jù)
SAE 對(duì)應(yīng)用所運(yùn)行實(shí)例的 CPU、負(fù)載、內(nèi)存、網(wǎng)絡(luò)和磁盤進(jìn)行數(shù)據(jù)采集與分析,并能夠以動(dòng)態(tài)圖的方式展示,方便用戶實(shí)時(shí)、且直觀地了解到應(yīng)用運(yùn)行設(shè)備的狀態(tài)。采集的數(shù)據(jù)會(huì)預(yù)制在 Prometheus 中,并配置集成可視化大盤。用戶可以通過(guò) Grafana 進(jìn)行自定義大盤的配置。
2.應(yīng)用監(jiān)控?cái)?shù)據(jù)
針對(duì)于 Java、Php 語(yǔ)言的應(yīng)用,SAE 可以通過(guò) agent 技術(shù)對(duì)其接口 RED 等數(shù)據(jù)進(jìn)行埋點(diǎn)采集。同時(shí),其數(shù)據(jù)也已預(yù)制在 Prometheus 中,并集成可視化大盤,用戶可以通過(guò) Grafana 進(jìn)行自定義大盤的配置。
對(duì)于其他的多語(yǔ)言應(yīng)用,SAE 將采用 EBPF 技術(shù),進(jìn)行無(wú)入侵的七層監(jiān)控?cái)?shù)據(jù)的獲取,并提供全流程無(wú)感的使用體驗(yàn)。多語(yǔ)言監(jiān)控?cái)?shù)據(jù)同樣會(huì)預(yù)制在 Prometheus 中,用戶可以通過(guò) Grafana 進(jìn)行自定義大盤的配置。
3.自定義監(jiān)控?cái)?shù)據(jù)
SAE 應(yīng)用可以根據(jù)其自定義業(yè)務(wù),手動(dòng)埋點(diǎn)暴露自定義指標(biāo)數(shù)據(jù),并借助 VPC 內(nèi)服務(wù)發(fā)現(xiàn)能力,接入Prometheus,保證在實(shí)例不斷變化的環(huán)境下,整個(gè)采集鏈路的可用性。
三、Serverless 通用運(yùn)維的開(kāi)放性
隨著產(chǎn)品不斷發(fā)展演進(jìn),我們深刻的意識(shí)到 Serverless 并不意味著像愿望般美好的將服務(wù)器完全黑盒化,用戶完全信賴產(chǎn)品的內(nèi)部操作,同時(shí)不斷教育用戶要采用符合 Serverless 的心智和行為方式進(jìn)行開(kāi)發(fā)運(yùn)維,這樣既與用戶已有的知識(shí)體系和傳統(tǒng)運(yùn)維習(xí)慣相沖突,又不利于各類問(wèn)題的及時(shí)排查與根因定界。而用戶真正需要的是享有知情權(quán)的同時(shí),借助全方位運(yùn)維能力的提升來(lái)更加高效,自動(dòng)的實(shí)現(xiàn)運(yùn)維操作,降低運(yùn)維復(fù)雜度,提升運(yùn)維幸福感。SAE 結(jié)合用戶常見(jiàn)訴求和使用痛點(diǎn)推出了多項(xiàng)解決方案和最佳實(shí)踐來(lái)不斷優(yōu)化和提升 Serverless 運(yùn)維能力。
1.Webshell 與工具一鍵安裝
登錄實(shí)例進(jìn)行信息收集和問(wèn)題排查,在傳統(tǒng)運(yùn)維中是必不可少的一環(huán)。在 Linux 環(huán)境下已經(jīng)有諸多成熟的問(wèn)題診斷工具去供用戶使用,SAE 深知不應(yīng)該全然被動(dòng)地將整個(gè)應(yīng)用以及環(huán)境交付于第三方供應(yīng)商,真正了解企業(yè)場(chǎng)景和業(yè)務(wù)邏輯的是用戶需要掌控力。SAE 在暴露應(yīng)用實(shí)例的基礎(chǔ)上,提供了 Webshell 功能,用戶可以像訪問(wèn)本地主機(jī)一樣訪問(wèn) Serverless 實(shí)例進(jìn)行運(yùn)維操作。同時(shí)為了更加高效地進(jìn)行問(wèn)題排查,SAE 提供了工具一鍵安裝的功能,解決了自定義鏡像中命令閹割的情況,并適配各種操作系統(tǒng),可以在私網(wǎng)環(huán)境下下載并更新工具。
2.文件雙向傳輸
如何高效運(yùn)維,一直是 SAE 專注的重點(diǎn)。用戶在日常開(kāi)發(fā)部署測(cè)試的過(guò)程中,經(jīng)常提到,期望將本地文件或者配置上傳至云端應(yīng)用用于臨時(shí)調(diào)試,或者將云上應(yīng)用的日志,配置,Java dump,core dump下載至本機(jī)。作為運(yùn)維領(lǐng)域的剛需,SAE 推出 Serverless 場(chǎng)景下文件雙向傳輸功能,在無(wú)軟件依賴,應(yīng)用無(wú)入侵的前提下實(shí)現(xiàn)上傳下載的功能。
3.跳板機(jī)與端云聯(lián)調(diào)
在開(kāi)發(fā)聯(lián)調(diào)測(cè)試的過(guò)程中,受限于對(duì)應(yīng)用本身環(huán)境的依賴,考慮到啟動(dòng)部署速度和效率,開(kāi)發(fā)者往往不愿意重新在本地啟動(dòng)云上應(yīng)用,模擬云端執(zhí)行環(huán)境進(jìn)行本地調(diào)試。這其實(shí)也是 Serverless 場(chǎng)景下面臨的一大難題,SAE 借助內(nèi)置跳板機(jī),實(shí)現(xiàn)本地服務(wù)與云端 SAE 應(yīng)用間的互調(diào),同時(shí)支持 Java/php remote debug 和實(shí)例的遠(yuǎn)程訪問(wèn),真正的將本地和云端環(huán)境融為一體。
四、總結(jié)
擁抱開(kāi)放,Serverless 時(shí)代的下一征程,這既是 SAE 在云原生浪潮下的愿景,也是 SAE 持續(xù)專注并將繼續(xù)堅(jiān)持的方向。未來(lái) SAE 將致力于以用戶最小的改造和認(rèn)知成本來(lái)提供產(chǎn)品更為強(qiáng)大的技術(shù)支持和體驗(yàn),將在部署架構(gòu),指標(biāo)數(shù)據(jù),通用運(yùn)維乃至各個(gè)方面以擁抱開(kāi)放的理念持續(xù)打磨深造,推進(jìn) Serverless 時(shí)代的發(fā)展進(jìn)程。