首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

版本强迫症到底是谨慎还是玄学?

  •  
  •   saytesnake · 39 天前 · 3631 次点击
    这是一个创建于 39 天前的主题,其中的信息可能已经有所发展或是发生改变。
    无论是以前还在的公司,都存在不少 “版本强迫症” 的情况。

    本职是运维,按照我的想法是,MQ、ZK、Kafka,Redis 这些都尽可能地用最新版本,且实践中,也没有出过问题。数据库则讲究小版本升级,也是为了照顾 Bug 与漏洞修复的,比方说 PG10,就尽可能 PG10.10 ,PG9.6 就尽可能 PG9.6.15 ,诸如此类。

    在这家公司...最郁闷的莫过于 CentOS...死磕 7.3 也就算了,新装机器,一上来就 yum update -y...装哪个版本都一样了吧,还头头是道说 7.3 稳定...

    还有,ActiveMQ “死磕” 5.9.1 (公网对外,据说之前被入侵过植入挖矿,我估计是 CVE-2016-3088,但开发人员还是坚持不用新版本),ZK “死磕” 3.4.6,Kafka “死磕” 1.1.0,Redis “死磕” 2.8 (没错,原生集群也用不了)。数据库 PG 只用 10.3,估计是打算用一辈子了吧?

    不知道是生活压力大还是懒,“实践出真理”就是不想做,别人做了也不理,不明白。

    都是小牢骚。
    41 回复  |  直到 2019-09-12 11:33:20 +08:00
        1
    flyingghost   39 天前   ♥ 26
    1,版本强迫症不是玄学,是经验,是历史教训,是血泪史,是成本和效用之间的妥协。
    2,你家公司这是伪强迫症,是人云亦云的教条主义,是不求真理但求合规的本本主义。
        2
    optional   39 天前
    新项目用新版本还能说道说道。
    老项目老版本工作的好好的,除非有重大 bug 或者性能提升或者需要新的功能,否则干嘛去升级?
        3
    Raymon111111   39 天前
    你思路没有和领导对齐啊

    公司用这些组件是用它的功能, 既然 x 版本可以满足要求, 为什么要升级 x+1 版本?

    升级就带来变动, 变动就意味着有 bug 风险, 特别是这种组件升级里面改了啥你代码一行一行都看过了吗? 吃力不讨好的事情

    (当然有安全风险应该及时升级, 但这和追求新版本完全是两回事
        4
    Tianao   39 天前 via iPhone
    @flyingghost #1 不求真理但求合规的本本主义,太真实了!
        5
    saytesnake   39 天前
    @flyingghost 我还特地去谷歌搜了下啥叫 “本本主义” ...有道理。
        6
    saytesnake   39 天前
    @optional 新部署的服务也是按照这个 “教条” 部署的,Redis 没法集群化,ActiveMQ、PG 有漏洞,没法理解不去升级。
        7
    tankren   39 天前
    看老板
        8
    saytesnake   39 天前
    @Raymon111111 现状是,有安全风险也不升,换个意思给人感觉是,偶尔中下挖矿病毒啥大事...
        9
    chendy   39 天前
    升级基础设施升级崩过之后,就对升级操作充满敬畏了
    除非有水平强大的运维团队,否则全部买服务商的就是了
        10
    luozic   39 天前
    1.部分安全认证有合规需要的,没有安全认证的搞坏了有人负责这种版本策略就行。
    2. 老版本才可以不用更新知识,只用注意业务,最后系统直接重写增加了程序员工作供应。
        11
    k9982874   39 天前 via iPhone
    领导说用啥就用啥,早弄完早下班,生活本就不易,且行且珍惜。
        12
    lolizeppelin   39 天前
    先不说数据库,光说程序

    楼主先把这个读了 https://docs.openstack.org/pbr/latest/user/semver.html

    然后想想有多少程序 /库没按这个标准做

    再想想你家程序有多少单元测试

    然后你就不会问这个问题了
        13
    misaka19000   39 天前   ♥ 1
    很简单,谁升级、谁负责,出了问题谁背锅
        14
    newtype0092   39 天前   ♥ 1
    我以为“版本强迫症”是什么都不管一定要用最新版,新版一出不管三七二十一立马升级。。。
        15
    vcode   39 天前
    公司上了 mysql8,踩了几个坑,整理来说还不错
        16
    iPhoneXI   39 天前 via Android
    之前不是有百度被智子锁死 GCC 的梗,


    升级软件版本这种事,还是谨慎点好,先得测试
        17
    DAPTX4869   39 天前
    你说的不知道...
    现在对生产服务器升级痛苦得要命,明明跑在内网环境,博登安全就逼逼要升级,升 TM 的,迁移业务烦死...
        18
    akira   39 天前
    用新版本没问题,出了问题能不能搞得定
        19
    xiaoyaojc   39 天前
    如非必要,切勿升级啊。血和泪的教训,不是所有的第三方都完美的向下兼容的
        20
    cnanyi   39 天前
    老项目尽量不动任何库的版本。
    新项目尽量选用比较新的稳定版
        21
    Buges   39 天前 via Android
    老项目除非有需求(功能,安全漏洞等)否则不要动,工作量不饱和?
    新部署的尽量上最新的( release or stable ),如果始终维护的话后续也跟着一版一版的升( cai )级( keng )
        22
    Mohanson   39 天前 via Android
    有这种牢骚的基本是菜鸟:我毕业后 某某 最新版本是 x 了, 我以前没用过 x - 1 版本的,你们不用 x 版本就是你们不求上进。
    基本工作时常一年的菜鸟最喜欢 diss 这个。
        23
    watsy0007   39 天前
    过一段时间就可以重新立项了...
        24
    switch100   39 天前
    如果我是技术部主管,我肯定会吊这帮网管运维,不好好修主机装系统,还把手伸到开发来了,这么牛 B 怎么不做开发?
        25
    harde   39 天前
    每一个“非创业公司”的技术选型、选版本 都是一部可歌可泣的血泪史。
        26
    twl007   39 天前 via iPhone
    升级不升级另说……漏洞补丁也不打么?
        27
    winterbells   39 天前
    我的项目第三方库都是及时升到最新的(摸鱼一大乐趣之哪个库更新了
    半路接手的,是什么就是什么,出了问题不然找谁
        28
    saytesnake   39 天前
    @switch100 都已经中了挖矿病毒了,阿里云的告警成古董了都没人理,近期 Dubbo 又有漏洞,估计也是不升级了,怎么办?
    @twl007 没错,就是这样,所谓怕出问题,安全反而是次要的。
    @Mohanson 中间件,第三方库而已,跟开发本身关系不大啊,我在测试环境 MQ、ZK、Kafka,Redis 直接用最新,代码一行不改,跑到现在也没出现过问题啊,而且我本身也偏向保守的,只升级或更新安全相关的,也不行,时不时被中挖矿病毒也没所谓,什么道理么。
        29
    saytesnake   39 天前
    @Buges 目前就是安全漏洞跟集群化的需求啊,redis2 搞个第三方集群,网上搜索的都已经是古董文章了,直接上 5.0 也没发现问题在哪里。
        30
    chinvo   39 天前
    一般来讲,最小一级版本号都是修补,这种我选择及时跟进(通常修补意味着两种情况,性能改进或者安全修补),但是也要观察一下,如果公网、user group、maillist 没有相关兼容性 /稳定性报告,一定要复刻一套生产环境然后做更新实验一下

    大版本、小版本通常不更新,在项目初期选定之后基本不动,到了非动不可的地步,通常也是项目需要重构的时候,重构时重新选型就好
        31
    twl007   39 天前 via iPhone
    @saytesnake 哎 感觉还是抱着那种做的多错的多 不做不错的心态吧
        32
    littlespider89   39 天前
    用的好好的系统不要随便升级依赖,说不定什么时候就出现一个严重的 bug,稳定的系统肯定经过了成百上千次的测试、修复 BUG,一些 BUG 修复甚至可能专门针对一些依赖库使用一些 tricky 的方法,一升级依赖库就会有问题,而且可能不会马上发现,运行一段时间后出现问题,有可能当时的程序员都不在了…

    另一方面,不要轻易用最新的版本~,尤其是 X.0 或者 X.X.0 版本,一般都是有问题的,所以很快就有补丁版本出来的,你用最新版本就意味着你要不断的重新部署系统,这个折腾对项目组的负担也是蛮重的

    所以对项目来说,能满足需求就行,你这个项目都没人用,没人卖,整那么多听起来很炫很酷的新功能、性能提升,真的没用
        33
    msg7086   39 天前   ♥ 1
    当这样的帖子下面很多回复连「安全更新」(小版本补丁升级)和「功能升级」(大版本功能升级)都没有分开讨论的时候,这回复串已经没法看下去了。
        34
    jinliming2   38 天前 via iPhone   ♥ 1
    1,老项目看实际情况不升级大版本无可厚非,但是安全更新不跟上也是合理的吗?
    2,楼上的几位说升级出问题了谁来负责,那我反问一句:坚持旧版本,那么一堆已知的 CVE 被利用了谁来负责呢?就像楼主说的这个中挖矿病毒的事,发生了谁来负责呢?也许挖矿病毒还算小事,如果被任意代码执行拿走完整源代码、完整数据库,这又谁来负责呢?更严重的甚至有法律方面的责任。(如果版本是你们老板强制要求的,那么出问题写个报告指出是利用 xxx 版本的 xxx 漏洞造成的攻击,看你们老板是愿意接锅还是甩锅。但如果版本是自己私自定的,或者给老板说过但老板没管的,那么出现这一类问题背锅的肯定是这个要求版本的人,其他开发人员连带责任)
    3,的确有些软件版本管理不合规,小版本更新弄出不兼容,但是如果是安全更新,我理解肯定是老写法存在严重问题才会改的,这种通常要配合改本地代码去做适配,因为本地代码肯定也是有严重问题的。
    4,如果的确是担心新版本软件质量问题,我觉得可以叉开一个版本进行更新,比如最新版本是 x.x.5,那就更新到 x.x.4,而 x.x.5 交给社区去做公测,等 x.x.6 出来没问题了再更新 x.x.5。
    5,对于新项目,不升级最新稳定版本就是给日后升级小版本挖坑。
        35
    Sharuru   38 天前 via Android
    谁升级谁负责话粗理不粗,你只要有管理 infra 的资格,当然你也能升版本,你也能 fix 一个版本然后吃 CVE 的鳖,没毛病。
    认清自己的职能范围。
        36
    WispZhan   38 天前 via Android   ♥ 1
    一句话都不是匠人,只是在推卸责任和懒政没区别,罢了。

    升级肯定是要升级的,只是升级之前要做兼容性测试,检查依赖,破坏性改动等各种可能出现的问题。

    这些不是偷懒不更新的借口
        37
    Rwing   38 天前
    java 多少停留在 6 和 8 的?
        38
    smallpython   38 天前
    请问
    ===
    在这家公司...最郁闷的莫过于 CentOS...死磕 7.3 也就算了,新装机器,一上来就 yum update -y...装哪个版本都一样了吧,还头头是道说 7.3 稳定...
    ===
    这句话的原理是什么呢?
        39
    msg7086   37 天前
    @smallpython yum update 就是系统更新。
        40
    saytesnake   37 天前
    @jinliming2 只能说,很同意你的看法。
        41
    saytesnake   37 天前
    @smallpython 比方说 CentOS 7.3,yum update 之后其实就已经相当于 CentOS 7.6 1810 了,只不过版本号还是 7.3 而已。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   925 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 19:36 · PVG 03:36 · LAX 12:36 · JFK 15:36
    ♥ Do have faith in what you're doing.