“暈乎乎的概念”:阿里雲函式計算的“應用”又是個啥

語言: CN / TW / HK

作者:劉宇

曾經,有人問我:阿里雲函式計算的服務和函式是啥關係?我相信至今還有小夥伴沒有搞清楚他們之間彼此的聯絡。

這幾天阿里雲又正式釋出了一個“概念”:應用。那麼阿里雲函式計算單單這個層面,就已經有了三層概念:函式-服務-應用,真的是讓人有點暈乎乎的。

從另一個角度來看,關注阿里雲 Serverless 的小夥伴,應該發現了兩個事情:

  1. 阿里雲函式計算不僅僅發了“應用”,還正在熱推“應用”;
  2. 阿里雲函式計算基於“應用”搞了一期體驗活動:一鍵部署網盤;

為什麼阿里雲函式計算髮布了這麼多功能,只有少數的功能會伴隨著體驗活動一起來做運營?那麼這個“應用”到底是何方神聖?他和現在“服務”,“函式”有啥關係?

從業務層級來簡單說說

首先,我們要明確,現在很多概念都是抽象的,沒有絕對的,尤其是資源和業務層級進行關聯後。例如,函式對應的是啥?是一個函式,是一個方法,還是一個功能,一段業務,再或者是一個框架?其實並沒有嚴格劃分,所以我們本次的探索一定要基於一種“中庸之道”,一種“可意會難言傳”的微妙感覺。

其次,因為所有的名詞都是抽象的,對應的不同開發任務,不同業務可能有若干的差別,所以以下的探索僅僅是針對“絕大部分情況”而言的。

在說函式-服務-應用之前,我先放一張自己的想法:

1.png

通過這張圖,大家不難發現,所謂的:

  • 應用:指的是一個稍微上一層的概念,他實際上是一個或多個 FaaS 資源與一個或多個 BaaS 資源的結合。例如,我的一個相簿小程式後端,使用了一個函式計算服務(下面包括了三個函式),一個域名,一個儲存桶,一個 NAS,一個 MySQL 資料庫,一個 Redis 資料庫,以及相對應的VPC資源,日誌資源等,而這些,在一定程度上,可以認為是一個應用。因為就我個人角度而言,這些 FaaS 與 BaaS 資源聯合,實現了一個完整的應用功能,或者業務能力;

  • 服務:這裡的服務,在一定程度上指的是函式計算的服務,他實際上是一種對函式的分組,或者說是我們認為某些有關聯且可以按照某些規則分組到一起的函式,只不過這裡面的分組有一個特殊點,那就是他是帶有一定配置的。換句話來說,函式計算的服務,是在使用指定日誌儲存、VPC、NAS 等資源的函式中,具有相同業務屬性或者完成某些業務目標,具有相關聯的函式集合。所以函式計算的服務實際上是“服務層面的配置”與“一系列的函式資源”;

  • 函式:這個相對來說可以認為是業務層面的一種資源;例如,上面所說的相簿小程式後端業務中有三個函式:

    • 函式 1: 實現 REST 風格的 API,來為我的小程式提供若干的功能。例如對相簿的增刪改查、對照片的增刪改查等;
    • 函式 2: 上傳後的照片會被儲存到物件儲存,通過物件儲存觸發該函式,實現非同步的圖片壓縮、圖片的 Image Caption,圖片中人物的聚類
    • 函式 3: 定時進行相對應資源進行清理/處理/校對/分析等;   

綜上可以看到:函式,更多是一種資源,對應到我們業務應該是某種業務的粒度;服務,更多是一種函式的集合,並抽象出一定的配置;應用,更多業務和資源的一種結合。

“應用”到底有沒有“價值”

函式計算已經有了服務和函式的概念,初步來看,函式和服務都是“一種資源”,那麼已經有了這兩層概念,再在上面增加一個“應用”的概念,並且應用更多不像是一種“資源”,而是一種“邏輯”,一種將“資源”關聯起來的“邏輯”,那麼應用的價值是什麼?為什麼要有應用,為什麼要用應用呢?

