'如果面試官問你Serverless,你這樣答就穩了'

"
作者:高露
原文:https://juejin.im/post/5d42945ff265da03a715b2f0

Serverless 架構即“無服務器”架構,它是一種全新的架構方式,是雲計算時代一種革命性的架構模式。與雲計算、容器和人工智能一樣,Serverless 是這兩年IT行業的一個熱門詞彙,它在各種技術文章和論壇上都有很高的曝光度。

目前行業可能更多處在容器 Docker+Kubernetes, 利用 IaaS、PaaS和SaaS 來快速搭建部署應用

什麼是Serverless

Serverless 圈內俗稱為“無服務器架構”,Serverless 不是具體的一個編程框架、類庫或者工具。簡單來說,Serverless 是一種軟件系統架構思想和方法,它的核心思想是用戶無須關注支撐應用服務運行的底層主機。這種架構的思想和方法將對未來軟件應用的設計、開發和運營產生深遠的影響。

所謂“無服務器”,並不是說基於 Serverless 架構的軟件應用不需要服務器就可以運行,其指的是用戶無須關心軟件應用運行涉及的底層服務器的狀態、資源(比如 CPU、內存、磁盤及網絡)及數量。軟件應用正常運行所需要的計算資源由底層的雲計算平臺動態提供。

Serverless的技術實現

Serverless 的核心思想是讓作為計算資源的服務器不再成為用戶所關注的一種資源。其目的是提高應用交付的效率,降低應用運營的工作量和成本。以 Serverless 的思想作為基礎實現的各種框架、工具及平臺,是各種 Serverless 的實現(Implementation)。Serverless不是一個簡單的工具或框架。用戶不可能簡單地通過實施某個產品或工具就能實現 Serverless 的落地。但是,要實現 Serverless 架構的落地,需要一些實實在在的工具和框架作為有力的技術支撐和基礎。

隨著 Serverless 的日益流行,這幾年業界已經出現了多種平臺和工具幫助用戶進行 Serverless 架構的轉型和落地。目前市場上比較流行的 Serverless 工具、框架和平臺 有:

  • AWS Lambda,最早被大眾所認可的 Serverless 實現。
  • Azure Functions,來自微軟公有云的 Serverless 實現。
  • OpenWhisk,Apache 社區的開源 Serverless 框架。
  • Kubeless,基於 Kubernetes 架構實現的開源 Serverless 框架。
  • Fission,Platform9 推出的開源 Serverless 框架。
  • OpenFaaS,以容器技術為核心的開源 Serverless 框架。
  • Fn,來自 Oracle 的開源 Serverless 框架,由原 Iron Functions 團隊開發。
列舉的 Serverless 實現有的是公有云的服務,有的則是框架工具,可以被部署在私有數據中心的私有云中(私有云 Serverless 框架 OpenWhisk、Fission 及 OpenFaaS)。每個 Serverless 服務或框架的實現都不盡相同,都有各自的特點。

FaaS與BaaS

IT是一個永遠都不消停的行業,在這個行業裡不斷有各種各樣新的名詞和技術誕生,雲計算(Cloud Computing)的出現是21世紀IT業界最重大的一次變革。雲計算的發展從基礎架構即服務(Infrastructure as a Service, IaaS),平臺即服務(Platform as a Service,PaaS),軟件即服務(Software as a Service,SaaS),慢慢開始演變到函數即服務(Function as a Service,FaaS)以及後臺即服務(Backend as a Service,BaaS),Serverless 無服務化。


"
作者:高露
原文:https://juejin.im/post/5d42945ff265da03a715b2f0

Serverless 架構即“無服務器”架構,它是一種全新的架構方式,是雲計算時代一種革命性的架構模式。與雲計算、容器和人工智能一樣,Serverless 是這兩年IT行業的一個熱門詞彙,它在各種技術文章和論壇上都有很高的曝光度。

目前行業可能更多處在容器 Docker+Kubernetes, 利用 IaaS、PaaS和SaaS 來快速搭建部署應用

什麼是Serverless

