1. 程式人生 > 其它 >快速上手 Serverless | 入門第一課

快速上手 Serverless | 入門第一課

簡介:本文從雲端計算拋磚引玉,詳解 Serverless 的典型應用場景和一些產品介紹。

一、 從雲端計算到 Serverless

自世界上第一臺通用計算機 ENIAC (圖左)誕生以來,電腦科學與技術的發展就從未停止過前進的腳步。2003年-2006年,谷歌先後發表了這三篇非常經典的論文(圖右),指明瞭HDFS(分散式檔案系統)、MapReduce(平行計算)和HBase(分散式資料庫)的技術基礎及未來機會,為雲計算髮展方向奠定了基礎。

所以說從。ENIAC 到谷歌的3篇經典論文,電腦科學與技術的發展是在不斷的前進。而到了雲端計算時代,可以說電腦科學與技術的發展是在飛速的前進。

雲端計算的概念

對於雲端計算的界定,學術界的和工業界有不同的理解,回顧下雲端計算的發展歷程:

1、2006年,谷歌執行長在搜尋引擎大會上首次提出雲端計算的概念;同年亞馬遜將其彈性計算能力作為雲伺服器進行售賣,標誌著雲端計算這種新興商業模式正式誕生;

2、2008年,微軟釋出雲端計算平臺 Windows Azure,嘗試將技術和服務託管化、線上化;

3、2009年,《伯克利雲端計算白皮書》發表,文中明確指出雲端計算的定義:雲端計算包含網際網路上的應用服務以及在資料中心提供這些服務的軟硬體設施。

明確定義後,伯克利提出了關於雲端計算展望,同時也指出雲端計算所面臨的10個問題,如服務的可用性,資料的丟失或者資料安全性和可審計性等。

二、Serverless 概念

Serverless 定義

Serverless 翻譯成中文是無伺服器,所謂的無伺服器並非是說不需要依靠伺服器等資源,而是說開發者再也不用過多考慮伺服器的問題,可以更專注在產品程式碼上,同時計算資源也開始作為服務出現,

而不是作為伺服器的概念出現,Serverless是一種構建和管理基於微服務架構的完整流程,允許使用者在服務部署級別而不是伺服器部署級別來管理使用者的應用部署。與傳統架構的不同之處在於,它完全由第三方管理,由事件觸發,存在於無狀態(Stateless),暫存(可能只存在於一次呼叫的過程中)在計算容器內,Serverless 部署應用無須涉及更多的基礎設施建設,就可以基本實現自動構建、部署和啟動服務。

Serverless 架構

左邊是傳統意義上來說比較常見的 Web 應用的架構, 它是由客戶端、服務端、資料庫等元素組成。

以往做此類專案時,開發者需要在服務端做很多操作,如購買伺服器、考慮購買數量、寬頻、作業系統、部署在哪幾個區、環境、軟體等等問題。隨後還需要人為對這臺伺服器的健康要實時去監控,不斷的去感知。

而在 Serverless 架構下,開發者只需要關心我們的業務程式碼即可,在專案整個的開發、上線、維護過程中,使用者並不需要關注伺服器層面的維護,也無需為流量的波峰波谷進行運維資源的投入,這一部分將由雲廠商來負責;同時在 Serverless 架構下,使用者也無需為閒置資源進行額外支出。

Serverless 優點

Serverless 架構擁有零伺服器運維和空閒時無計算成本等特點;其交付心智可以體現為將複雜留給雲廠商,把便捷帶給更多開發者。綜上所述 Serverless 的優勢可以體現在如下:

1)降本提效

雲廠商為使用者提供伺服器的管理和運維工作,為使用者提供資料庫、物件儲存等 Baas 服務,讓使用者將更多的注意力放在自身的業務邏輯上,提升研發效率,縮小專案的創新週期,同時 Serverless 的使用者不用更多的擔心自身的伺服器運維,基礎設施的運維等工作,更不用為這部分有額外的費用支出,無需承擔更多的運維工作成本等;Serverless 架構提供了較為完善、全面的按量付費模型,使用者只需要按照自己實際使用的資源量付費即可;Serverless 架構在這一層面有較為明確的優勢。

  • 降低運維成本
  • 降低人力成本
  • 提高研發效率
  • 降低創新週期
  • 按量付費、降低支出成本

