成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Serverless 架構簡述

云計算
本文介紹了 Serverless 架構概念,優缺點,FaaS 相關概念及特點,希望對你有所幫助。

作者 | 宗婷婷

隨著云服務蓬勃發展,Serverless 架構近幾年來被越來越多的企業使用,那么什么是 Serverless 架構呢?它有哪些優缺點?這篇文章帶你詳細了解 Serverless 架構。

什么是 Serverless 架構?

“_Serverless architectures are application designs that incorporate third-party “Backend as a Service” (BaaS) services, and/or that include custom code run in managed, ephemeral containers on a “Functions as a Service” (FaaS) platform._” 

這段來自Martin Fowler文章的定義是我覺得較清楚地講清了什么是 Serverless 架構。那它有哪些特點呢?

  • 它是一種應用程序的設計。
  • 它包含第三方 BaaS服務。
  • 可包含運行及托管在 FaaS 平臺上的自定義程序。

看了上面的特點,可能你還是有點懵,到底什么樣的應用程序是 Serverless 應用程序,下面舉個例子說明。

傳統應用程序

圖片圖片

傳統三層架構的應用程序:客戶端-服務器端-數據庫。服務器端控制著大部分業務邏輯,流程及安全。在這種情況下,客戶端功能看起來很單薄,顯得也不是很智能。

Serverless 應用程序

圖片

  • 使用第三方 BaaS 服務來做鑒權,如 Auth0。
  • 使用第三方 BaaS 服務來存儲數據,如 AWS DynamoDB, 客戶端可以通過不同的安全策略來訪問數據庫。
  • 客戶端擁有更多的邏輯,如導航功能;也可以控制部分的流程。
  • 去除了需要始終運行的服務器,由 API 網關來響應 HTTP 請求,并將請求路由到不同的 FaaS 函數。對于搜索功能,如果將其放在客戶端,則客戶端需要從數據庫中取出非常多的數據,然后再根據條件篩選出需要的數據,如果數據量大的話,則非常低效,影響用戶體驗,因此將搜索功能作為 FaaS 函數,放在服務器端。
  • 將購課功能作為 FaaS 放在服務端,則是出于安全考慮,由于購課系統一般和支付相關,因此對安全要求比較高。

從上面例子可以看出,Serverless 應用程序不再需要“服務器”,Serverless 應用程序中每個組件都可以看成一個獨立的子服務。,類似微服務。這樣的架構更加靈活(可以很方便地去除或增加組件來添加或去除某些功能),也更加容易維護(修改某一個 FaaS 函數對其他函數影響會很小)。

但是,另一方面,這種靈活性同時也增加了系統的復雜性和成本,我們有可能需要維護很多個 BaaS 和 FaaS 服務,并且它們之間的溝通成本也會隨服務個數增加逐漸遞增。

BaaS - Backend as a Service 后端即服務

從上面例子可以看到,Serverless 架構包含很多個 BaaS 服務,那么BaaS 服務是什么呢?

BaaS(后端即服務)是一種云服務模型。在構建應用程序時,有時候會將一部分后端功能外包給云平臺供應商,這部分外包的功能就是 BaaS。如通用的身份驗證,數據庫管理,云存儲,消息推送和電子郵件驗證等。將這些比較通用的功能外包給云平臺供應商可以大大降低開發及維護成本。因此在 Serverless 架構中會集成多個 BaaS 服務,從而提升開發進度。

FaaS - Function as a Service 函數即服務

從前面的例子可以看出,Serverless 架構將傳統服務器端的功能分散到不同組件中,一部分打包給 BaaS 服務,一部分放在客戶端,還有一部分交給 FaaS 函數。

對于 BaaS 服務來說,因為由第三方提供,所以我們更多考慮的是怎么集成。對客戶端來說,需要有 UI developer 來實現這部分功能。對于 FaaS,它以函數的形式提供服務,承載自定義代碼,且可以獨立運行在 FaaS 平臺上。那它有什么特點呢?

  • 無需管理服務器。FaaS 運行在第三方云供應商提供的平臺上,程序啟動,運行等管理工作都可交由云供應商完成和監管。
  • 自動伸縮。FaaS 是完全自動,彈性的。意味著可以根據需要自動增加或減少 FaaS 的個數。
  • 支持HTTP請求。基本上主流云平臺商都提供由 API Gateway 來觸發 FaaS 函數。
  • 無語言限制。
  • 易部署。
  • 事件驅動。FaaS 函數由事件觸發,事件是由云平臺定義的;類似S3文件/對象更新,定時的 Task,Kinesis消息都可以作為事件來觸發 FaaS 函數。

