做 Taocarts 反向海淘 SaaS 系统快四年,从最开始的单应用部署,到现在的云原生多租户架构,中间踩了不少坑,今天把基于阿里云栈的架构演进过程整理出来,给做 SaaS 的同行做个参考。
最开始业务量小,就一台 ECS 跑应用 + 数据库,平时还行,一到黑五、圣诞大促就崩,并发一上来接口直接超时,订单提交失败,客户投诉特别多。而且多租户数据隔离做得糙,全靠字段区分,出过一次租户数据串了的事故,吓出一身冷汗,下决心重构架构。
架构改造基本全栈用的阿里云产品,稳定性和弹性确实没的说。
计算层用 ECS 弹性伸缩组,平时保持基础实例数,大促前根据历史流量自动扩容,峰值过后自动缩容,不用再手动加机器,也不用为了大促一直囤着高配服务器闲置,成本省了不少。前面挂 SLB 做负载均衡,四层 + 七层结合,健康检查自动踢掉异常实例,可用性高了很多。
数据层用 RDS MySQL 8.0 做主从,分库分表做多租户隔离,每个租户的数据存在独立的逻辑分片里,权限控制到库级别,彻底解决了数据串的问题。性能也比之前单库好太多,复杂查询响应时间从秒级降到毫秒级,大促的时候数据库也没再成为瓶颈。
缓存层用阿里云 Redis 6.0 集群版,热点商品、库存、用户会话全放缓存,缓存命中率做到了 95% 以上,接口响应时间直接降了 60%,数据库压力也小了很多。之前自建 Redis 经常出内存满了、主从同步故障的问题,托管版之后基本不用管运维,省了很多事。
存储这块,之前验货图片、商品图都存在本地服务器,扩容麻烦还不安全,现在全迁到阿里云 OSS,配合 CDN 加速,海外客户加载图片的速度快了很多,存储成本也比本地低,还不用自己做备份,省心。
安全方面也省了不少心,WAF 防爬虫、防 SQL 注入,安全组做网络隔离,RAM 做权限管控,符合跨境电商的数据安全要求。之前还要自己搭防火墙、做安全策略,现在云产品自带,省了很多安全运维的工作量。
算下来,整体架构改造之后,系统可用性从 95% 提到了 99.9%,大促的时候并发扛到平时的五倍也不卡,运维成本降了差不多一半,不用再养专门的运维团队盯服务器。
对于做 SaaS 的中小团队来说,真的没必要自己从零搭基础设施,云厂商的成熟产品直接用,把精力放在业务功能上,ROI 高得多。
当然选型的时候也要注意,别为了炫技上一堆复杂的云产品,适合自己的业务阶段最重要,业务量小的时候简单点,规模上来了再逐步迭代,别一开始就搞过度设计,反而拖慢节奏。