• 程序猿的吐槽三——改进还是不改进


    这个吐槽来源于实际项目中一个关于稳定性和效率的争论。

        线上运行系统有一个矛盾的点,就是如果要对其进行修改,就会引入潜在的问题,进而影响系统的稳定性,当然这只不过是一种潜在的风险。而这种潜在风险的高低有一些影响因素。

        1、  对现有系统的熟悉程度

        2、  对修改技术的掌握,比如重构技术等(重构技术对于修改软件来说非常重要,如果有非常高超的重构技术,那么在对系统不是很熟悉的情况下依然能修改出来高质量的系统,也就是说高的重构技术可以弥补对系统的不熟悉)。

        3、  现有系统的架构,如果现有系统的架构比较好,耦合性很低。那么新修改就大大降低了影响范围。

        4、  流程的规范程度(开发和测试)。

        5、  开发人员的责任心和细心程度(在所有的工作中,一定首先考虑“人是不可靠”的这一前提,然后在这一前提之下做好其他相关工作。这样人如果是可靠的,那么事情会处理的非常顺利。当然事情还是人做出来的,所以最后一条我引入了人的责任心和细心这一因素。还是要相信有一些人可以干好非常细致和繁琐的活而不粗心)

         某天听到两个人在吵这件事情,一个激进派觉得现有系统的一些缺陷影响系统的性能,需要进行修改。而另一个属于保守派的人则认为,你的修改可能会引起系统的不稳定,导致系统出现故障。为修改这一个问题不划算。两个人争的脸红鼻子粗。

         对于任何一个系统来说,如果要修改,则制定一个稳定性和高效率之间的一个可接受比例,这个比例的制定根据对系统的了解情况和系统的质量来决定,根据以往的经验可以做一个估值,比如我一个修改能提高了50%的效率或者性能,但是这一块的修改会影响到30%的核心,那么就应该考虑修改。经过规范的流程和优秀的技术可以将影响降低很多。

         所以,结论就是,在保守(稳定性)和激进(效率)之间根据自己系统的情况设定一个估值比例(改还是不改的估值)。当超过这个比例之后以稳定性为重而考虑放弃高效率,如果在这个可允许的比例之内,则不用害怕影响稳定性而显得非常保守,以至于不敢对系统进行效率上的优化和改进,这样日积月累终将会导致系统虽然很稳定,但是已经没法使用了。

        其实在上面的这个估值过程中,还有三个至关重要的因素,一个是领导是否属于保守者,另一个是用户是否属于保守者(固步自封者),还有一个就是真出问题了责任能否担的起。

  • 相关阅读:
    census 安全处理模式
    基于squid 暴露k8s 服务
    nginx 动态模块问题
    juicefs 多s3 bucket 使用
    k8s 数据卷需要很长时间才能挂载成功
    一种基于s3 管理haproxy 配置的模式
    WebSub 互联网分布式\订阅标准
    maven 多模块父模块问题deploy 问题
    nginx 作为s3 的gateway
    juicefs 单机试用
  • 原文地址:https://www.cnblogs.com/chengn/p/2636692.html
Copyright © 2020-2023  润新知