SaaS软件架构设计系列 | 5-1 大规模租户带来的挑战

116 阅读2分钟

大规模租户带来的挑战

虚拟背景

当系统已经积累了大量的租户,产品也由多产品发展为多个产品线,几十个产品时。现有的单体架构在性能、可用性、团队协作方面都面临巨大的挑战,主要表现在以下方面:

  • 性能扩展挑战:所有产品独立服务器成本太高,所以还是会有很多产品共用服务器,只会把性能挑战大、波动大的部分产品进行独立部署。共用服务器的产品还是会经常相互影响。一方面一个产品出现性能问题影响一大片;另一方面在扩容时,需要整体一起扩。
  • 可用性挑战:服务器出现故障(比如OOM)时,影响面大,恢复时间长。特别是在突发流量大时,会导致服务一直起不来,需要结合限流等方式来启动服务,运维挑战大。因为使用单体架构,公共部分和底层的修改影响范围大,评估容易遗漏,出问题影响范围大。
  • 团队协作挑战:公共部分和底层的修改需要协调更多团队一起参与,评估耗时,质量风险高。单体架构无法很好的进行代码隔离,代码提交冲突频繁,解决代码冲突经常出现问题。甚至需要制定单独制定代码合并流程(例如将代码合并权限收回,需要到指定的机器上,相关团队成员一起结对合并代码)。

随着各个方面的问题发生,从整个系统看来,就是问题频发,恢复时间长,SLA直线下降。系统复杂度越来越高,关联影响一团乱麻,技术规范难以约束,代码质量也越来越差。团队协作越来越复杂,需要花大量时间进行设计讨论,还要花大量时间响应线上问题,团队整体效能越来越低。团队引入新技术和实践方法时,需要考虑对其他团队的影响,技术创新越来越困难。