1.编译,部署困难:开发者而言,打包构建巨型应用是一件很痛苦的事情
2.代码分支管理困难:复用代码模块由多个团队共同维护修改,代码merge冲突经常发生
3.数据库连接耗尽:巨大应用对数据库需要创建多个连接,对数据库的挑战很大
4.新增业务困难:不熟悉该系统的人新增业务是一件非常困难的事情
解决方案:
纵向拆分:将一个大应用分成多个小应用,新业务比较独立,可以直接部署一个独立的web系统
横向拆分:将复用的业务拆分开,独立部署为分布式服务,新增业务调用该分布式服务,不需要依赖模块操作。模块内逻辑变化后,保证接口一致就不会影响业务程序和其他模块。