软件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 原创发布,转载请注明出处。