V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
saytesnake
V2EX  ›  程序员

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

  •  
  •   saytesnake · 2019-09-10 14:29:30 +08:00 · 5336 次点击
    这是一个创建于 1930 天前的主题,其中的信息可能已经有所发展或是发生改变。
    无论是以前还在的公司,都存在不少 “版本强迫症” 的情况。

    本职是运维,按照我的想法是,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
    flyingghost
        1
    flyingghost  
       2019-09-10 14:37:00 +08:00   ❤️ 26
    1,版本强迫症不是玄学,是经验,是历史教训,是血泪史,是成本和效用之间的妥协。
    2,你家公司这是伪强迫症,是人云亦云的教条主义,是不求真理但求合规的本本主义。
    optional
        2
    optional  
       2019-09-10 14:39:41 +08:00
    新项目用新版本还能说道说道。
    老项目老版本工作的好好的,除非有重大 bug 或者性能提升或者需要新的功能,否则干嘛去升级?
    Raymon111111
        3
    Raymon111111  
       2019-09-10 14:40:13 +08:00
    你思路没有和领导对齐啊

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

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

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

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

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

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

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


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

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

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

    所以对项目来说,能满足需求就行,你这个项目都没人用,没人卖,整那么多听起来很炫很酷的新功能、性能提升,真的没用
    msg7086
        33
    msg7086  
       2019-09-11 03:11:10 +08:00   ❤️ 1
    当这样的帖子下面很多回复连「安全更新」(小版本补丁升级)和「功能升级」(大版本功能升级)都没有分开讨论的时候,这回复串已经没法看下去了。
    jinliming2
        34
    jinliming2  
       2019-09-11 07:08:53 +08:00 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,对于新项目,不升级最新稳定版本就是给日后升级小版本挖坑。
    Sharuru
        35
    Sharuru  
       2019-09-11 08:05:35 +08:00 via Android
    谁升级谁负责话粗理不粗,你只要有管理 infra 的资格,当然你也能升版本,你也能 fix 一个版本然后吃 CVE 的鳖,没毛病。
    认清自己的职能范围。
    WispZhan
        36
    WispZhan  
       2019-09-11 11:06:58 +08:00 via Android   ❤️ 1
    一句话都不是匠人,只是在推卸责任和懒政没区别,罢了。

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

    这些不是偷懒不更新的借口
    Rwing
        37
    Rwing  
       2019-09-11 11:48:56 +08:00
    java 多少停留在 6 和 8 的?
    smallpython
        38
    smallpython  
       2019-09-11 20:15:53 +08:00
    请问
    ===
    在这家公司...最郁闷的莫过于 CentOS...死磕 7.3 也就算了,新装机器,一上来就 yum update -y...装哪个版本都一样了吧,还头头是道说 7.3 稳定...
    ===
    这句话的原理是什么呢?
    msg7086
        39
    msg7086  
       2019-09-12 06:01:27 +08:00
    @smallpython yum update 就是系统更新。
    saytesnake
        40
    saytesnake  
    OP
       2019-09-12 11:31:04 +08:00
    @jinliming2 只能说,很同意你的看法。
    saytesnake
        41
    saytesnake  
    OP
       2019-09-12 11:33:20 +08:00
    @smallpython 比方说 CentOS 7.3,yum update 之后其实就已经相当于 CentOS 7.6 1810 了,只不过版本号还是 7.3 而已。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5545 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 534ms · UTC 03:40 · PVG 11:40 · LAX 19:40 · JFK 22:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.