Serverless 圈內俗稱為“無服務器架構”,Serverless 不是具體的一個編程框架、類庫或者工具。簡單來說,Serverless 是一種軟件系統架構思想和方法,它的核心思想是用戶無須關注支撐應用服務運行的底層主機。這種架構的思想和方法將對未來軟件應用的設計、開發和運營產生深遠的影響。

所謂“無服務器”,並不是說基於 Serverless 架構的軟件應用不需要服務器就可以運行,其指的是用戶無須關心軟件應用運行涉及的底層服務器的狀態、資源(比如 CPU、內存、磁盤及網絡)及數量。軟件應用正常運行所需要的計算資源由底層的雲計算平臺動態提供。

Serverless的技術實現

Serverless 的核心思想是讓作為計算資源的服務器不再成為用戶所關注的一種資源。其目的是提高應用交付的效率,降低應用運營的工作量和成本。以 Serverless 的思想作為基礎實現的各種框架、工具及平臺,是各種 Serverless 的實現(Implementation)。Serverless不是一個簡單的工具或框架。用戶不可能簡單地通過實施某個產品或工具就能實現 Serverless 的落地。但是,要實現 Serverless 架構的落地,需要一些實實在在的工具和框架作為有力的技術支撐和基礎。

隨著 Serverless 的日益流行,這幾年業界已經出現了多種平臺和工具幫助用戶進行 Serverless 架構的轉型和落地。目前市場上比較流行的 Serverless 工具、框架和平臺 有:

  • AWS Lambda,最早被大眾所認可的 Serverless 實現。
  • Azure Functions,來自微軟公有云的 Serverless 實現。
  • OpenWhisk,Apache 社區的開源 Serverless 框架。
  • Kubeless,基於 Kubernetes 架構實現的開源 Serverless 框架。
  • Fission,Platform9 推出的開源 Serverless 框架。
  • OpenFaaS,以容器技術為核心的開源 Serverless 框架。
  • Fn,來自 Oracle 的開源 Serverless 框架,由原 Iron Functions 團隊開發。
列舉的 Serverless 實現有的是公有云的服務,有的則是框架工具,可以被部署在私有數據中心的私有云中(私有云 Serverless 框架 OpenWhisk、Fission 及 OpenFaaS)。每個 Serverless 服務或框架的實現都不盡相同,都有各自的特點。

FaaS與BaaS

IT是一個永遠都不消停的行業,在這個行業裡不斷有各種各樣新的名詞和技術誕生,雲計算(Cloud Computing)的出現是21世紀IT業界最重大的一次變革。雲計算的發展從基礎架構即服務(Infrastructure as a Service, IaaS),平臺即服務(Platform as a Service,PaaS),軟件即服務(Software as a Service,SaaS),慢慢開始演變到函數即服務(Function as a Service,FaaS)以及後臺即服務(Backend as a Service,BaaS),Serverless 無服務化。


如果面試官問你Serverless,你這樣答就穩了


目前業界的各類 Serverless 實現按功能而言,主要為應用服務提供了兩個方面的支持:函數即服務(Function as a Service,FaaS)以及後臺即服務(Backend as a Service,BaaS)。


"
作者:高露
原文:https://juejin.im/post/5d42945ff265da03a715b2f0

Serverless 架構即“無服務器”架構,它是一種全新的架構方式,是雲計算時代一種革命性的架構模式。與雲計算、容器和人工智能一樣,Serverless 是這兩年IT行業的一個熱門詞彙,它在各種技術文章和論壇上都有很高的曝光度。

目前行業可能更多處在容器 Docker+Kubernetes, 利用 IaaS、PaaS和SaaS 來快速搭建部署應用

什麼是Serverless

Serverless 圈內俗稱為“無服務器架構”,Serverless 不是具體的一個編程框架、類庫或者工具。簡單來說,Serverless 是一種軟件系統架構思想和方法,它的核心思想是用戶無須關注支撐應用服務運行的底層主機。這種架構的思想和方法將對未來軟件應用的設計、開發和運營產生深遠的影響。

