小小的公共库,大大的耦合,你痛过吗?
什么是耦合? 耦合,是架构中,本来不相干的代码、模块、服务、系统因为某些原因联系在一起,各自独立性差,影响则相互影响,变动则相互变动的一种架构状态。 感官上,怎么发现系统中的耦合? 作为技术人,每每在心中骂上下游,骂兄弟部门,“这个东西跟我有什么关系?为什么需要我来配合做这个事情?”。明明不应该联动,却要被动受影响,就可能有潜在的耦合。 因为公共库,导致相互受影响,就是一个耦合的典型案例。 场景还原 一个看似“公共”的业务库(.so.jar.dll.php),很多业务系统都依赖于这个公共库,这个库使得这些系统都耦合在了一起。 注:这里的公共库不是指像“字符串操作”这样的不变化的工具库,更多是指通用业务的公共库。 耦合如何导致相互影响? 业务1,业务2,业务3都依赖于某一个biz.jar,业务1因为某个需求需要升级biz.jar。上线前,业务1的QA进行了大量的测试,确保无误后,代码发布,发布完线上验证无误后,上线完成,闪人。 突然,bug群里有人反馈,业务2的系统挂了,业务3的系统也挂了,一下炸开了锅: 业务2的大boss首先发飙:“<font color=red>技术都干...
