用serverless給SaaS賦能
- 前言
- 為什么用Serverless
- 之前的部署方式
- Serverless選型
- 為什么?
- 總結
- 使用場景
- 現在的部署方式
- 總結
- 未來的寫作計劃
前言
本人是一家創業公司的前端架構師,我們主要的產品是做一個在線的股權激勵與管理的SaaS平臺 股加加 ,
目前產品主要包括,線上管理平臺和諸多小程式,還有一些線下的股權服務,歡迎各位前來體驗,
為什么用Serverless
在我們整個的技術體系中,Serverless無疑是非常重要的組成部分,
對于我們這種小型的創業團隊,最重要的就是在業務上,小步快跑,多試錯,從而探索出一條到多條可行的商業模式,
Serverless 技術極大的縮短了我們的迭代時間,運維的成本,還有一些后端的成本,
之前的部署方式
原先我們部署方式是非常依賴云服務器的
我們在多個云服務器上,部署了我們所有的前端頁面和 docker 集群
這樣的部署方式,對于我們這種小型的開發團隊來說有很多的弊端:
- 運維成本高 , 每次創建新的專案,都要改很多nginx或者dockerfile的配置,打 hotfix 也很不方便 ,每次都要重新部署,灰度測驗更加是無從談起了,趕業務上的功能都來不及,更何況是寫一些功能來方便自己呢?
- 服務器成本也高,錢對于大公司來說不是問題,然而對于初創團隊來說,就是最重要核心的問題了,本來開發人員工資成本就高,服務器還貴, 就以我們用的騰訊云為例:
- 云服務器(4核8G 1Mbps) 一年 2923 ,線上多環境,加起來1年起碼 1萬多把
- 云資料庫(MongoDB) 一年,(一般點的配置) 1萬+
- redis: 一年 3k
- Cos(物件存盤)和Cdn(內容分發): 另算
一年下來保守估計,費用在 25k 以上,這當然是不包括使用第三方工具平臺介面的費用的, - 沒有彈性伸縮策略 ,這還是一個資源的利用率問題,在面對有些api,或者SSR頁面并發量高的時候,往往都需要我們手動去擴容,并發量小時,新創建的容器往往就被閑置了,
Serverless選型
我 serverless 選型這塊選擇了 serverless framework

為什么?
我們創業團隊,整個技術堆疊都是 nodejs,vue,nuxt,uni-app 構建的 ,即 javascript 打天下,
這樣的一個 npm 上的 cli 包,顯然比 特定云廠商的 cli 或者 vscode 插件,更有吸引力,
另外更重要的一點是,它提供了大量現成的 serverless-components
Serverless Components Github Link
這給我們云服務器上的代碼做遷移,減少了大量的成本,
還有就是,它作為一個第三方的框架,它能做到同一段代碼,部署在不同的 Serverless 服務提供廠商那,
總結
serverless framework 優點如下:
- 代碼遷移成本較低
- 跨云廠商
- 極其靈活快速的部署方式
- 方便的線上除錯和監控能力
使用場景
Serverless當然也不是萬能的,不是所有的服務都適合改造成 Serverless
比如 im(即時通訊服務)就不怎么適合 Serverless 化
還有就是一些有狀態的服務,在遷移的時候也需要把狀態外置到其他地方,比如 Redis 等等,
像大部分的 Job Service 和 無狀態的Api啥的,還是比較適合,當然整個api認證體系,能改jwt,就改,
Session也要外置,
還有就是,Serverless 訪問資料庫這些云上資源的時候,也要讓他們處在同一個 VPC(私有網路)內部
它的場景特別適合像 小程式 那種,也難怪微信,支付寶啥的,也都在搞 云開發 ,然而他們這種和對應的平臺,有些耦合了,面對那種跨多個平臺 小程式 的需求時,有些 捉襟見肘
現在的部署方式
現在我把的服務進行了拆分,把一些經過判斷可以 Serverless 化的,邏輯抽出來,進行單獨的批量部署,
目前所有的 跨平臺的小程式服務 已經全部轉移到 騰訊云的 SCF 上,線上系統的 Job 和上傳 Cos 桶之后的檔案處理,也交給 SCF 做定時觸發和上傳觸發,
我們的 SSR 專案和部分服務,由于遷移成本較高,沒有進行遷移,
借助這項技術,我可以在不同的專案里,敲一行帶有環境變數的指令,就能快速的把 layer 和 service 部署到云上,再借助 SCF 發布新版本的功能 和流量灰度的功能,給 上傳上來的代碼 預置并發實體 后,進行流量上的版本切換,從而達到平緩部署,灰度測驗的功能,
在此方面大大的減少了我們團隊的運維成本和服務器成本,
總結
目前使用這項技術1年多了
果然大大減少了我們的運維成本和服務器成本
另外有一些意外之喜:
- 它在拓寬了我們前端的視野,促使我們成為一名大前端
- 它加重了前端團隊在整個技術體系中的 話語權
未來的寫作計劃
我接下來打算分享一些,Serverless 方面的最佳實踐,
畢竟上面談了這么多,實際上都很空,
留一下我的 Serverless 博客站的地址,
有興趣可以在那里找到我的聯系方式,歡迎一起交流技術,
icebreaker
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/256354.html
標籤:其他
