我的 Serverless 实战 — Serverless 架构理念 ( 后端服务器发展 | Serverless 与 ServerFul | Serverless 定义 | 架构优缺点 )
文章目錄
- 一、后端服務器架構發展
- 二、Serverless 與 ServerFul
- 三、Serverless 定義
- 四、Serverless 優缺點
【本文正在參與 “100%有獎 | 我的Serverless 實戰”征稿活動】活動鏈接
一、后端服務器架構發展
后端服務器架構發展 :
物理機 + 應用 : 初期是由開發者 自己購買服務器 , 托管在機房 , 部署運行環境 , 然后為其申請 IP 地址并綁定服務器 , 在服務器上運行相關服務器軟件 , 如 Tomcat , Oracle 等 ; 該方案 , 除了開發之外 , 還要有硬件維護相關工作 ;
虛擬機 + 云平臺 + 應用 : 將一臺物理上的主機 , 分割為多個虛擬主機進行使用 , 服務器等硬件設備由云平臺廠商提供 , 如阿里云 , 騰訊云等 ; 開發者可以直接購買虛擬機 , 如亞馬遜的 EC2 , 阿里云的 ECS , 騰訊云的 CVM ; 在云平臺中 , 可以將 數據庫運行在云數據庫中 , 相關的 文件資源可以存儲在對象存儲中 , 這樣使用維護起來 , 使用更方便 , 風險更低 , 性能可以彈性伸縮 ; 服務器只需要處理業務邏輯 , 存儲于功能分離開來 , 更加安全 ; 開發者不需要維護硬件 , 但是相關軟件維護工作 , 還是需要花費很多精力 ;
容器 + 應用 : 使用虛擬機時 , 服務器每次擴容 , 都需要初始化先關的運行環境 , Docker 技術出現后 , 在虛擬化基礎上 , 將運行環境和部署的業務綁定在一起 , 這樣每次初始化服務器時 , 直接使用 Docker 容器直接部署即可 ;
容器編排 : 如果需要短時間內對服務器進行擴容 , 增加服務器吞吐量 , 那么就需要加入很多 Docker 容器 , 管理這些容器對應的技術就是容器的編排技術 , 進行容器編排工作 ;
Serverless 架構 , 就是為了解決上述運行環境問題而提出的 , 開發者可以只關心業務實現 , 不用再服務器 , 運維等方面花費太多的時間和成本 ,
二、Serverless 與 ServerFul
傳統的后端開發方式可以理解成為 ServerFul , 服務器的一切細節 , 軟件 , 硬件 , 數據庫 , 網絡 , 空間 等都需要開發者來關注 , 如果任意一個方面出現故障 , 都有可能造成整個系統宕機 ;
ServerFul 架構中 , 開發者需要關注 服務器彈性伸縮 , 負載均衡 , 異地容災備份 , 性能監控 , 網絡安全 , 負載均衡 , 數據 / 文件存儲 , 等各種細節 , 這些需要投入大量的成本 ;
Serverless 是后端架構的一種概念 , 思維 ;
并不代表沒有后臺服務器 , 只是說將相關的服務器工作 , 盡最大可能托管給云平臺 , 開發者不用關心服務器運維相關的工作 ;
借用該架構 , 開發者只需要開發相關應用業務邏輯 ; 后端的服務器 , 資源等的管理維護工作 , 交給云平臺即可 ; 云平臺負責調度管理上述服務器運維工作 ;
云平臺基于上述理念 , 提供 Serverless 服務 , 由于沒有統一的標準 , 每家云平臺提供的云服務都略有差異 ;
三、Serverless 定義
Serverless 的定義 : 采用 Faas 和 Baas 服務解決問題的設計 ;
-
Faas : Function as a Service 函數即服務 , 云平臺提供平臺 , 開發者只負責開發運行管理業務邏輯 , 無需相關維護操作 ;
-
Bass : Backend as a Service 后端即服務 , 云平臺提供整合云后端服務 , 如文件/數據存儲 , 推送 , 登錄驗證等 ;
開發者只需要開發業務邏輯代碼即可 , 相關的登錄 , 注冊 , 存儲 , 使用 Bass 提供的服務即可 , 同時開發者將寫好的代碼提交到 Serverless 中 , Serverless 有一個專門運行邏輯代碼的空間 , 這個空間就是 Faas ;
Faas 的本質就是函數運行平臺 , 該平臺支持各種主流語言 , 如 Java , Python , JavaScript 等 ; 開發者對 Fass 平臺底層的服務器 , 硬件配置 , 系統環境 等無感知 ;
四、Serverless 優缺點
Serverless 特點 :
-
沒有運維 : 開發者 不需要關心服務器的運維工作 ; 運維工作由云平臺提供 ;
-
事件驅動 : Serverless 上部署的函數 , 不是隨時都在運行 , 而是通過條件觸發 , 如用戶的 HTTP 請求 , GET / POST 請求等 ; 這些觸發事件 , 稱為觸發器 , 集成在 Faas 平臺 , 開發者可以直接調用 ; 傳統的服務器 , 需要一直運行一個 Tomcat 服務器 , 如果該服務器宕機 , 用戶則無法訪問網站 ;
-
按量付費 : 按照 Faas 函數執行時所消耗的資源進行付費 , 如 CPU 性能占用及時長 , 內存使用量 , 顯卡計算量 , 磁盤空間 等 ; 上述資源使用多少 , 就支付相應費用 , 如果不用 , 就不需要支付費用 ;
-
彈性伸縮 : Faas 的函數實例可以自動進行創建 / 銷毀 , 其可以根據當前的需求并發量 , 自動創建 / 銷毀函數實例 ; 每個函數的資源調用量不設上限 , 如果需要可以實時申請很多資源 ;
-
計算存儲分離 : Serverless 的架構 計算 與 存儲 分離 , Faas 負責計算 , Baas 負責存儲 ;
Serverless 缺點 :
-
云平臺依賴性強 : 對 云平臺 依賴性很強 , 不同的云平臺之間的標準不統一 , 一旦開發部署完畢 , 就 無法更換云平臺 ,
-
調試困難 : 本地開發環境無法模擬云平臺運行環境 , 相關的開發環境也不完善 ;
【本文正在參與 “100%有獎 | 我的Serverless 實戰”征稿活動】活動鏈接
總結
以上是生活随笔為你收集整理的我的 Serverless 实战 — Serverless 架构理念 ( 后端服务器发展 | Serverless 与 ServerFul | Serverless 定义 | 架构优缺点 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 安装包优化】开启 Pr
- 下一篇: 我的 Serverless 实战 — 云