天天看點

SAE 的極緻應用部署效率

SAE 的極緻應用部署效率

作者 | 文俊 阿裡巴巴雲原生團隊

本文整理自

《Serverless 技術公開課》

作為 Serverless 平台,SAE 提供了應用全托管的服務,充分利用了雲原生的技術紅利,以容器作為應用載體,提供了靈活的部署、編排、彈性等能力。SAE 屏蔽了底層的基礎設施,對于使用者來說,感覺到的最底層資源是應用執行個體本身,應用建立、部署等操作是使用者互動的主要接口。

接下來将介紹我們在應用建立、部署、重新開機等過程所做的效率優化工作。

應用建立

首先是應用建立。目前,使用者界面可通過鏡像或 war、jar 安裝包的方式部署應用,最後在平台側,以統一打包成容器鏡像的方式進行分發,然後平台去申請計算、存儲、網絡等 IAAS 資源,再開始建立容器執行環境和應用執行個體。

SAE 的極緻應用部署效率

在這個過程中,涉及到排程、雲資源建立和挂載、鏡像拉取、容器環境建立、應用程序建立等步驟,應用的建立效率與這些過程緊密相關。

我們很自然而然地能想到,這其中部分過程是否能并行,以減少整個建立的耗時呢?經過對每個過程的耗時分析,我們發現其中的一些瓶頸點,并且部分執行步驟之間是解耦獨立的,比如雲彈性網卡的建立挂載和應用鏡像拉取,就是互相獨立的過程。基于此,我們将其中獨立的過程做了并行化處理,在不影響建立鍊路的同時,降低了應用建立的時耗。

應用部署

應用的部署,即應用更新。我們知道,傳統的應用部署過程可以分為以下幾個步驟:

  1. 首先建立新版本的執行個體;
  2. 然後等待執行個體啟動、業務程序 ready 後,接入流量,即建立對應 SLB 後端;
  3. 最後将老版本執行個體從 SLB 後端摘除并銷毀。

在分批釋出的場景下,如此繼續循環下一批執行個體,進行滾動更新。我們能看到,在這個過程中,應用執行個體發生了重建,同時執行個體 ip 也會發生浮動。

上文我們講到,應用執行個體的建立過程包括排程、雲資源建立挂載、鏡像拉取、容器環境建立、應用程序拉起等步驟,對于應用部署而言,完全可以不用重走一遍所有的流程,因為我們需要的僅僅是基于新的鏡像,建立新的應用執行環境和程序而已。

是以,我們實作了原地部署的功能,在滾動更新過程中,保留原來待更新應用執行個體及其挂載的雲網絡、雲存儲資源,隻更新執行個體的執行環境,無需經過排程、雲資源建立等過程。這樣,原來的部署流程也簡化為:

摘流,将運作執行個體從 SLB 後端摘除 -> 原地更新執行個體 -> 接入流量

原地更新後,應用執行個體仍保持原來的 ip。經過測試,對于 2 執行個體應用,部署效率将提升4倍,将部署時長從原來的将近 1 分鐘縮短到十幾秒。

SAE 的極緻應用部署效率

應用重新開機

最後,簡單介紹下我們即将推出的原地重新開機功能。

重新開機執行個體在某些運維場合是必要的操作,說到應用重新開機,我們希望類似于 linux 系統一樣,可以隻執行一次 reboot,而不是重建執行個體。具體的做法是,我們在容器環境下,通過容器引擎 API 執行一次啟停操作即可。原地重新開機相比原地更新,省去了鏡像更新和執行環境建立的過程,并且相比 ECS,容器的重新開機更輕量,能達到秒級。

該功能近期會上線,敬請期待。

Serverless 公衆号 ,釋出 Serverless 技術最新資訊,彙集 Serverless 技術最全内容,關注 Serverless 趨勢,更關注你落地實踐中的遇到的困惑和問題。