所謂“無服務器”,並不是說基於 Serverless 架構的軟件應用不需要服務器就可以運行,其指的是用戶無須關心軟件應用運行涉及的底層服務器的狀態、資源(比如 CPU、內存、磁盤及網絡)及數量。軟件應用正常運行所需要的計算資源由底層的雲計算平臺動態提供。

Serverless的技術實現

Serverless 的核心思想是讓作為計算資源的服務器不再成為用戶所關注的一種資源。其目的是提高應用交付的效率,降低應用運營的工作量和成本。以 Serverless 的思想作為基礎實現的各種框架、工具及平臺,是各種 Serverless 的實現(Implementation)。Serverless不是一個簡單的工具或框架。用戶不可能簡單地通過實施某個產品或工具就能實現 Serverless 的落地。但是,要實現 Serverless 架構的落地,需要一些實實在在的工具和框架作為有力的技術支撐和基礎。

隨著 Serverless 的日益流行,這幾年業界已經出現了多種平臺和工具幫助用戶進行 Serverless 架構的轉型和落地。目前市場上比較流行的 Serverless 工具、框架和平臺 有:

  • AWS Lambda,最早被大眾所認可的 Serverless 實現。
  • Azure Functions,來自微軟公有云的 Serverless 實現。
  • OpenWhisk,Apache 社區的開源 Serverless 框架。
  • Kubeless,基於 Kubernetes 架構實現的開源 Serverless 框架。
  • Fission,Platform9 推出的開源 Serverless 框架。
  • OpenFaaS,以容器技術為核心的開源 Serverless 框架。
  • Fn,來自 Oracle 的開源 Serverless 框架,由原 Iron Functions 團隊開發。
列舉的 Serverless 實現有的是公有云的服務,有的則是框架工具,可以被部署在私有數據中心的私有云中(私有云 Serverless 框架 OpenWhisk、Fission 及 OpenFaaS)。每個 Serverless 服務或框架的實現都不盡相同,都有各自的特點。

FaaS與BaaS

IT是一個永遠都不消停的行業,在這個行業裡不斷有各種各樣新的名詞和技術誕生,雲計算(Cloud Computing)的出現是21世紀IT業界最重大的一次變革。雲計算的發展從基礎架構即服務(Infrastructure as a Service, IaaS),平臺即服務(Platform as a Service,PaaS),軟件即服務(Software as a Service,SaaS),慢慢開始演變到函數即服務(Function as a Service,FaaS)以及後臺即服務(Backend as a Service,BaaS),Serverless 無服務化。


如果面試官問你Serverless,你這樣答就穩了


目前業界的各類 Serverless 實現按功能而言,主要為應用服務提供了兩個方面的支持:函數即服務(Function as a Service,FaaS)以及後臺即服務(Backend as a Service,BaaS)。


如果面試官問你Serverless,你這樣答就穩了


1.FaaS

FaaS 提供了一個計算平臺,在這個平臺上,應用以一個或多個函數的形式開發、運行和管理。FaaS 平臺提供了函數式應用的運行環境,一般支持多種主流的編程語言,如 Java、PHP 及 Python 等。FaaS 可以根據實際的訪問量進行應用的自動化動態加載和資源的自動化動態分配。大多數 FaaS 平臺基於事件驅動(Event Driven)的思想,可以根據預定義的事件觸發指定的函數應用邏輯。

目前業界 FaaS 平臺非常成功的一個代表就是 AWS Lambda 平臺。AWS Lambda 是 AWS 公有云服務的函數式計算平臺。通過 AWS Lambda,AWS 用戶可以快速地在 AWS 公有云上構建基於函數的應用服務。

2.BaaS

為了實現應用後臺服務的 Serverless 化,BaaS(後臺即服務)也應該被納入一個完整的 Serverless 實現的範疇內。通過 BaaS 平臺將應用所依賴的第三方服務,如數據庫、消息隊列及存儲等服務化併發布出來,用戶通過向 BaaS 平臺申請所需要的服務進行消費,而不需要關心這些服務的具體運維。

