Serverless應用中心是阿里雲面向Serverless應用的一站式開發及生命週期管理平台。通過Serverless應用中心,您可以有效聚焦業務情境,快速開發及部署Serverless應用、白屏化操作資源提高營運效率,實現應用的全生命週期的管理。本文介紹Serverless應用中心的相關概念、優勢以及功能。
使用說明
關於計費
Serverless應用中心是個免費的平台,本身不會收取任何費用,但是不同模板以及環境會訪問一些雲端服務,這些服務可能會產生費用。具體計費詳情,請參考具體雲產品價格說明。
關於許可權
通過Serverless應用中心部署應用時,可能會訪問其他雲端服務,例如,部署Function Compute的服務和函數資源,建立或更新VPC、NAS、SLS相關資源等,此時需要授予Function Compute相應的存取權限。首先為應用或環境關聯一個RAM服務角色,然後將目標授信服務設定為Function Compute,應用中心使用AssumeRole - 擷取扮演角色的臨時身份憑證方式訪問使用者的雲端服務。
為了簡化授權操作步驟,Serverless應用中心提供了系統預設角色,即AliyunFCServerlessDevsRole。該角色包含了應用中心需要訪問的部分雲資源許可權。您可以登入RAM角色管理主控台,查看AliyunFCServerlessDevsRole角色的許可權內容。
由於AliyunFCServerlessDevsRole角色包含的許可權是較粗粒度的許可權,如果需要定製更細粒度的許可權,您可以為應用或環境關聯其他角色及相關權限原則。
為了遵循最小授權原則,不建議為應用直接複用服務中指定的角色。應用使用的角色和服務角色使用情境不同,具體說明如下。
應用角色的用途是管控鏈路,即在應用部署階段訪問雲端服務,例如,建立VPC及交換器、構建並上傳ACR鏡像或更新函數等。
服務角色的用途是資料鏈路,即在函數調用階段訪問雲端服務,例如,掛載ENI網卡、拉取ACR鏡像或將函數執行日誌寫入SLS等。
優勢
通過Serverless應用中心,使用者在部署應用之前,無需進行構建、打包和發布等額外操作,即可通過應用中心的天然GitOps能力,快速部署和管理應用。Serverless應用中心協助使用者快速聯動雲上的上下遊服務,輕鬆沉澱最佳實務。
讓開發人員可以通過控制台操作,更簡單、更方便、更快速地體驗和上手Serverless應用。
讓Serverless應用可以以一種更為科學、安全與穩定的方法,進行開發、建立、更新以及營運、迭代等。
將傳統的資源以應用的維度進行彙總、管理,可以讓開發人員真正意義上聚焦業務,聚焦應用,而不再是零散在不同產品頁面上的資源。
功能
Serverless應用中心為開發人員提供了Web開發架構、Web應用、人工智慧、音視頻處理和檔案處理等在內的10個分類近百款熱門 App。無論是全景Web頁面錄製、二維碼產生工具、PDF檔案添加浮水印、輕商城應用、KodBox應用等,還是Django、Flask、SpringBoot、Express等各類開發架構等,都可以通過應用中心一鍵建立並快速體驗。通過應用中心的天然GitOps能力,開發人員也可以快速地對應用進行二次開發與應用的發布上線,以適應個人化的需求,滿足更複雜的業務情境。
除通過模板快速建立之外,Serverless應用中心還提供Serverless應用匯入能力,對於符合Serverless Devs應用規範的應用(即包括了業務代碼與資源描述檔案,例如s.yaml等),可以快速匯入,並進行環境的劃分、流水線的建立等。
應用中心提供大量應用案例,旨在協助開發人員快速體驗和二次開發。針對定製化需求,開發人員可以在此基礎上,進行二次開發,以實現更多能力。
應用中心整合了各種應用模板,關於模板本身的問題,不在Function Compute的維護服務涵蓋範圍內。
相關概念
應用
一個Serverless應用的完整描述。應用可以關聯一個代碼倉庫、多個環境和多條流水線。
應用和函數的區別
函數託管的是代碼交付物(包括代碼ZIP包/JAR包/WAR包/鏡像),關注的是代碼的運行態及營運態。函數提供了各種運行時來載入並執行代碼交付物。
應用面向的是源碼(包括Github/Codeup/Gitee/Gitlab),關注的是Serverless軟體開發及交付的生命週期。應用納管了代碼倉庫、函數、基礎設施資源,目前內建了豐富的應用模板及DevOps能力,實現使用者從入門Serverless到上線生產的完整工作流程。
環境
描述測試、預發、生產類別的具體環境。環境的作用如下所示。
物理隔離。例如地區、VPC和NAS隔離等。
提供BaaS相關能力。例如管理的資料庫和儲存等。
提供函數配置差異化能力。例如執行個體規格和記憶體等。
通過環境,能完成應用部署在相互隔離(非強制)的網路空間,並且為業務提供差異化的配置注入能力。典型的使用情境如下所示。
研發迭代流程需要,例如測試、預發、生產環境。
出於容災的考慮,需要將服務進行多地區部署,每個地區多可用性區域部署,每個地區或者可用性區域部署一套生產環境。
出於效能及延遲的考慮,中國內地業務部署華北2(北京)、華東1(杭州)和華南1(深圳)三個資料中心,海外業務部署新加坡和美國(維吉尼亞)兩個資料中心,每個資料中心下部署一套環境。
出於多租的考慮,將服務的不同租戶劃分到不同環境上,每個環境服務一類租戶。
出於法律法規的考慮,例如,歐洲的資料保護法律要求歐洲的使用者資料必須存放到歐洲,因此需要在歐洲部署一個獨立環境,非歐洲的核心業務部署在另外的環境上。
出於演練及安全生產的考慮,需要劃分出獨立的環境進行大促演練、安全生產巡檢等操作。
CI/CD
應用中心提供了Serverless的流水線能力,協助使用者解決CI/CD情境的定義與執行問題。使用者可以通過模板的方式,在應用中心預定義一個構建、部署、審批、上線的流程,並通過手動觸發或代碼變更觸發的方式執行,將代碼發布到Serverless產品。
流水線目前支援兩種觸發方式:
手動觸發
可以在環境管理頁面單擊立即部署或者選擇其他版本重新部署,觸發流水線的執行。
Git事件觸發
對代碼倉庫提交變更,包括推送代碼、提交PR或MR等。
成功觸發流水線後會建立一個部署版本,並且會記錄代碼Commit、應用配置、環境配置和流水線配置的快照,通過版本管理可以實現快速復原的能力。
流水線模板
使用者需要在建立環境或應用的流程中,為應用中心預設流水線模板。
任務
任務是流水線執行的基本單位,一個流水線由多個工作群組成。不同任務會運行在不同獨立的執行個體上。任務目前運行了應用預設的程式,可以按照使用者自訂的方式運行指令碼。