其實從我的角度,“應用”在一定程度上是一種心智的升級,即從資源向業務邏輯升級的過程。除此之外,“應用”的出現也意味著之後Serverless架構所交付的可能就真的是“應用”了,這句話怎麼理解呢?通過現在的函式計算“應用”來看,我們不難發現,現在的“應用”:

  1. 對應了一個程式碼倉庫,往往可以粗略認為一個 repo 就是一個應用;
  2. 只需要把業務程式碼放在 github(push/release)就可以觸發應用構建、釋出(涉及到不同資源的釋出等);
  3. 之後的監控、告警、多環境等功能,甚至是應用的整體刪除,都可以在這個層面直接來做了;

所以,這就是“以應用緯度玩轉 Sererless 架構”的一種思路,當然,不可否定的是,現在的“應用”還有很多功能在完善的過程中,但是我們也可以看到,他也正在更細膩,更精緻,更有趣。

所以,應用在一定程度上,是一種更貼近業務層的全生命週期管理能力,是一種讓開發者,讓業務團隊可以更關注自身業務邏輯,自身應用,自身功能的一種“思想升級”。相對比,傳統資源層面的應用部署和管理,“應用”顯得更為專業,更為清晰,可以在一個頁面看到所有的資源,以及對這些資源進行適當的管理:

2.png

除此之外,應用一共被部署多少次,每次的結果/日誌,什麼樣子的,都是可以直接檢視的(也可以隨時回滾):

3.png

在不久的將來,監控、告警、環境劃分都將會以應用緯度進行體現,這將會是“業務開發的一個福音”,至少,我自己也在吃自己的狗糧,我是越吃越“上癮”。

這個應用很“open”

阿里雲函式計算所推出的“應用”,是一個非常有趣的能力,他有兩種建立方法,一種是可以直接匯入一個符合 Serverless Devs 規範的應用,另外一種則是通過已有的模板進行快速建立:

4.png

通過上面的圖,我們不難發現,在應用中,有各種 web 框架、web 應用、人工智慧案例可供參考。所以不難發現,應用一方面,在努力解決如何讓 Serverless 可以快速 Onboarding 的“痛點”(上手/體驗門檻比較高),另一方面,也在以更多的案例賦能開發者可以簡單、快速、方便的上手 Serverless 架構(甚至有很多應用開箱即用)。

以頭幾天朋友讓我幫忙寫的一個 PNG 圖片無失真壓縮的應用為例:

5.png

我作為一個社群貢獻者,開發完應用,只需要填寫一個官方的應用收錄表單(開發應用與提交表單參考:https://github.com/Serverless-Devs/Serverless-Devs/discussions/439):

6.png

稽核通過之後,就可以自動同步到應用中心,供更多人測試/使用。別人在使用的時候,也是簡單的點兩下:

  1. 建立

7.png

  1. 部署

8.png

  1. 體驗

9.png

整個過程“行雲流水”,非常順利。目前,應用中的模板有包括 AI 目標檢測、OCR 識別等在內的數十個社群貢獻的應用:

10.png

所以這裡說 Open,也是在指,阿里雲函式計算的“應用”,實際上是和社群開源專案 Serverless Devs 呼應的,換句話來說,阿里雲函式計算擁抱開源已經擁抱到“把自己當作開源的子集”,換句話來說就是,這個“應用”的所有案例/模板,實際上是 Serverless Devs 應用中心的另一種表現:努力開源、貢獻力量、開源建設、開放生態,這才是和開發者一起玩轉 Serverless 架構的態度,當然,我也非常希望有更多的開發者,可以和我們一同玩轉 Serverless 架構,現在真的有越來越多的社群專案出現,我相信這只是開始。

1分鐘 Serverless 部署個人網盤

1 分鐘自建一個真網盤

1 步拿到百變指尖陀螺!

11.jpg

本場景基於 Serverless 應用中心 + 阿里雲函式計算 + 開源企業級線上檔案管理系統 KodBox 打造,讓你僅用 “幾次” 點選,擁有一個可隨意儲存資源、不限速下載、多端使用、與朋友共享資源……的專屬個人網盤。

時間: 5 月 9 日 - 5 月 20 日(工作日期間)

獎品: 每日 200 個百變指尖陀螺

建議: PC 端體驗

點選一鍵部署個人網盤!