BaaS 涵蓋的範圍很廣泛,包含任何應用所依賴的服務。一個比較典型的例子是數據庫即服務(Database as a Service,DBaaS)。許多應用都有存儲數據的需求,大部分應用會將數據存儲在數據庫中。傳統情況下,數據庫都是運行在數據中心裡,由用戶運維團隊負責運維。在DBaaS的場景下,用戶向 DBaaS 平臺申請數據庫資源,而不需要關心數據庫的安裝部署及運維。

Serverless的技術特點

為了實現解耦應用和服務器資源,實現服務器資源對用戶透明,與傳統架構相比,Serverless 架構在技術上有許多不同的特點。

  • 1.按需加載

在 Serverless 架構下,應用的加載(load)和卸載(unload)由 Serverless 雲計算平臺控制。這意味著應用不總是一直在線的。只有當有請求到達或者有事件發生時才會被部署和啟動。當應用空閒至一定時長時,應用會到達或者有事件發生時才會被部署和啟動。當應用空閒至一定時長時,應用會被自動停止和卸載。因此應用並不會持續在線,不會持續佔用計算資源。

  • 2.事件驅動

Serverless 架構的應用並不總是一直在線,而是按需加載執行。應用的加載和執行由事件驅動,比如HTTP請求到達、消息隊列接收到新的信息或存儲服務的文件被修改了等。通過將不同事件來源(Event Source)的事件(Event)與特定的函數進行關聯,實現對不同事件採取不同的反應動作,這樣可以非常容易地實現事件驅動(Event Driven)架構。

  • 3.狀態非本地持久化

雲計算平臺自動控制應用實例的加載和卸載,且應用和服務器完全解耦,應用不再與特定的服務器關聯。因此應用的狀態不能,也不會保存在其運行的服務器之上,不能做到傳統意義上的狀態本地持久化。

  • 4.非會話保持

應用不再與特定的服務器關聯。每次處理請求的應用實例可能是相同服務器上的應用實例,也可能是新生成的服務器上的應用實例。因此,用戶無法保證同一客戶端的兩次請求由同一個服務器上的同一個應用實例來處理。也就是說,無法做到傳統意義上的會話保持(Sticky Session)。因此,Serverless架構更適合無狀態的應用。

  • 5.自動彈性伸縮

Serverless 應用原生可以支持高可用,可以應對突發的高訪問量。應用實例數量根據實際的訪問量由雲計算平臺進行彈性的自動擴展或收縮,雲計算平臺動態地保證有足夠的計算資源和足夠數量的應用實例對請求進行處理。

  • 6.應用函數化

每一個調用完成一個業務動作,應用會被分解成多個細顆粒度的操作。由於狀態無法本地持久化,這些細顆粒度的操作是無狀態的,類似於傳統編程裡無狀態的函數。Serverless 架構下的應用會被函數化,但不能說 Serverless 就是 Function as a Service(FaaS)。Serverless 涵蓋了 FaaS 的一些特性,可以說 FaaS 是 Serverless 架構實現的一個重要手段。

Serverless的應用場景

通過將 Serverless 的理念與當前 Serverless 實現的技術特點相結合,Serverless 架構可以適用於各種業務場景。

  • 1.Web應用

Serverless 架構可以很好地支持各類靜態和動態Web應用。如 RESTful API 的各類請求動作(GET、POST、PUT及DELETE等)可以很好地映射成 FaaS 的一個個函數,功能和函數之間能建立良好的對應關係。通過 FaaS 的自動彈性擴展功能,Serverless Web 應用可以很快速地構建出能承載高訪問量的站點。

  • 2.移動互聯網

Serverless 應用通過 BaaS 對接後端不同的服務而滿足業務需求,提高應用開發的效率。前端通過FaaS提供的自動彈性擴展對接移動端的流量,開發者可以更輕鬆地應對突發的流量增長。在 FaaS 的架構下,應用以函數的形式存在。各個函數邏輯之間相對獨立,應用更新變得更容易,使新功能的開發、測試和上線的時間更短。

  • 3.物聯網(Internet of Things,IoT)

