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