【特别声明:本文基于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化应用,需要从如下几个角度开始工作:

  1. 结构业务,分析技术栈 ;

  2. 迭代式开发,快速实现业务功能 ;

  3. 科学使用各种不同的组件 ;

  4. 组件之间的集成 ;

  5. 引入DevOps实践 ;

  6. 服务器运维 ;

  7. 安全 。

SaaS应用是一个宏观架构,对产品经理的业务能力、技术能力和哲学思考能力提出了极高的要求。如果SaaS项目的产品经理不具备宏观思维,没有全栈的开发经验,那么构造一个SaaS应用几乎是不可能完成的任务。

本文由Websoft9原创发布,转载请注明出处。

SaaS技术栈有多复杂?的更多相关文章

  1. SaaS技术栈的走势

    本地部署时代 在软件还是“本地部署(on-premise)”的时候,SaaS的版图被大型玩家把持着,几乎所有的垂直领域(营销.支持.销售.人力)都被微软.SAP等大公司的解决方案占据.那时候的用户并没 ...

  2. ASP.NET跨平台、分布式技术架构技术栈概览 (迄今为止最全的.NET技术栈)

    今天有个学技术的小兄弟问我,现在这么多的技术我要学哪个?我说你根据岗位来学,学好了哪一门都可以在社会上立足,如今已经早已不是我们当年学习IT时候那么单纯了,给他讲了很多,发现现在的技术栈变得层次复杂且 ...

  3. Docker - 技术栈

    与传统的方式类似,构建及运行Docker容器与在一台虚拟机上构建和运行程序的方式是相似的,只是使用了一套新的工具以及技术. 与虚拟机不同的是,Docker容器将宿主机与应用程序或者服务隔离,从而提高了 ...

  4. 如何使用Microsoft技术栈

    Microsoft技术栈最近有大量的变迁,这使得开发人员和领导者都想知道他们到底应该关注哪些技术.Microsoft自己并不想从官方层面上反对Silverlight这样的技术,相对而言他们更喜欢让这种 ...

  5. 用“MEAN”技术栈开发web应用(三)用mongodb搭建数据库

    上一篇介绍了如何用express搭建起服务端MVC的开发架构,本篇我们来详细介绍一下这个Model层,也就是数据库访问层.包含如何使用mongodb搭建数据库,以及如何使用mongoose来访问数据. ...

  6. Web前端开发大系概览 (前端开发技术栈)

    前言 互联网建立50多年了,网站开发技术日新月异,但web前端始终离不开浏览器,最终还是HTML+JavaScript+CSS这3个核心,围绕这3个核心而开发出来大量技术框架/解决方案. 我从2000 ...

  7. 非对称技术栈实现AES加密解密

    非对称技术栈实现AES加密解密 正如前面的一篇文章所述,https协议的SSL层是实现在传输层之上,应用层之下,也就是说在应用层上看到的请求还是明码的,对于某些场景下要求这些http请求参数是非可读的 ...

  8. 一个人的 ClojureScript 技术栈

    作者:题叶链接:https://zhuanlan.zhihu.com/p/24425284来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.今天(昨天)分享完关于 Cloj ...

  9. .NET技术大系概览 (迄今为止最全的.NET技术栈)

    从2002年的.NET 1.0开始,1.1,2.x,3.x,4.x,每个新版本的.NET都会增加新的技术,生态圈也在不断壮大. AD: 前言 .Net推出13年了,Visual Studio 2015 ...

随机推荐

  1. MiniSMB 专业网络性能测试仪表 英特尔82576 4*1GE 网卡性能测试报告

    MiniSMB 专业网络性能测试仪表英特尔82576 4*1GE网卡性能测试报告 一.测试环境 测试配置 ①工控机配置: CPU:Intel(R) Core(TM) i7-6800K CPU @ 3. ...

  2. 9、zabbix监控

    9.1.监控: 1.初级(凡人): (1)识别监控的对象: (2)理解监控的对象: (3)细分监控对象的指标: (4)确定告警的基准线: 2.预中级(飞仙): (1)工具化和监控分离: (2)监控对象 ...

  3. 并发王者课-铂金9:互通有无-Exchanger如何完成线程间的数据交换

    欢迎来到<并发王者课>,本文是该系列文章中的第22篇,铂金中的第9篇. 在前面的文章中,我们已经介绍了ReentrantLock,CountDownLatch,CyclicBarrier, ...

  4. Redis:Java链接redis单节点千万级别数据 写入,读取 性能测试

    本文是对Redis 单节点,针对不同的数据类型,做插入行测试. 数据总条数为:10058624 环境说明:             Redis 未做任何优化, 单节点    (服务器上, 内存64G) ...

  5. Linux安装mysql5.7版本

    1.linux安装mysql5.7顺序 ①mysqladmin –version 查看版本号 ②mysql5.7安装在linux中需要先初始化 Mysqld –initialize –user=mys ...

  6. 数据连接池JNDI

    数据库连接有很多中方式,JDBC数据库的连接方式,前边我们已经介绍过了,而开发中我们经常使用的是DataBaseConnectionPool(数据库连接池,DBCP).数据库连接池到底是什么?它比jd ...

  7. Java实验项目三——递归实现字符串查找和替换操作

    Program:按照下面要求实现字符串的操作: (1)设计一个提供下面字符串操作的类 1)编写一个方法,查找在一个字符串中指定字符串出现的次数. 2)编写一个方法,参数(母字符串,目标字符串,替换字符 ...

  8. 十九、.net core使用SoapCore开发webservice接口,以及使用HttpClientFactory动态访问webservice接口

    使用SoapCore实现在.net core平台下开发webservice:以及使用HttpClientFactory动态访问webservice. 首先,需要在包项目下面引用SoapCore: 然后 ...

  9. Docker进阶:容器卷、DockerFile、Docker网络原理

    1.Docker镜像 1.1镜像是什么 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和机遇运行环境开发的软件. 包含一个软件的所有内容.蒋所有的应用和环境,直接打包为docker镜像,直 ...

  10. IP数据包格式与ARP转发原理

    一.网络层简介1.网络层功能2.网络层协议字段二.ICMP与封装三.ARP协议与ARP欺骗1.ARP协议2.ARP欺骗 1.网络层功能 1. 定义了基于IP地址的逻辑地址2. 连接不同的媒介3. 选择 ...