物聯網(Internet of Things,IoT)應用需要對接各種不同的數量龐大的設備。不同的設備需要持續採集並傳送數據至服務端。Serverless 架構可以幫助物聯網應用對接不同的數據輸入源。

  • 4.多媒體處理

視頻和圖片網站需要對用戶上傳的圖片和視頻信息進行加工和轉換。但是這種多媒體轉換的工作並不是無時無刻都在進行的,只有在一些特定事件發生時才需要被執行,比如用戶上傳或編輯圖片和視頻時。通過 Serverless 的事件驅動機制,用戶可以在特定事件發生時觸發處理邏輯,從而節省了空閒時段計算資源的開銷,最終降低了運維的成本。

  • 5.數據及事件流處理

Serverless 可以用於對一些持續不斷的事件流和數據流進行實時分析和處理,對事件和數據進行實時的過濾、轉換和分析,進而觸發下一步的處理。比如,對各類系統的日誌或社交媒體信息進行實時分析,針對符合特定特徵的關鍵信息進行記錄和告警。

  • 6.系統集成

Serverless 應用的函數式架構非常適合用於實現系統集成。用戶無須像過去一樣為了某些簡單的集成邏輯而開發和運維一個完整的應用,用戶可以更專注於所需的集成邏輯,只編寫和集成相關的代碼邏輯,而不是一個完整的應用。函數應用的分散式的架構,使得集成邏輯的新增和變更更加靈活。

Serverless的侷限

世界上沒有能解決所有問題的萬能解決方案和架構理念。Serverless 有它的特點和優勢,但是同時也有它的侷限。有的侷限是由其架構特點決定的,有的是目前技術的成熟度決定的,畢竟 Serverless 還是一個起步時間不長的新興技術領域,在許多方面還需要逐步完善。

  • 1.控制力

Serverless 的一個突出優點是用戶無須關注底層的計算資源,但是這個優點的反面是用戶對底層的計算資源沒有控制力。對於一些希望掌控底層計算資源的應用場景,Serverless 架構並不是最合適的選擇。

  • 2.可移植性

Serverless 應用的實現在很大程度上依賴於 Serverless 平臺及該平臺上的 FaaS 和 BaaS 服務。不同IT廠商的 Serverless 平臺和解決方案的具體實現並不相同。而且,目前 Serverless 領域尚沒有形成有關的行業標準,這意味著用戶將一個平臺上的 Serverless 應用移植到另一個平臺時所需要付出的成本會比較高。較低的可移植性將造成廠商鎖定(Vendor Lock-in)。這對希望發展 Serverless 技術,但是又不希望過度依賴特定供應商的企業而言是一個挑戰。

  • 3.安全性

在 Serverless 架構下,用戶不能直接控制應用實際所運行的主機。不同用戶的應用,或者同一用戶的不同應用在運行時可能共用底層的主機資源。對於一些安全性要求較高的應用,這將帶來潛在的安全風險。

  • 4.性能

當一個 Serverless 應用長時間空閒時將會被從主機上卸載。當請求再次到達時,平臺需要重新加載應用。應用的首次加載及重新加載的過程將產生一定的延時。對於一些對延時敏感的應用,需要通過預先加載或延長空閒超時時間等手段進行處理。

  • 5.執行時長

Serverless 的一個重要特點是應用按需加載執行,而不是長時間持續部署在主機上。目前,大部分 Serverless 平臺對 FaaS 函數的執行時長存在限制。因此 Serverless 應用更適合一些執行時長較短的作業。

  • 6.技術成熟度

雖然 Serverless 技術的發展很快,但是畢竟它還是一門起步時間不長的新興技術。因此,目前 Serverless 相關平臺、工具和框架還處在一個不斷變化和演進的階段,開發和調試的用戶體驗還需要進一步提升。Serverless 相關的文檔和資料相對比較少,深入瞭解 Serverless 架構的架構師、開發人員和運維人員也相對較少。

"

相關推薦

推薦中...