SAE 的极致应用部署效率
作者 | 文俊 阿里巴巴云原生團(tuán)隊
本文整理自《Serverless 技術(shù)公開課》
作為 Serverless 平臺,SAE 提供了應(yīng)用全托管的服務(wù),充分利用了云原生的技術(shù)紅利,以容器作為應(yīng)用載體,提供了敏捷的部署、編排、彈性等能力。SAE 屏蔽了底層的基礎(chǔ)設(shè)施,對于用戶來說,感知到的最底層資源是應(yīng)用實例本身,應(yīng)用創(chuàng)建、部署等操作是用戶交互的主要接口。
接下來將介紹我們在應(yīng)用創(chuàng)建、部署、重啟等過程所做的效率優(yōu)化工作。
應(yīng)用創(chuàng)建
首先是應(yīng)用創(chuàng)建。目前,用戶界面可通過鏡像或 war、jar 安裝包的方式部署應(yīng)用,最后在平臺側(cè),以統(tǒng)一打包成容器鏡像的方式進(jìn)行分發(fā),然后平臺去申請計算、存儲、網(wǎng)絡(luò)等 IAAS 資源,再開始創(chuàng)建容器執(zhí)行環(huán)境和應(yīng)用實例。
在這個過程中,涉及到調(diào)度、云資源創(chuàng)建和掛載、鏡像拉取、容器環(huán)境創(chuàng)建、應(yīng)用進(jìn)程創(chuàng)建等步驟,應(yīng)用的創(chuàng)建效率與這些過程緊密相關(guān)。
我們很自然而然地能想到,這其中部分過程是否能并行,以減少整個創(chuàng)建的耗時呢?經(jīng)過對每個過程的耗時分析,我們發(fā)現(xiàn)其中的一些瓶頸點,并且部分執(zhí)行步驟之間是解耦獨立的,比如云彈性網(wǎng)卡的創(chuàng)建掛載和應(yīng)用鏡像拉取,就是相互獨立的過程。基于此,我們將其中獨立的過程做了并行化處理,在不影響創(chuàng)建鏈路的同時,降低了應(yīng)用創(chuàng)建的時耗。
應(yīng)用部署
應(yīng)用的部署,即應(yīng)用升級。我們知道,傳統(tǒng)的應(yīng)用部署過程可以分為以下幾個步驟:
在分批發(fā)布的場景下,如此繼續(xù)循環(huán)下一批實例,進(jìn)行滾動升級。我們能看到,在這個過程中,應(yīng)用實例發(fā)生了重建,同時實例 ip 也會發(fā)生浮動。
上文我們講到,應(yīng)用實例的創(chuàng)建過程包括調(diào)度、云資源創(chuàng)建掛載、鏡像拉取、容器環(huán)境創(chuàng)建、應(yīng)用進(jìn)程拉起等步驟,對于應(yīng)用部署而言,完全可以不用重走一遍所有的流程,因為我們需要的僅僅是基于新的鏡像,創(chuàng)建新的應(yīng)用執(zhí)行環(huán)境和進(jìn)程而已。
因此,我們實現(xiàn)了原地部署的功能,在滾動升級過程中,保留原來待升級應(yīng)用實例及其掛載的云網(wǎng)絡(luò)、云存儲資源,只更新實例的執(zhí)行環(huán)境,無需經(jīng)過調(diào)度、云資源創(chuàng)建等過程。這樣,原來的部署流程也簡化為:
摘流,將運行實例從 SLB 后端摘除 -> 原地升級實例 -> 接入流量
原地升級后,應(yīng)用實例仍保持原來的 ip。經(jīng)過測試,對于 2 實例應(yīng)用,部署效率將提升4倍,將部署時長從原來的將近 1 分鐘縮短到十幾秒。
應(yīng)用重啟
最后,簡單介紹下我們即將推出的原地重啟功能。
重啟實例在某些運維場合是必要的操作,說到應(yīng)用重啟,我們希望類似于 linux 系統(tǒng)一樣,可以只執(zhí)行一次 reboot,而不是重建實例。具體的做法是,我們在容器環(huán)境下,通過容器引擎 API 執(zhí)行一次啟停操作即可。原地重啟相比原地升級,省去了鏡像更新和執(zhí)行環(huán)境創(chuàng)建的過程,并且相比 ECS,容器的重啟更輕量,能達(dá)到秒級。
該功能近期會上線,敬請期待。
Serverless 公眾號,發(fā)布 Serverless 技術(shù)最新資訊,匯集 Serverless 技術(shù)最全內(nèi)容,關(guān)注 Serverless 趨勢,更關(guān)注你落地實踐中的遇到的困惑和問題。
總結(jié)
以上是生活随笔為你收集整理的SAE 的极致应用部署效率的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面对复杂业务,if-else coder
- 下一篇: 阿里 双11 同款,流量防卫兵 Sent