好的架构,不一定是增加组件,而是敢于删除组件

好的架构,不一定是增加组件,而是敢于删除组件
经验丰富其厉害的程序员还有一项本事就是知道哪些东西暂时可以不用以便降低系统的复杂度。很多项目发展一段时间后总喜欢不断往里面加组件。比如觉得 MySQL 慢就上 Redis。觉得要异步就搞 MQ。觉得以后可能有很多规则就先上规则引擎。其还得意的认为每加一个组件是在提升架构。实际上也是在增加系统复杂度。比如有些业务访问量并不高MySQL 完全能扛住你却还是加了一层 Redis。你有大把的优化手段去优化sql的。虽然缓存确实减轻了数据库压力但新的问题马上就来了缓存什么时候更新先删缓存还是先更新数据库为了维护缓存和数据库的一致性又写了一大堆代码。再比如一个系统本来就只有一个服务部分程序员居然把异步任务全部丢到 MQ。结果多了一套 Broker多了一套运维多了一套监控还要处理消息重复、消息丢失、消息积压、消费失败重试等问题。其实如果只是为了异步执行线程池就够了。而Spring 自带的事件发布订阅机制也完全可以满足很多场景。并不是所有异步都值得引入 MQ。我这边是不允许技术部的程序员随意引入新的组件的那是一个架构的问题怎么可以随意引入呢? 我是卡的非常严格的。但凡用其他技术手段能解决的就不引入新的组件。依赖越多系统复杂性越高。软件架构本质上是在管理复杂度请记住这句话。增加一个组件是很容易的删除一个组件却需要经验和判断。好的架构的其中一个特点就是依赖越来越少系统越来越简单。