'Serverless無服務器架構是微服務架構的表現形式'

"
"
Serverless無服務器架構是微服務架構的表現形式


在目前主流雲計算IaaS和PaaS 平臺中,開發人員進行業務開發時,仍然需要掌握相關的服務端開發工作,比如緩存、消息服務、Web應用服務器、數據庫,以及對服務器進行性能優化,還需要考慮存儲和計算資源,考慮負載均衡和橫向擴展能力,考慮服務器容災穩定性等非專業邏輯的開發。這些服務器的運維和開發知識、經驗極大地限制了開發者進行業務開發的效率。

在這種情況下,不用去了解後端服務器而直接使用服務的架構,我們稱之為Serverless架構。

1. Serverless架構平臺概述

2016年6月,MikeRobers在MartinFowler的博客網站上發佈了一篇題為“無服務器架構”的文章,引起了業界的諸多關注。在該文章中,他指出:“無服務器先用來描述那些顯著或完全依賴於第三方應用或服務(“在雲端”)的應用程序。這些應用程序依賴於第三方來管理服務器端邏輯和狀態,它們都是典型“富客戶端”的應用程序,並採用雲平臺提供的生態系統,包括可訪問的數據庫(如Parse、Firebase)、認證服務(Auth0、AWSCognito)等。……無服務器還表示那些有服務器端邏輯的應用仍然需要由開發者來編寫。”

Serverless架構與傳統架構不同。Serverless 架構從字面上理解是沒有服務器的架構,實際上是由開發者實現的服務端邏輯運行在無狀態的計算容器中,Serverless架構是由事件觸發,短暫的,完全被第三方管理。其實這是一種構建和管理基於微服務架構的基礎設施架構,允許在服務部署級別而不是服務器部署級別來管理應用部署。更加強調底層VM和OS的透明化,Serverless架構還有一個類同的名詞叫FaaS,全稱Function Platform as a Service(功能即服務架構)。

Serverless架構實際上是一種特殊的微服務基礎框架平臺,不但提供了微服務基礎架構平臺,甚至還提供了微服務基礎設施,我們把這一類歸為Serverless型基礎框架平臺,如AWS Lambda、Azure Functions(微軟)等。

下面用一個案例簡單說明一下Serverless架構的內容。例如圖1是一個Serverless架構的案例說明。作為Client上的應用程序可以通過三種方式來獲取數據。第一種方式是通過AuthenticationService的方式來獲取數據。第二種方式是通過調用API網關來獲取購買和查詢功能的服務。第三種方式是直接訪問數據庫。對於Client而言,後端就是Serverlessarchitecture(沒有服務器的架構)。

無服務器計算改變了應用程序開發,將重點放在應用程序邏輯而非基礎架構上。零服務器管理,自動擴展以滿足任何流量需求,並管理集成安全性,開發人員可以更快地行動,保持敏捷並專注於最重要的事情——構建優秀的應用程序。


"
Serverless無服務器架構是微服務架構的表現形式


在目前主流雲計算IaaS和PaaS 平臺中,開發人員進行業務開發時,仍然需要掌握相關的服務端開發工作,比如緩存、消息服務、Web應用服務器、數據庫,以及對服務器進行性能優化,還需要考慮存儲和計算資源,考慮負載均衡和橫向擴展能力,考慮服務器容災穩定性等非專業邏輯的開發。這些服務器的運維和開發知識、經驗極大地限制了開發者進行業務開發的效率。

在這種情況下,不用去了解後端服務器而直接使用服務的架構,我們稱之為Serverless架構。

1. Serverless架構平臺概述

2016年6月,MikeRobers在MartinFowler的博客網站上發佈了一篇題為“無服務器架構”的文章,引起了業界的諸多關注。在該文章中,他指出:“無服務器先用來描述那些顯著或完全依賴於第三方應用或服務(“在雲端”)的應用程序。這些應用程序依賴於第三方來管理服務器端邏輯和狀態,它們都是典型“富客戶端”的應用程序,並採用雲平臺提供的生態系統,包括可訪問的數據庫(如Parse、Firebase)、認證服務(Auth0、AWSCognito)等。……無服務器還表示那些有服務器端邏輯的應用仍然需要由開發者來編寫。”

