作者:寒斜
關于 Serverless 概念性的相關文章網上已經非常多,原本我也不想再做更多關于 Serverless 概念和價值相關的介紹,主要原因是我覺得當前的這個階段我們講 Serverless 應該到了結合現實生產去聊它的落地細節和實際的效果,而不應該還是用 PPT 給大家灌輸相關的理念,但基于本篇是筆者想做的《人人都是 Serverless 架構師》專題系列的開篇,所以也還是需要盡量通俗的先給大家做一個關于 Serverless 架構的開題介紹,
什么是 Serverless 架構
Serverless 架構是以 Serverless 服務體系為核心的應用架構設計理念,屬于分布式架構的一種,最明顯特征是它繼承了 Serverless 的核心優勢:及時彈性,能夠應對高并發請求并在降低計算服務成本的同時,具備微服務架構的高擴展,快速迭代等優勢,它是一種更加聚焦于業務開發的架構,
我們舉例介紹一下 Serverless 架構與傳統的架構的對比:
某初創的垂直領域電商公司,需要搭建一個完整的動態站點服務,從最開始的單體架構開始,需要在阿里云購買一臺 2 核 8G 的 ECS 和 200G 的硬碟,通常情況下 5M 帶寬一年的花費約為 4000+, 且需要用戶自己安裝 MySQL 資料庫,redis, nginx 等基礎軟體,還要有專業同學長期運維服務器,處理如防止磁盤變滿,服務器啟停及備份等作業,
當業務量上來之后,為了保持高可用和提高訪問性能,需要對基礎架構進行升級,要購買阿里云負載均衡、彈性伸縮服務和更多的 ECS 服務器,同時為了防止資料庫瓶頸,還需要升級使用云資料庫 rds ,此時的整體架構如下:

除了架構層面的準備,還需要進一步設定 ECS 的安全組、伸縮規則、SlB 轉發規則,后續的運維會比單體的更復雜,整體價格成本也更高,
但是使用 Serverless 架構的話,不管是在專案初創亦或后續業務量變大等時期,整體架構都可以保持不變,其架構如下圖所示:

業務增加只需橫向擴展路由配置并添加函式即可,成本上, 阿里云網關 ApiGateway 共享實體訪問量 1000w 次,共計 60 塊;阿里云物件存盤 OSS 按照存盤量和訪問流量收費,存盤量標準型是 0.12元/GB/月,訪問流量 0.5元/GB,阿里云函式計算有免費流量而且也是按量付費整體費用也非常低,資料庫根據需求可以采用 TableStrore 按量付費的模式,如果更習慣用 MySQL 則可以采購云資料庫,
Serverless 架構的優缺點
從前文中與傳統架構的對比可以看出 Serverless 架構的優勢:
-
對初創專案有更好的成本優勢,架構體系中大部分按量付費的產品模式對初創專案而言可以最大程度的節省成本,運營成本和開發成本都會降低,
-
擴展性更強,升級成本更低,不管是從最開始應對小規模的并發到更大流量的并發,整體的架構基本可以不變,只需要升級產品和實體規格即可(如網關升級到專享,函式記憶體規格增加),擴展業務無需重啟服務只需動態增加路由、函式和靜態配置便可以,并且完全不會影響現有業務,
-
迭代效率更高,因為基礎架構部分幾乎無需付出更多關心,開發人員只專注業務函式即可,同時能夠做到快速部署上線,整體效率大幅度提升,
但是不可以忽視的是 Serverless 架構同樣存在以下缺陷:
-
新的架構體系對公司的員工會有更高的要求,新技術體系需要重新學習,對公司組織會造成一定沖擊,
-
廠商平臺鎖定,不同的服務提供商有自己的一套開發模式和規范,不利于遷移,這種風隙訓在公司必須遷移云服務商的時候會暴露的更加明顯,
-
架構在應用層面表現的更加離散,持續集成和構建存在更多的風險,不同于部署到服務器上的應用,無服務架構的應用通常被拆的更加離散,業務路由,業務動態服務和靜態服務都分散到不同的產品上,應用層面的管理會是一個挑戰,
-
除錯和部署更難,Serverless 服務本身對開發者是黑盒的,通常遇到問題不像服務器一樣可以登錄排查,對問題的定位變得更加困難,
當然對于后面的個問題,我們目前都給出了解決的答案,我會在后續的文章進行更詳細的介紹,
構建 Serverless 架構
Serverless 應用的的核心還是在業務邏輯處理上,不過你仍然需要更多相關的知識體系才能很好的把它落地,下面介紹一下構建 Serverless 架構我們需要哪些相關的知識儲備,
基本的云計算架構體系
因為 Serverless 架構是云原生的架構體系,構建在云上必然需要掌握一些基本的云計算架構知識,比如網路,存盤,安全等,網路部分主要包括你需要知道你應用的端到端訪問路徑,比如如果是 http 的請求,你需要知道域名決議,以及網關,
存盤部分則更多的是合理的規劃成本需要,比如你需要了解靜態資源擺放的最佳實踐應該是物件存盤,資料的存盤則毫無疑問應該是在資料庫中,不過至于是 Serverless 化的資料庫還是傳統的 Mysql 資料庫,則要看你的使用習慣、成本預算和對新事物的接受程度,安全的話題則比較多了,比如安全的秘鑰管理,安全的服務呼叫,安全的流量管控等,
雖然 Serverless 本身會面臨廠商鎖定的挑戰,但至少這些基礎的云端服務能力是每家云廠商都會有的,對于阿里云 設計網路相關的產品有 DNS 決議,CDN 加速,ApiGateway 等,存盤的話則有資料庫存盤 比如 RDS, OTS 等產品,物件存盤如 OSS,這些會在后面實戰中為大家詳細的介紹,
開發者工具
開發者工具則是開發 Serverless 架構的應用繞不開必選項之一,鑒于 Serverlss 架構是一種離散的架構,對云端服務物盡其用的架構,所以 Serverless 應用在構建部署,除錯,以及持續集成上都有別于傳統的應用,Serverless 架構的應用可能會是一個多語言多服務型別的集合體,對于 Monorepo 的訴求會更強烈,此外在構建部署以及除錯運維上也存在諸多不便,Serverless 的開發者工具正是為了彌補 Serverless 應用架構的不足而生的,
幾乎每一家云商都有自己的 Serverless 開發者工具,比如阿里云的 ServerlessDevs,AWS 的 SAM ,以及跟騰訊云合作的 Serverless Framework 等,
除了基本的專案初始化及構建部署能力之外,這三款工具又都兼具 Iac 的能力,能夠滿足多樣化的 Serverless 應用持續集成訴求,
本系列會以 Serverlss Devs 為核心工具,為大家講解 Serverless 的架構實踐,

