大型软件部署交付 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
luxsunzhe1
V2EX    问与答

大型软件部署交付

  •  
  •   luxsunzhe1 2023-03-01 11:29:41 +08:00 3996 次点击
    这是一个创建于 957 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位彦祖,想问下你们公司都是怎么给客户部署 B/S 软件的? 我司 5w 多家企业客户,要部署一套 200+微服务 springboot 应用和 20+周边服务如( redis/rabbitmq/ng 等等)+所有类型数据库( Mysql/SQLServer/Oracle/PG 等),现在部署一次大概得一天左右,主要通过 shell 脚本部署,想问下怎么优化?

    第 1 条附言    2023-03-01 20:07:43 +08:00
    感谢各位彦祖:
    看大家回复还是得 all in k8s,我们是有现成的 k8s 部署的 playbook 的,但是还在考虑,主要是会带来新的问题

    1. k8s 维护需要我们来做,主要就是升级,备份,打补丁
    2. k8s 自身问题,也需要我们去推动修复
    3. k8s 自身高可用问题,这块也需要投入精力
    4. k8s 流量治理,监控,存储,日志都需要我们自身去搞了,也会带来额外的资源消耗
    优点
    1. 完全屏蔽底层操作系统带来的差异
    2. 完全自定义
    3. 部署速度,稳定性是 shell+ansible 不能比的
    4. 标准统一,所有客户环境都是统一的,可以解决因部署差异导致各种服务错落部署不好排查问题

    所以彦祖们,整套 k8s 可行不? 我记得国内有家大型公司就是通过安装 k8s 部署交付的,不知道他们怎么解决 k8s 带来的问题的
    40 条回复    2023-03-07 21:59:27 +08:00
    isno
        1
    isno  
       2023-03-01 11:32:00 +08:00
    全都给改成 docker 的?
    perfectlife
        2
    perfectlife  
       2023-03-01 11:36:18 +08:00
    感觉有必要那么多微服务么,你们客户对这些没意见么,我们供应商要是给我搞这么多微服务,我估计裂开。 你可以用服务全做成容器,去客户现场部署,k8s+yaml 直接梭哈
    ixixi
        3
    ixixi  
       2023-03-01 11:40:27 +08:00
    我比较好奇的是做的是哪一类的软件 ?
    westoy
        4
    westoy  
       2023-03-01 11:42:27 +08:00
    慢点好, 好收费
    youisme
        5
    youisme  
       2023-03-01 11:43:15 +08:00
    k8s, 需要落地执行的可以找我们合作
    hhjswf
        6
    hhjswf  
       2023-03-01 11:45:45 +08:00 via Android
    这就是 k8s ,docker swarm 的场景啊
    moshiyeap100
        7
    moshiyeap100  
       2023-03-01 11:57:21 +08:00
    @perfectlife 也可能指的是 200+的微服实例,比如一个订单服务有 30 个实例这种。
    julyclyde
        8
    julyclyde  
       2023-03-01 12:03:09 +08:00
    shell 脚本,我猜大概都是写“动作”的吧
    建议还是用 ansible ,写“期望结果”
    或者用容器,直接交付结果
    la2la
        9
    la2la  
       2023-03-01 12:11:14 +08:00
    目前 shell 脚本不也没有碰到什么问题么?接着用啊
    如果需要快速交付的场景: all on k8s
    tomczhen
        10
    tomczhen  
       2023-03-01 12:22:16 +08:00 via Android
    大型还是商业,交付部署有很多根据实际情况来做的细节,网友顶多给个云来的方向,实际坑还是得自己踩,最后也不一定能行得通。至于真的实践过的,就算想分享给你,打字都要一堆,白嫖方案细节更不可能。

    商业就是商业,别想得太简单。

    花一天时间,只要稳定不出问题,不埋隐患,客户认可,万一优化成 1 小时,客户反而不愿意掏钱呢?
    whileFalse
        11
    whileFalse  
       2023-03-01 12:31:55 +08:00
    你们这软件。。。感觉写代码的人瞎几把搞。
    hhjswf
        12
    hhjswf  
       2023-03-01 12:45:29 +08:00 via Android
    @tomczhen 啥?这不是说 5w 多客户,应该是做平台的,不是每个客户部署一套,部署成本肯定不是客户掏钱
    cheneven
        13
    cheneven  
       2023-03-01 13:03:56 +08:00
    k8s, 需要落地执行的可以找我合作
    jucelin
        14
    jucelin  
       2023-03-01 13:15:04 +08:00
    虚拟机镜像,然后 U 盘带过去
    idblife
        15
    idblife  
       2023-03-01 13:31:42 +08:00
    k8s
    也可以联系我
    哈哈
    luxsunzhe1
        16
    luxsunzhe1  
    OP
       2023-03-01 13:38:59 +08:00
    @perfectlife 容器简单了,主要是客户不会给 kubectl 权限的,大部分是通过 jenkinsfile 实现,还不能用 shell 脚本,更麻烦!
    luxsunzhe1
        17
    luxsunzhe1  
    OP
       2023-03-01 13:49:02 +08:00
    @isno 现在是 docker 或虚拟机,问题是容器镜像非常多,磁盘空间占用特大,导入导出镜像耗费了大量时间
    @tomczhen 说的对,但是领导不同意,说我们自动化程度太低,耗时太久
    @ixixi 企业软件
    @moshiyeap100 不是,就是单纯模块服务
    @julyclyde 有 ansible ,ansible 这块的问题是客户服务器操作系统多变,比如 windows ,centos ,麒麟一大堆,导致 ansible playbook 冗杂且容易出问题,尤其是第三方中间件,不上容器化的话,这块根本没法玩,早期我们就是各种操作系统兼容问题,后来切容器后还好一点
    @la2la 领导要求优化呀
    @whileFalse 是的,拆太细了,我们现在一套系统要求 200 多 g 内存,小客户根本承受不了
    @hhjswf 即做平台,也做私有化,很多 guoqi/zhengfu 不允许使用我们的 saas 服务
    @jucelin 不现实,几万家客户不可能全带 u 盘过去的
    goodryb
        18
    goodryb  
       2023-03-01 14:19:00 +08:00
    @luxsunzhe1 #17 既然领导说自动化程度太低,时间太久那就要拿出来具体分析下,部署的卡点在哪里,耗时在哪里

    不管用 k8s 、虚拟机,甚至是 shell 脚本,都是实现自动化的手段。

    高效的前提标准化,敏捷化; 部署环境、方式、验证是不是足够标准; 业务本身是否足够简洁、敏捷;

    分析之后再看怎么去提升和优化。
    defunct9
        19
    defunct9  
       2023-03-01 14:24:49 +08:00
    开 ssh ,让我来
    Mithril
        20
    Mithril  
       2023-03-01 14:47:18 +08:00   5
    这就是云架构师纯瞎搞出来的,面向 KPI 的架构设计。。。

    你每个客户都搞一套这玩意,光售后维护就能搞死你。而且最重要的问题在于,如果客户没有这么大的数据量需求,那你搞这么个复杂的微服务架构有意义吗?
    如果他们有这么大的需求,那自己还没个运维团队?开发还要外包?

    恕我直言,绝大多数的企业级应用,都根本用不上这么复杂的微服务架构。没那么多并发,也不需要多高的容错。你要说只有 500 强客户还好说,5W 多家企业客户里面怕是大部分都用不上。

    已经搞成这样了,那最简单的办法就是连着硬件一起卖。OEM 几台机器,配置好了发给客户去。版本更新直接换硬盘,省得你到时候乱七八糟的环境问题搞不定。也省得客户抱怨你这东西吃配置自己的机器跑不起来。
    99s
        21
    99s  
       2023-03-01 15:09:01 +08:00
    微服务架构不是只存在 PPT 中吗?做事用这个不是折腾自己吗
    litchinn
        22
    litchinn  
       2023-03-01 15:21:39 +08:00
    正文里说目前主要用 shell 部署,楼层回复里我看又说不让用 shell 呢
    这种大型项目,对面不给 kubectl 权限是啥情况,服务器权限也没有吗,那不就是你们写方案别人部署吗?
    镜像问题,现在有使用 harbor 吗,建议自建 harbor ,部署时通过合适的手段直接访问,或者部署地建一个 harbor
    另外确实如 @Mithril 所说,真的有 5w 家这种都需要自部署这么复杂项目的企业吗,不会是所有服务 all in one 吧
    hhjswf
        23
    hhjswf  
       2023-03-01 16:18:34 +08:00 via Android
    @luxsunzhe1 一家企业就要部 200 多微服务 20 多中间件?那整个平台得部多少套。。牛批
    BeforeTooLate
        24
    BeforeTooLate  
       2023-03-01 16:52:30 +08:00
    一套系统要求 200 多 g 内存,小客户根本承受不了。
    这里是指一家企业就要这么大内存?
    julyclyde
        25
    julyclyde  
       2023-03-01 16:58:23 +08:00
    @luxsunzhe1 ansible 搞不定的,理论上你的 shell 应该更搞不定
    要求隔离啊,不要和其他的混在一起

    几万家客户这个量级,就没听说过还派人去的。我觉得也许需要反思一下是不是哪里做错了
    cmingxu
        26
    cmingxu  
       2023-03-01 16:59:02 +08:00
    10 个服务以内我现在全是 docker-compose , 超过 10 个的服务我还没见过。
    rushssss
        27
    rushssss  
       2023-03-01 17:08:54 +08:00
    200+微服务 springboot 应用和 20+周边服务如( redis/rabbitmq/ng 等等)+ 所有类型数据库( Mysql/SQLServer/Oracle/PG 等)


    这么大一堆东西,能一天部署完调试好也算你们厉害了。

    想要再提高效率,容器化和声明式 API 部署应该是唯一的路,就算客户不给你 kubectl 权限,通过 jenkinsfile 调用 kubectl 和你通过 jenkinsfile 调用 shell 实际上是一码事,所以还是可行的。
    jamosLi
        28
    jamosLi  
       2023-03-01 17:36:05 +08:00
    不可能每次发版都是重头再来吧。
    LLaMA2
        29
    LLaMA2  
       2023-03-01 17:52:01 +08:00
    @defunct9 上一个 SSH 哥已经被 ban 了
    defunct9
        30
    defunct9  
       2023-03-01 17:59:11 +08:00   1
    @ye4tar 上一个也是我,又解开了。
    LLaMA2
        31
    LLaMA2  
       2023-03-01 18:00:40 +08:00
    要不你把你的 shell 中一些经典的部分抹除掉敏感信息,发出来大家伙给你说道说道
    yrj
        32
    yrj  
       2023-03-01 21:52:33 +08:00
    我感觉,你们公司的技术主管是在这练手呢吧?能用的都用上了
    WildCat
        33
    WildCat  
       2023-03-01 21:56:57 +08:00 via iPhone
    audioium
        34
    audioium  
       2023-03-02 02:11:55 +08:00
    @defunct9 联系方式给下吧, 下次找你 ssh.
    smg
        35
    smg  
       2023-03-02 08:42:32 +08:00
    最近上了 2 套完全不同的系统,本地内网部署的,供应商都是直接 all in k8s 交付,把测试灰度和正式环境全了。部署时间一两天对我们来说无所谓,我们关心的是后续维保问题,环境问题你们自己去修,要划清工作界面。前期沟通好能单独提供一个主机就更好了,以后这个盒子的问题都是你们。
    echoyangjx
        36
    echoyangjx  
       2023-03-02 09:25:31 +08:00
    试试 ansible
    darling19961030
        37
    darling19961030  
       2023-03-02 10:06:20 +08:00
    个人经验不上云上 docker 意义不大,尤其是离线环境,纯粹给自己找事
    Mithril
        38
    Mithril  
       2023-03-02 10:58:23 +08:00
    @smg 这就是问题所在。
    能正常跑那啥事都没有,集群出问题想要调试和调查就麻烦了。客户那里的 IT 可能没有这个水平,再说就算有,也不一定会愿意帮你调查。比如经典的,“我们什么也没动,他就坏了,那不就是你们质量问题吗?”
    而且调查也不一定方便,涉及网络方面没准还要去现场。

    所以说 k8s 这种东西,只适合做 SaaS 服务。哪怕是客户那里有自己的私有云,自己的 k8s 集群,你也不要去碰,给他们发布镜像就好了,不然真的搞坏了那你这锅可就大了。

    拿这套东西去把整套 SaaS 服务直接打包卖给客户,只能说是徒增部署和维护成本。
    要是有自己的 SaaS 服务,为了省成本直接打包卖那还好说。
    要是大部分客户都是这种,还要搞 all in k8s ,也就只能指望老板不懂技术了,不然一核算成本 CTO 怕是要直接跑路。
    defunct9
        39
    defunct9  
       2023-03-02 11:29:36 +08:00
    @audioium 微信:ZGVmdW5jdAo=
    audioium
        40
    audioium  
       2023-03-07 21:59:27 +08:00
    @defunct9 加你了, 请通过.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3439 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 04:50PVG 12:50 LAX 21:50 JFK 00:50
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86