在使用 FaaS 時,我們還需要注意以下幾點:

狀態

FaaS函數是無狀態函數,類似純函數。這就意味著,你不應該將一個函數的狀態用于同一函數的另一次調用。如果需要持久化 FaaS 函數狀態,可借助外部持久化服務來實現。

啟動延時

以 AWS lambda 方法為例,當 Lambda 接收到事件時,它會經歷三個階段,初始化,調用,銷毀。在初始化階段,Lambda 會嘗試解凍之前的執行環境,若沒有可解凍的環境,Lambda 會進行資源創建,下載函數代碼,初始化擴展和 Runtime,然后開始運行代碼。在調用階段,Lambda 接收事件后開始執行函數。函數運行完成后,Lambda 會等待下個事件的調用。在銷毀階段,如果 Lambda 函數在一段時間內沒有接收任何調用,則會觸發此階段。在銷毀階段,Runtime 關閉,然后向每個擴展發送一個“銷毀事件”,最后刪除環境。

觸發 Lambda 時,若當前沒有處于激活階段的 Lambda 可供調用,則 Lambda 會下載函數的代碼并創建一個 Lambda 的執行環境。從事件觸發到新的 Lambda 環境創建完成這個周期通常稱為 “冷啟動時間”。

“冷啟動”延遲無疑是無可避免的,也是影響用戶體驗的重要因素,因此應該設法減少“冷啟動”時間。冷啟動延遲取決于許多因素:語言、庫、代碼量、功能環境、VPC 資源。其中一些可以由開發人員減少,如選擇輕量化的語言,優化代碼量及調用輕量化的依賴包或sdk。

執行時間

FaaS 函數通常受限于每次調用允許運行的時間。目前,AWS Lambda 函數響應事件的“超時”最多為十五分鐘,然后就會終止。Microsoft Azure 和 Google Cloud Functions 有類似的限制。

API 網關

FaaS 函數作為服務端應用程序,一般由事件觸發,但是對于大多數應用程序而言,一般是以 HTTP 請求調用后端 API。因此會在 FaaS 函數之前搭載 API gateway。API gateway 會根據提前配置好的路由表,將HTTP請求路由到不同的 FaaS 函數上。

Serverless 架構的優點

(1) 降低運營成本

使用 Serverless 架構來構建后端應用,你不需要花錢請人來管理服務器、數據庫和某些應用,與其他人共享基礎設施(例如硬件、網絡)也會降低成本。最后由于減少了人工成本,所以你在 Serverless 系統上花費的時間將會更少。

(2) 降低擴展成本

FaaS 函數的擴展和縮減完全是自動的,由供應商管理,你只需要按訪問流量多少進行支付。當流量增加時,云平臺會自動增加FaaS 函數個數來處理激增的請求,這時候費用也會增加;當沒有請求訪問時,平臺會減少 FaaS 函數個數,因此費用也會減少。

(3) 降低開發成本

降低開發成本主要在于使用供應商提供的通用型 BaaS 服務,如上面提到的鑒權服務和數據庫服務,這些服務只需要支付使用費用,不需要再次開發和維護。

() 更輕松地運營管理

函數的擴展是自動的,因此不需要手動管理并發數量問題。其次 FaaS 打包和部署也非常簡單和快速,這也有效地降低了運維時間和人力成本。

Serverless 架構低成本構建,比較適合初創公司,其次Serverless 架構靈活性(增加和去除某些業務功能很方便)適合業務變化特別頻繁的公司。最后快速的開發,部署及簡單的運營管理特點,也讓它擁有更短的上市時間,幫助企業更快搶占市場。

Serverless 架構缺點

固有缺點

(1) 供應商控制和鎖定