Serverless架構與傳統架構不同。Serverless 架構從字面上理解是沒有服務器的架構,實際上是由開發者實現的服務端邏輯運行在無狀態的計算容器中,Serverless架構是由事件觸發,短暫的,完全被第三方管理。其實這是一種構建和管理基於微服務架構的基礎設施架構,允許在服務部署級別而不是服務器部署級別來管理應用部署。更加強調底層VM和OS的透明化,Serverless架構還有一個類同的名詞叫FaaS,全稱Function Platform as a Service(功能即服務架構)。

Serverless架構實際上是一種特殊的微服務基礎框架平臺,不但提供了微服務基礎架構平臺,甚至還提供了微服務基礎設施,我們把這一類歸為Serverless型基礎框架平臺,如AWS Lambda、Azure Functions(微軟)等。

下面用一個案例簡單說明一下Serverless架構的內容。例如圖1是一個Serverless架構的案例說明。作為Client上的應用程序可以通過三種方式來獲取數據。第一種方式是通過AuthenticationService的方式來獲取數據。第二種方式是通過調用API網關來獲取購買和查詢功能的服務。第三種方式是直接訪問數據庫。對於Client而言,後端就是Serverlessarchitecture(沒有服務器的架構)。

無服務器計算改變了應用程序開發,將重點放在應用程序邏輯而非基礎架構上。零服務器管理,自動擴展以滿足任何流量需求,並管理集成安全性,開發人員可以更快地行動,保持敏捷並專注於最重要的事情——構建優秀的應用程序。


Serverless無服務器架構是微服務架構的表現形式

圖1 Serverless架構的案例說明

Serverless架構具有如下幾個特點:(1)按需使用,按需計費。(2)易擴展和高可用;(3)不需要預先分配資源。(4)實現了細粒度的計算資源分配。(5)高度擴容和彈性。

2. 基於Serverless平臺的開發過程

Serverless平臺的開發過程。圖2是函數計算的一個開發者操作流程:


"
Serverless無服務器架構是微服務架構的表現形式


在目前主流雲計算IaaS和PaaS 平臺中,開發人員進行業務開發時,仍然需要掌握相關的服務端開發工作,比如緩存、消息服務、Web應用服務器、數據庫,以及對服務器進行性能優化,還需要考慮存儲和計算資源,考慮負載均衡和橫向擴展能力,考慮服務器容災穩定性等非專業邏輯的開發。這些服務器的運維和開發知識、經驗極大地限制了開發者進行業務開發的效率。

在這種情況下,不用去了解後端服務器而直接使用服務的架構,我們稱之為Serverless架構。

1. Serverless架構平臺概述

2016年6月,MikeRobers在MartinFowler的博客網站上發佈了一篇題為“無服務器架構”的文章,引起了業界的諸多關注。在該文章中,他指出:“無服務器先用來描述那些顯著或完全依賴於第三方應用或服務(“在雲端”)的應用程序。這些應用程序依賴於第三方來管理服務器端邏輯和狀態,它們都是典型“富客戶端”的應用程序,並採用雲平臺提供的生態系統,包括可訪問的數據庫(如Parse、Firebase)、認證服務(Auth0、AWSCognito)等。……無服務器還表示那些有服務器端邏輯的應用仍然需要由開發者來編寫。”

Serverless架構與傳統架構不同。Serverless 架構從字面上理解是沒有服務器的架構,實際上是由開發者實現的服務端邏輯運行在無狀態的計算容器中,Serverless架構是由事件觸發,短暫的,完全被第三方管理。其實這是一種構建和管理基於微服務架構的基礎設施架構,允許在服務部署級別而不是服務器部署級別來管理應用部署。更加強調底層VM和OS的透明化,Serverless架構還有一個類同的名詞叫FaaS,全稱Function Platform as a Service(功能即服務架構)。

