公司的项目是两周一迭代,中途有客户需要私有化部署的时候,我们会选用上个迭代更新到生产环境的版本,拉取镜像部署给客户。
如何在项目(微服务)的快速迭代开发(两周一迭代)的情况下,保证私有化部署的稳定性?
项目在快速迭代的情况下,可能两周前的部署配置,在两周后就不适用了
开发时只考虑了企业版的场景,没有考虑私有化部署的场景,一旦私有化部署之后发现没法用,又需要改代码
部署时弄错了某些配置(私有化部署的时候,某个配置应该是要变一下... 云云)
有的企业会将系统做成镜像,到时候直接拷贝到机器里面,但是两周的迭代太快了,这种方法感觉不太现实....
1
eephee OP * 部署时不允许联网,只能自己搞离线软件源,有点带着镣铐跳舞的感觉
|
2
kkk9 249 天前 1
一个字:拆
把公版和 OEM 版统一的部分拆出来,需要独立修改部分单独出两个分支,发版的时候分别合并测试就 ok 了 然后写一个 OTA 独立工具,就像简单的 CI/CD ,你这边推更新,客户那边自己找时间打开,自动化 update |
3
whileFalse 249 天前
要不用 Docker 要不用虚机镜像
|
4
kkk9 249 天前
不能 online 就都打包好,只在不行上 docker ,给客户镜像……
|
5
whileFalse 249 天前
还有就是你们自己运行一个私有化部署环境这些问题测不出来吗
|
6
eephee OP 唉,也是,搞一个私有部署环境去测测,谢谢两位
|
7
likooo125802023 248 天前
不如改回单体应用
|
8
zhonj 248 天前
私有化部署项目都是用 docker , 每次就上传一下 docker 包,就完事了简单轻松。然后所有项目都不拆直接 boot 一把梭。mysql redis 啥中间件的能不用就不用。以免出现漏洞又要去升级
|
9
TH00 248 天前 1
做过上百个服务的私有化部署, 一开始也很乱, 但是搞好标准化后面就很流畅了, 软件源问题很好解决, 打包成本地镜像, 通过 helm 来管理部署
|
10
beneo 248 天前
同面对 私有化部署 加 SAAS ,对团队要求是很高,我给团队定的调: 一套代码,插件定制,持续交付,统一运维。我的建议是,有能力就跟我们一样一套代码,没有的话就两套好了,对于私有化部署版本,按月升级,不要 和 master 离的太远。此外以用代测试,在某些时候也不是不行。
|
11
akira 248 天前
仓库代码 做好分支,打好 tag 应该就好了啊。
|
12
jsq2627 248 天前 via iPhone 1
同时支持 saas 和私有化部署,要求本来就挺高的
如果是单纯以私有化部署为目标的应用,从最初技术选型就会很不一样,开发、发布流程也可能和 agile 相去甚远。 既然你已经提到了你们是按照微服务开发的,那注定私有化部署不是个容易事了。 如果以私有化部署为目标,一开始就应该选择单体应用。 上工具吧,helm 、terraform 、ansible 等等。如果客户是云环境,那还可以用各大云自己的 IaC 方案,比如 AWS CloudFormation 。相比之下,单体应用就没这么复杂,打个 zip 包丢给客户就行。 |
13
jsq2627 248 天前 via iPhone
后期可能私有化客户还有定制需求,分支管理会更复杂。
|
14
securityCoding 248 天前 via Android
微服务太多的话只能合并
|
15
cat1879 248 天前
docker 不就是用来解决开发与生产环境不一致的问题吗?
|
16
dayeye2006199 248 天前 via Android
Ansible chef ,最好是代码描述的部署过程。用手弄肯定容易错
|
17
layxy 248 天前
我们也有这个问题,很麻烦,虽然后续需求设计的时候会考虑,但是关联系统更新等产生的兼容性问题要解决起来也很费劲
|
18
guanzhangzhang 248 天前
我部门就是做私有化的,
一开始也是企业版本去适配私有化,但是企业版本的开发说过类似的话:给你们修私有化 bug ,并不算到我们的 kpi ,而且历史原因,企业版本会用到很多中间件,在私有化场景下(硬盘 iops 辣鸡,cpu 内存超分)下,中间件是尽可能的少是最好的(利于维护),且要考虑客户提供中间件的情况,还有业务要支持的中间件模式,例如 redis 集群、主从和哨兵模式以及版本,并不是所有业务都支持各种模式,对象存储客户没有就私有化要部署一个 还有安全: 因为很多客户会扫描,需要部署安全的 agent 之类的 客户让不允许 root 运行容器 数据库初始化,检查工具(检查数据库权限和设置对否),甚至有的客户不让业务进程创建表,你要把所有创建表的 sql 导出来给客户 还有升级,因为是 docker ,升级包如何兼容,sql 兼容升级吗,兼容国产数据库吗 还有肯定要部署监控和日志的 以及没网情况下,你肯定要部署时间服务器,如何兼容每个系统 很多细节问题,需要多次迭代才能发现 |
19
Lamkin 248 天前
“项目在快速迭代的情况下,可能两周前的部署配置,在两周后就不适用了”
这个情况跟我们公司的场景挺像 目前解决的办法就是用 sealos 部署(解决离线部署 K8S 的问题),并且使用 sealos 的方式来制作自己的 helm-charts 镜像(解决多台机器下,每次都要手动导入 docker 镜像的问题,还有各种配置项、环境变量的自动模板渲染) |
20
zoharSoul 248 天前
润 别找 tob 的公司
找 toc 的 |
21
eephee OP 昨天我同事给一个什么学院部署,结果在测试的时候,把一个文件传到他们电脑上面测试,硬是解析不出来
最后发现,文件传到他们的电脑上面后,大小变了,MD5SUM 也完全不一样了,然后看了下文件发现图标多了一个红星,原来他们电脑上面装了一个啥安全软件.... 后面把文件搞成压缩包传进去,然后到里面再解压,文件就是好的,我们排查这个就花了 1 天多时间 hhh |
22
eephee OP @guanzhangzhang 太对了哥...
|
23
uliah 248 天前 1
前期 私有源 & ansible
中期 ansible & docker 后期 kubernetes & helm 项目改造大概花了一年半的时间,TOB 比 TOC 多一章节离线方案。 但国内 TOB 真正痛苦的是: 1 、指定国产硬件 2 、指定国产操作系统 3 、指定培训甲方维护人员 ... |
24
forgottencoast 248 天前
其实道理很简单,但是做起来可能很难。
把你们自己当成私有化的客户。 或者私有化部署多了,知道那些要抽象出来。 |
25
eephee OP 我们给客户支持到了浏览器的 >=80 版本,客户让我们再努力努力,支持他们电脑上面安装的 chrome 50 版本,在加 polyfill 中
|
26
youppos 167 天前
可以使用 helm 部署,配置可以提取出来作为变量。
另外,推荐一个功能非常丰富,开箱即用的 Devops 平台,可以免费使用白嫖。 推荐链接: https://ezone.work/signup?refer=kingdomLee |