除了基礎云計算的相關概念以及開發者工具外,你還需要知道如何工程化的管理 Serverless 架構的應用,包括持續集成,多環境部署測驗,可觀測等,此外對安全有更高要求的專案還需要進一步處理安全的問題,還有性能調優等問題,
寫在最后
Serverless 的技術成熟度曲線已經從高熱度到目前的一個二次爬坡階段,實際上也是真正開始落地生產的階段,通過工具鏈的整合,已經可以做到把多個應用相關的專案整合成一個獨立的代碼倉庫,也就是有獨立的開發腳手架供更多的開發者使用去構建自己的 Serverless 應用,
隨著社會對創新落地的效率要求越來越高,我相信 Serverless 架構的天然優勢一定會比傳統的應用架構更能滿足這個訴求,所以希望能有更多的人參與進來一起踐行和為 Serverless 開發者生態貢獻,歡迎更多的開發者加入到我們自研的 Serverless 開發者工具 Serverless Devs 專案中來,
如果對 Serverless Devs 有任何疑問或希望更進一步了解,可以加入社區建設釘釘群:31193960
Serverless Devs社區官網:
http://www.serverless-devs.com/
專案倉庫:
https://github.com/Serverless-Devs/Serverless-Devs
Serverless Desktop 桌面客戶端:
https://serverlessdevs.resume.net.cn/zh-cn/desktop/index.html
Serverless 應用開發者套件:
http://serverlessdk.oss.devsapp.net/docs/tutorial-dk/intro/react
Serverless Devs CLI:
https://serverlessdevs.resume.net.cn/zhcn/cli/index.html
Serverless Hub 應用中心:
https://serverlesshub.resume.net.cn/#/hubs/special-view
作者介紹:
王慶(寒斜)|阿里云云原生中間件前端負責人
2016 年加入阿里中間件從事云產品企業控制臺研發作業,負責中間件 20 多款云產品前端研發作業,主要技術堆疊為大前端通用技術,目前專注在 Serverless 開發者工具鏈的建設,是云原生 Serverless Devs 研發負責人之一,
點擊此處,查看更多相關資訊!
發布云原生技術最新資訊、匯集云原生技術最全內容,定期舉辦云原生活動、直播,阿里產品及用戶最佳實踐發布,與你并肩探索云原生技術點滴,分享你需要的云原生內容,
關注【阿里巴巴云原生】公眾號,獲取更多云原生實時資訊!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423823.html
標籤:其他