Serverless架構實際上是一種特殊的微服務基礎框架平臺,不但提供了微服務基礎架構平臺,甚至還提供了微服務基礎設施,我們把這一類歸為Serverless型基礎框架平臺,如AWS Lambda、Azure Functions(微軟)等。

下面用一個案例簡單說明一下Serverless架構的內容。例如圖1是一個Serverless架構的案例說明。作為Client上的應用程序可以通過三種方式來獲取數據。第一種方式是通過AuthenticationService的方式來獲取數據。第二種方式是通過調用API網關來獲取購買和查詢功能的服務。第三種方式是直接訪問數據庫。對於Client而言,後端就是Serverlessarchitecture(沒有服務器的架構)。

無服務器計算改變了應用程序開發,將重點放在應用程序邏輯而非基礎架構上。零服務器管理,自動擴展以滿足任何流量需求,並管理集成安全性,開發人員可以更快地行動,保持敏捷並專注於最重要的事情——構建優秀的應用程序。


Serverless無服務器架構是微服務架構的表現形式

圖1 Serverless架構的案例說明

Serverless架構具有如下幾個特點:(1)按需使用,按需計費。(2)易擴展和高可用;(3)不需要預先分配資源。(4)實現了細粒度的計算資源分配。(5)高度擴容和彈性。

2. 基於Serverless平臺的開發過程

Serverless平臺的開發過程。圖2是函數計算的一個開發者操作流程:


Serverless無服務器架構是微服務架構的表現形式


圖2 Serverless平臺的開發過程圖

Serverless平臺的開發過程如下:

(1)開發者編寫代碼,支持的語言包括Java、JavaScript、Python、Go、PHP等。

(2)把代碼上傳到函數計算上,上傳的方式有通過API或者SDK上傳,也可以通過控制檯UI界面上傳,還可以通過命令行工具上傳。

(3)通過API&SDK來觸發函數計算執行,同樣也可以通過雲產品的事件源來觸發函數計算執行。

(4)函數計算在執行過程中,會根據用戶請請求量動態擴容函數計算來保證請求峰值的執行,這個過程對用戶是透明無感知的。

(5)函數執行結束後,可以通過賬單來查看執行費用,根據函數的實際執行時間按量計費。

3. Serverless平臺優勢和侷限性

對於開發者和使用者而言,Serverless Architecture優勢如下:

  • 零服務器,無服設計最明顯的好處就是不需要維護服務器,無論是物理的還是虛擬的。
  • 易擴展和高可用,可以依靠雲服務供應商來擴展自己的應用。因為應用能夠通過切換佔用資源(如吞吐量、內存) 的單位數來調整容量,故應用程序可自動擴展。同時有云服務供應商7×24小時守護著基礎設施,無服務器應用程序默認情況下都是內置可用性和容錯能力。
  • 微服務友好,可以在系統中引入特定的服務以實現自定義身份認證、驗證或者異步數據處理等多種服務。
  • 完全使底層透明化,應用程序只與語言運行環境交互,無需關注硬件及操作系統。
  • 採用事件驅動,服務代碼開發、部署在API請求下支持
  • 運營穩定,後端伸縮計算服務提供支撐。隔離性,健壯性相對較好。無須關心DevOps。
  • 無服務器的方式更便於構建和排錯。正如CAP理論所述 ,應用服務在同一個網絡的節點間傳遞消息,限制應用服務的是實現方式。

有利就有一弊,Serverless Architecture缺點如下:

  • 供應商鎖定,一旦選中了雲服務供應商,後期很難更改。
  • 多樣化的日誌。由於沒有中心化設計,日誌的記錄必須由每個支撐應用的不同服務來實現。這些日誌格式跟大部分應用服務器日誌都不同。
  • 安全模型。採用多套安全模型,應用驗證邏輯和安全驗證邏輯必須分開實現。
"

相關推薦

推薦中...