V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
luxsunzhe1
V2EX  ›  问与答

大型软件部署交付

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

    各位彦祖,想问下你们公司都是怎么给客户部署 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   ·   实用小工具   ·   5454 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 01:47 · PVG 09:47 · LAX 18:47 · JFK 21:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.