系统耦合性高的感受
多模块集成一开始可能模块结构还很清晰,随着需求日益增长,不断的添加新功能,代码量巨增,模块之间的边界开始模糊,调用关系开始混乱,整体的代码质量非常依赖个人水平。
假使某个同事水平较差,实现的代码冗余,逻辑混乱,这时候要在上面添加新功能或者修改老功能其实是一件很困难的事情,你不能保证你修改的功能模块不会影响到其他功能。
而且代码会有**“破窗效应”**(这里其实不仅仅是单体架构,对于所有架构来说都是如此,只是单体应用更大的庞大,业务界限不清晰,因此这种问题更容易被放大)。
微服务
系统的耦合度降低,模块之间的边界清晰,都按业务物理隔离了。
在一定的措施下(下文会提到),系统整体可靠性变高。
技术选型丰富,不同的服务可以利用不同的技术或语言实现,例如数据分析服务可以用 Python 实现,一些底层的服务团队说我要用 GO,那就用 GO 呗。
可根据服务扩展部署,商品服务访问量特大,那我们就单单给商品服务扩容,增加机器,其他服务照旧。