2)安全、方便、可靠

把更專業的事情交給更專業的人去做,Serverless 架構將更多伺服器運維、安全相關的事情交給雲廠商來做,大規模提升專案整體的安全性;同時,Serverless 架構明顯比其它架構更簡單,因為更多的 Baas 服務都是雲廠商提供的,使用者將會管理更少的元件,這意味著 Serverless 的使用者可以更簡單更方便的管理專案;同時 Serverless 架構擁有著彈效能力,即自動伸縮的能力,該能力可以讓專案在流量增加的時候,自動進行擴容,在流量降低的時候,自動進行縮容,進而保證整個業務的安全、穩定。專業團隊為使用者保障安全,保障效能,這使得 Serverless 架構:

  • 安全風險更低
  • 資源開銷更小
  • 符合“綠色”計算思想
  • 更加方便管理
  • 彈性伸縮,服務更可靠

總體來說,託管給雲廠商之後呢,不僅可以大規模的提升專案整體的安全性和穩定性,Serverless 架構也是明顯比其他架構更為簡單的。

面臨的挑戰

Serverless架構雖然出現多年但是真正步入“元年”並得以快速發展的時間其實很短暫;因此Serverless架構擁雖有諸多優點,但是也面臨一些困難和挑戰,包括但不限於冷啟動問題嚴重、開發工具不完善、廠商鎖定等現象。但是近些年 Serverless 架構熱度持續上升,人們對它寄予厚望,各個廠商也加大投入,相信目前的問題都是暫時的,Serverless 架構會朝著更好用、更易用的方向不斷演進。

Serverless 架構為使用者提供全新的程式設計正規化的同時,當用戶在享受 Serverless 帶來的第一波技術紅利的時候, Serverless 的缺點也逐漸地暴露了出來,例如函式的冷啟動問題,就是如今頗為嚴峻且備受關注的問題。由於 Serverless 架構具有彈性伸縮的能力, Serverless 服務的供應商會根據使用者服務的流量波動進行例項的增加或縮減,其示意圖如圖所示。

以阿里雲函式計算為例,當系統接收到第一個觸發函式的事件時,它將啟動一個容器來執行程式碼。如果此時收到了新的事件,而第一個容器仍在處理上一個事件,平臺將啟動第二個程式碼例項來處理第二個事件, Serverless 架構的這種自動的零管理水平縮放,將持續到有足夠的程式碼例項來處理所有的工作負載為止。當然,不僅僅是併發情況下會比較容易觸發函式冷啟動,在函式的前後兩次觸發時間間隔超過了例項釋放時間的閾值時,也會觸發函式的冷啟動,如下圖所示。

然而這裡就涉及一個問題,當新的請求或者說是事件到來時,在廣義上可能出現以下兩種情況:

  1. 存在空閒且可以直接複用的例項:熱啟動。
  2. 不存在空閒且可以直接複用的例項:冷啟動。

在本地執行一個函式,通常情況下是環境都已經準備妥當,每次執行只需要執行函式對應的方法即可,但是 Serverless 架構下並不是,本地與 FaaS 的函式呼叫區別示意圖如圖所示。

三、典型應用場景

Serverless 架構自提出到現在經過若干年的發展,已經在很多領域中有著非常多的最佳實踐,CNCF 總結出一些 Serverless 架構所適合的場景。

實時檔案處理

視訊應用、社交應用等場景下,使用者上傳的圖片、音視訊往往總量大、頻率高,對處理系統的實時性和併發能力都有較高的要求。例如,對於使用者上傳的圖片,可以使用多個函式對其分別處理,包括圖片的壓縮、格式轉換等,以滿足不同場景下的需求。

資料ETL處理

通常要對大資料進行處理,需要搭建 Hadoop 或者 Spark 等相關大資料的框架,同時要有一個處理資料的叢集。通過 Serverless 技術,只需要將獲得到的資料不斷的儲存到物件儲存,並且通過物件儲存相關觸發器觸發資料拆分函式進行相關資料或者任務的拆分,然後再呼叫相關處理函式,處理完成之後,儲存到雲資料庫中。

函式計算近乎無限擴容的能力可以使使用者輕鬆地進行大容量資料的計算。利用Serverless架構可以對源資料併發執行多個 mapper 和 reducer 函式,在短時間內完成工作,整個流程可以簡化為以下圖中所示;相比傳統工作方式,使用 Serverless 架構更能避免資源的閒置浪費,從而節省成本。

