云原生落地:企业级DevOps实践
上QQ阅读APP看书,第一时间看更新

1.3.1 微服务与单体架构的区别

在公司业务发展早期,业务功能相对单一,应用程序也相对较小,单体架构可以很好地支持业务开发,构建与部署简单明了,测试相对直观,也不用过多考虑扩展的问题。随着时间的推移,业务发展逐步加速,应用程序需要不断增加新功能来支持业务增长,开发、测试、部署、扩展都会变得更加困难,单个应用程序也会越来越臃肿。同时,随着代码库规模变大,研发团队的规模也会激增,团队管理的成本不断提高,《微服务架构设计模式》一书中把此时的单体架构称为“单体地狱”。

在这种架构模式下,开发变得缓慢、低效,从代码提交到实际部署的周期被拉长,可靠的部署或功能交付将越来越困难,且系统非常脆弱,很容易因为一个小问题导致整个系统宕机。我曾遇到过因为增加了一个数据库字段,导致另一个业务线功能大面积故障的场景。

随着新技术栈的更新换代,单体架构不得不长期依赖某些可能已经过时的技术栈,当Elasticsearch已经到7.x版本时,某些团队还在使用2.x的技术栈,可想而知,在这几年间团队错过了多少高效好用的新特性。