【特別聲明:本文基於Tools and Services I Use to Run My SaaS進行修改。】
軟件SaaS化由於需要考量架構的各個方面,所以需要的技術棧非常全面。
以一個客戶管理SaaS應用爲例,可能涉及的技術棧包括:
開發
開發就是把系統做出來的意思。開發涉及編碼、項目管理、測試等多個環境。其中爲了創作一個產品,不僅僅是自己編寫代碼,還需要引入大量的第三方庫或開發框架,幫助自己快速構建應用。
在軟件開發的領域,有人將它與製造業進行了一個類比,發現有異曲同工之妙。因此,軟件生產,軟件供應鏈等類比詞彙開始流行。
-
後端:Java, Maven等 。
-
前端:JS, Vue框架,Bootstrap界面,SCSS,Webpack,Express,Babel,Hugo等 。
-
API:node-canvas,Java web等 。
-
庫:ffmpeg,popper等 。
-
IM:Crisp 。
-
開發工具:VSCode,prettier(代碼排版美化)。
-
項目管理:Trello,Kanban,禪道 。
-
文檔協作:語雀,Notion,Typora 。
- 調試:Postman 。
雲設施
可以選用一站式雲設施提供商,如Azure,AWS,阿里雲等,也可以選用各個領域的專業服務商。
-
雲服務器:Azure,AWS,阿里雲,DigitalOcean等 。
-
域名系統:Namecheap 。
-
靜態託管:Netlify 。
-
郵件推送:Postmark,SendGrid 。
- 短息推送:OneSignal 。
數據存儲
數據庫存儲包括數據庫、緩存和對象存儲集中方式。數據庫用於存儲結構化的業務數據和系統配置數據,緩存用於提升應用的訪問速度,對象存儲用於存儲非結構化數據(文檔、圖片和視頻音頻等)
-
數據庫:MySQL,PostgreSQL 。
-
緩存:Redis 。
-
文檔數據庫:MongoDB 。
-
對象存儲:minio 。
- 日誌數據庫:InfluxDB 。
運行環境
-
操作系統:CentOS 。
-
HTTP服務器:Nginx 。
-
負載均衡:HAProxy 。
-
進程管理:Systemd, PM2 。
- Web服務器:Tomcat 。
Devops工具
SaaS系統需要應對快速迭代的業務,部署必須引入DevOps工具,以提升部署的效率。
-
自動配置軟件環境:Ansible 或 Terraform 。
-
構建工具:Jenkins 。
-
代碼倉庫:Gitlab 或 Github 。
- 鏡像製作工具:Packer 。
日誌&監控
傳統個的單機部署應用,監控往往投入較少,大部分時候都是被動的事件響應機制。而SaaS軟件由於其多租戶的特殊性,提前發現問題顯得非常的重要,因此監控業務也是工作的重點之一。
-
全棧工具:ELK 。
-
日誌分析:Grafana,Graylog 。
-
採集轉發:Telegraf 。
- 錯誤跟蹤:Sentry,Statuscake,Papertrail 。
應用分析
應用分析簡稱APM,是指應用程序性能管理或應用程序性能監視,是幫助優化和監視應用程序性能的必要工具。在IT基礎架構領域,APM已經是非常成熟的商業市場。
-
用戶訪問分析:百度統計,Google Analytics, Matomo 。
-
應用程序性能分析:OpenAPM 。
-
代碼級性能分析:Stackify Retrace, New Relic, AppDynamics, and Dynatrace 。
- 網絡性能分析:Extrahop 。
支付
全方面支持企業用戶的各種付款方式,包括:PayPal、信用卡、微信支付、支付寶等,也可以使用一種集成化的中間支付平臺解決所有的支付方式,例如:Stripe 。
設計工具
-
原型設計工具:Sketch,Axure 。
-
原型設計平臺:墨刀、Figma 。
- 圖標庫:Boostrap,Font Awesome,Nucleo 。
另外,還需要一些圖片壓縮工具,圖片格式轉換工具。
通過以上技術棧,我們發現大部分都是開源組件,也有少部分免費(或接近免費)的SaaS和PaaS類服務。搭建一個SaaS化應用,需要從如下幾個角度開始工作:
-
結構業務,分析技術棧 ;
-
迭代式開發,快速實現業務功能 ;
-
科學使用各種不同的組件 ;
-
組件之間的集成 ;
-
引入DevOps實踐 ;
-
服務器運維 ;
- 安全 。
SaaS應用是一個宏觀架構,對產品經理的業務能力、技術能力和哲學思考能力提出了極高的要求。如果SaaS項目的產品經理不具備宏觀思維,沒有全棧的開發經驗,那麼構造一個SaaS應用幾乎是不可能完成的任務。
本文由Websoft9原創發佈,轉載請註明出處。