實時資料處理

通過 Serverless 架構所支援的豐富的事件源,通過事件觸發機制,可以通過幾行程式碼和簡單的配置對資料進行實時處理,例如:對物件儲存壓縮包進行解壓、對日誌或資料庫中的資料進行清洗、對 MNS 訊息進行自定義消費等。

機器學習(AI推理預測)

在AI模型完成訓練後,對外提供推理服務時,可以使用 Serverless 架構,通過將資料模型包裝在呼叫函式中,在實際使用者請求到達時再執行程式碼。相對於傳統的推理預測,這樣做的好處是無論是函式模組還是後端的 GPU 伺服器,以及對接的其他相關的機器學習服務,都是可以進行按量付費以及自動伸縮,從而保證效能的同時也確保了服務的穩定。

Web 應用/移動應用後端

Serverless 架構和雲廠商所提供的其他雲產品進行結合,開發者能夠構建可彈性擴充套件的移動或 Web 應用程式,輕鬆建立豐富的無伺服器後端,而且這些程式可在多個數據中心高可用執行,無需在可擴充套件性、備份冗餘方面執行任何管理工作。

音視訊轉碼

在視訊應用、社交應用等場景下,使用者會上傳一些視訊,通常上傳的視訊會進行一些轉碼,包括轉換為不同的清晰度。 Serverless 技術與物件儲存相關產品組合後,可利用物件儲存相關觸發器,即上傳者將視訊上傳到物件儲存中,觸發 Serverless 架構的計算平臺(FaaS 平臺)對其進行處理,處理之後將其重新儲存到物件儲存中,這個時候其他使用者就可以選擇編碼後的視訊進行播放,還可以選擇不同的清晰度,如圖所示。

綜上所述, Serverless 架構的典型應用場景更多是由 Serverless 架構的特點決定的。當然,隨著時間的不斷推移, Serverless 架構也在不斷演進,特點會更加突出,劣勢會被彌補。

四、Serverless 產品介紹

公有云產品

自 Serverless 概念被提出,其從不為人知到引人注目經歷了數年,Serverless 架構也在飛速發展,在 Serverless 架構中,計算機服務通常由 Faas 平臺提供。AWS Lanmbda、Google Cloud Functions、阿里雲函式計算等都是有代表性的工業化產品。

阿里雲 Serverless

Serverless 架構對底層的技術基礎要求很高,而從圖中可以看出阿里雲關於 Serverless 架構的整體形態是十分完善的,並且一直在自建自研的路上不斷精進。阿里雲 Serverless 產品在阿里巴巴經濟體內部已經實現落地,在淘寶、支付寶、閒魚、飛豬、釘釘,包括在語雀都有很好的體現。

函式計算是國內生態最完整、功能最豐富的 Serverless 產品,開發者一步上雲、一鍵 Serverless 化將成為現實。上圖是阿里雲 Serverless 從產品維度的一些分析,下圖則表達了 Serverless 從功能或者架構,底層基礎設施,和在計算層面所展現出來的典型業務能力。例如說彈性伸縮、負載均衡、流量控制、高可用部署、版本灰度故障恢復等。像在執行時的容器映象服務,阿里雲在去年便已推出,隨後AWS 、騰訊等,也都相繼推出容器映象。圖中詮釋了阿里雲 Serverless 是如何通過底層,逐漸的向上層建設,讓開發者可以更簡單、更方便的使用 Serverless 的全過程。

開源產品

不僅僅在工業界有諸多廠商不斷為 Serverless 架構努力,在開源領域也有諸多優秀的 Serverless 專案。包括 OpenWhisk、Fission、Knative 以及 Kubeless 等在內的眾多優秀的開源 FaaS 平臺都已得到 CNCF 的認可。

講師簡介:劉宇(江昱)國防科技大學電子資訊專業在讀博士,阿里雲 Serverless 產品經理,阿里雲 Serverless 雲佈道師,CIO 學院特聘講師。

本文整理自【ServerlessLive 系列直播】9 月 22 日場

直播回放連結:0 基礎晉級 Serverless 高手課-阿里雲開發者社群

原文連結

本文為阿里雲原創內容,未經允許不得轉載。