问题
在面临工作中的问题时应该首先从业务方面考虑解决方案,还是从技术方面考虑解决方案?
场景
系统由于其他系统做库独立导致原直接操作DB查询数据库的地方,需要修改为通过Http接口查询结果,由于服务器及网络等外部因素导致服务稳定性受到明显影响,影响业务流程。
解决方案
- 技术手段
通过新增冗余数据表+缓存的方案,可以进行优化。
原流程中通过查询其他库的数据,在自己应用中去增加一个新表存储关联数据信息,优先从新建表中查询,如果没有查询到数据的情况下,去调用查询服务接口获取结果,再将结果存入新建表中。 - 业务手段
查询操作获取的数据并不是所有业务流程都需要的,因此在原查询操作之前增加一个针对特定业务的判断即可。减少了因为查询无用数据而对主业务的稳定性影响,特定业务需要的数据还可通过查询服务获取。 - 两种方式对比
技术手段需要对系统的改动比较大,新增表,修改原代码逻辑,测试覆盖情况较多;业务手段对系统改动小,代码逻辑基本不变,测试覆盖简单。
总结
为了尽快处理问题,选择了业务方式去解决。其实两种手段相结合是一个更好的方案。
在这个问题解决的过程中,得到的一个非常值得学习的点是对问题解决的思路。
作为一个开发人员,在面对系统问题的时候,不能只思考在不改变现有代码逻辑业务流程的基础上去通过技术手段去解决问题;更应该从业务流程的基础上去思考,有时候可能会发现更简洁的解决方案。