供應商控制可能會導致一些問題,例如系統停機、意外限制、成本變化、功能喪失、強制 API 升級。當切換供應商時,可能需要更改代碼、設計,甚至架構。你可以輕松遷移系統的一部分,例如 AWS lambda 函數,但對于應用集成的 Kinesis 或其他組件,每個云平臺可能會有很大不同,這時候遷移可能需要很多工作量。

(2) 多租戶問題

由于幾個不同的租戶在同一臺機器上運行,雖然讓他們覺得自己是唯一使用平臺的人。但實際上,他們可能共享相同的基礎設施,有可能會導致安全性及性能問題。

(3) 失去服務的優化權

如果應用程序使用了 BaaS 或云平臺其他的組件(如:Knisis)構建服務,那么很難添加定制化的功能在這些服務或組件里。也就很難針對客戶需求優化或者添加定制功能。

實現上的缺點

(1) 執行時間

Lambda 函數有執行時間限制,如果運行時間超過這個時間,它將被中止。如果某些業務比較復雜,確實需要超過十五分鐘的執行時間,那么它將無法使用 Serverless。

(2) “冷啟動”延時

對于性能要求比較高的業務,“冷啟動”延時是必要考慮的因素,當然也可以通過上述某些手段減少延時時間。

(3) 測試和Debug

單元測試并不是什么問題,但是到了集成測試就是個問題了。FaaS 比其他服務器代碼小,集成測試更重要。但是在沒有任何云環境的情況下,很難在本地運行并調試集成測試。對于本地Debug,可以采用寫單元測試來Debug。因為可以在單元測試中mock所有集成的云平臺模塊,如 Kinesis, IoT client 等。

(4) 監控

對于 Serverless 而言,只能看到供應商提供的數據及指標,雖然有些供應商會開放一些接口,讓使用者定制某些指標,但還是會受限于供應商。

責任編輯:趙寧寧 來源: Thoughtworks洞見
相關推薦

2017-03-15 19:03:05

云計算

2017-05-29 08:18:11

Serverless架構軟件系統

2023-12-09 14:33:05

2017-08-15 13:05:58

Serverless架構開發運維

2012-06-07 10:31:12

SOA架構設計原則

2022-09-30 08:43:09

Serverless無服務器云計算

2018-03-26 04:53:46

Serverless微服務架構

2012-06-07 10:35:40

架構設計業務邏輯Java

2012-06-07 10:53:08

架構設計數據訪問層設計原則

2023-08-27 15:20:58

Serverless架構開發

2018-05-25 14:41:56

Serverless無服務器構造

2017-12-07 12:47:48

Serverless架構基因

2020-04-03 13:12:09

函數架構 Serverless

2009-06-22 16:34:30

框架架構設計模式

2021-09-13 18:09:59

騰訊文檔業務云計算

2020-03-26 21:32:53

BaasFaasServerless

2019-03-18 15:36:32

無服務器FaasServerless

2021-10-13 09:45:54

Serverless 應用調試

2021-09-08 10:12:39

Serverless 云計算

2021-09-18 10:23:43

Serverless
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩欧美在线一区 | 国产美女在线观看 | 亚洲国产精品久久久久婷婷老年 | 日韩精品极品视频在线观看免费 | 在线观看成年人视频 | 国产伦精品一区二区三区四区视频 | www.47久久青青 | 美女毛片免费看 | 国产精品国产三级国产aⅴ无密码 | 欧美视频免费在线观看 | 91文字幕巨乱亚洲香蕉 | 欧美日韩福利 | 国产一区二区三区四区在线观看 | av毛片| 国产精品a久久久久 | 成人欧美一区二区三区在线播放 | 一区二区在线 | 午夜国产在线 | 亚洲国产精品精华素 | 免费久久99精品国产婷婷六月 | 激情 婷婷 | 玖玖玖在线 | 国产精品久久久久久久免费大片 | 久久久高清| 免费中文字幕 | 天堂视频中文在线 | 日本污视频 | 国产在线视频一区二区 | 国产精品国产亚洲精品看不卡15 | 欧美成人高清视频 | 男人影音 | 五月激情久久 | 一区二区三区视频在线观看 | 综合久| 国产一级在线 | 免费观看毛片 | 国外成人在线视频网站 | 精品亚洲一区二区三区四区五区 | 欧美激情国产日韩精品一区18 | 国产高清免费视频 | 欧美另类视频在线 |