生产环境发布管理

简介: /

前言
在一个大型团队中,生产发布是一件复杂的事情,从dev(前后端联调)-->test(测试集成&压力测试)-->pre(灰度测试)-->prod(生产环境)的多环境推进,以及生产环境的热更新、回滚等问题一直在困扰着各个公司,今天我将基于公司的自动化部署平台为大家讲解下我们是如何做到多环境部署。
每个环境做什么
在明确发布之前,我们需要明确一下每个环境的主要职责和角色:
DEV:也叫开发环境
事项:前后端接口联调,修复代码基础缺陷
角色:前端-后端
TEST:也叫测试环境
事项:测试集成测试、压力测试,开发修复bug
角色:开发(前端后端)、测试
PRE:也叫灰度环境
事项:生产环境冒烟测试,切5个左右真实生产数据,回归流程是否有问题
角色:开发(前端后端)、测试
PROD:也叫生产环境
事项:发布代码,做真实环境验证,有问题第一时间修复(sql止血订正或代码回滚)
角色:开发(前端后端)、测试、运维
大型公司如何管控代码发布
随着自动化部署CI/CD(DevOPS)成熟,目前大型公司都开始搭建自动化部署平台,形如下图:

环境管理应用监控分支应用部署部署信息配置管理应用模版流水线模板二方包

ICATION/DETAIL/OVERVIEWID=924&APPCODE=HBOS-IN

白检验白PDA白开发文档白业务文档白其他白架构小林CODING

S-INPATIENT住院工程在线发布

百度一下开发者搜索检验二

CA不安全|

正在讲话:何波;SSG;

1您正在共享屏幕

HBOS-INPATIENT

O微服务组化

双集群管理

目数据管理

应用分类

四监控管理

GIT地址

流量地图

HBOS-INPATIENT

NPATIENT.GIT

诊应用管理

8口L

业务站

X十

其他书签

自工单管理

APPCODE

应用类型

巨项目管理

只国

应用名

TT:口L

应用部署名

应用组

住院工程

概要

1

8口

HBOS

后端

8杉

日志管理

9

修改

8口

8口

81

说点什公..

责任人

9

概述环址

2

R1

件.V

R1

S

口版本管理


图1 (自动化部署平台应用主页)
当用户进入应用主页后,会发现有不同的发布环境,每一个环境对应一台服务器、一个访问域名、一组中间件环境(即dev、test等环境的nacos-mysql等都是分环境部署的)。

HBOS1.0开发基准

项目环境分类

目环境分类

境名:请输入环境名

请输入环境CODE

开启CODEREVIEW

流水线模板

环境大类

环境CODE

环境大类:

环境类型

HBOS1.0测试基准

默认分类

默认分类

环境CODE:

启用发布审批

应用模版

部署信息

环境管理

基准环境

配置管理

应用监控

HBOS-INPATIEN

应用部署

二方包

HBOS-TEST

查询

HBOS一DEV

环境名

绑定环境

环境名:

基准环境

重置

概述

控分支

环境

环境

HBOS

批备注

TEST

HBOS

CEV

D

AA


图2 (自动化部署平台多环境)
同时自动化部署平台会自动整合公司的gitlab,将分支展现在发布平台,以便用户可以界面化操作和部署

总共64条数据<1234567>10条/页V

住院医护应用日志优化-HBO..

BOS-INPATIENT住院工程在线发布应用

G-PDA-SURGERY_20230710135753订

编辑创建REVIEW作废

K_PREMISSION_20230711140358

UT_DEPT_WARD_20230711180509

院医护应用抛异常优..FONE

PED_SURGERY_WG_20230711155401

2_20230710094804司

,住院护士站->医嘱执..IONE

,[技改]住院工程添加...IONE

住院护士站->)医嘱执行-)..

PDA入手术间,介入手术,...

住院护士站-今日手术..,FONE

[住院医生站]患者转..FONE

ANDOVER_WG_20230711154825

住院护士站-今日手术明日手.

士站]岗位权限未..,FIONE

...出院带药/自理药护士..,FONE

院医护应用日志优化..IONE

PDA入手术间,介入手...IONE

7WXB20230707164601厅

院带药/自理药护士站时间..,出院

理交接班]交班患..FONE

SSERTS_202307101440197

编辑创建REVIEW作废

IJ1_20230710170958司

编辑创建REVIEW作废

[住院医生站]患者转科

[技改]住院工程添加断言..

分支名:搜索分支

编辑创建REVIEW作废

编辑创建REVIEW作废

[护士站]岗位权限未生效

编辑创建REVIEW作废

编辑创建REVIEW化

编辑创建REVIEW作废

[护理交接班]交班患者数.

干分支:MASTE

森脑.弗T而尸控件代

编辑创建REVIEW作废

麻脑利!弗质日陈生朵IO

关联FONE/REGULUS

流水线模板二

伯妈创神口人IN,E应

EVIEWID操作

220118

FEATURE

新建分支

BUGFXG

人NLIANNNON7N71玩N7O0

FEATURE

应用部薯

UGFXG

环境管理

220272

FEATURE

FEATURE

FEATUREL

应用监控

19896

20933

220925

FEATUREL

部薯信息

220817

应用模版

FEATURE

配置管理

220461

220312

21064

二方包

分支名

10770

描述

既术

人人+人


图3 (自动化部署平台分支管理)
当用户需要创建分支时,不再需要像传统的那样去git创建,或者idea创建,而是可以直接在当前发布平台创建(底层是一样的,都是创建一个新的git分支)

91条数据<12345...10>10条/页

编辑创建REVIEW作废

编辑创建REVIEW作废

HBOS一DTC诊疗中心|在线发布应用

编辑创建REVIEW作废

编辑创建REVIEW作废

编辑创建REVIEW作废

取消确定

主干分支:MASTE

编辑创建REVIEW作

编辑创建REVIEW作废

FEATURE_GINGQUAN

故障O任务

通过..FONE

编辑创建REVIEW作

报错..FONE

描述:请输入描

ATUREMISHA

FEATURE_SANMU

BUGFX_LIULI_SAVE

EATURE_DONGLIX

变更..,FONE

FEATUREDONGLIX

FEATURE_LIULI_CU

REVIEWID操作

FEATUREHUANAII

ATUREJIYUNFE

*关联平台:O

关联类型:

列表:PD-HBOS

30711124230

EATURE_HUAYU

套餐..FON9

化...FIONE

新建分支

221093

内容列表@:

流水线模板

署部署信息

支持.FONE

主干分支:

221059

口...FONE

分支名称:

4646Q

环境管理

配置管理

应用监控

220637

报错FON

应用模版

220652

161853Q

220959

项目列表:

220630

应用部署

:MASTER

220376

新建分支

分支名

需求

O缺陷

OREGULUS

220789

二方包

概述

分支


图4 (自动化部署平台分支创建)
当用户需要发布时,只需要进入对应的环境(这里我们以test为例),勾选所需要发布的分支,即可实现自动化部署。下图可以看到test环境同时部署分支约20个。

1EUEYMTS9ENOIEOEAILETOUL2EI0I194E1NSEUEVIEDOIO.ON.MOH1.00O7OA195EFERELYENIR2LIEOPNG223029N3SFESUEUHEIE

MWN2OEOERE5RETUEBULSNECNARGE20EONESAEODEUREOINGAESOERTEASOD2OCOEON5OTETUEAERMIAAITIETLOAIBSENRER9HETSE

APEN2POEMOEIREOELARIN2OITIETEFATAEAC,AEIAPANETTE20N2EFATRGENLETATINUI.EUE.2IO0ERETARUAE.INREE.OAIA

ATUIREXINYLSUPLEMENTAYFESPRESORPTON2023070E02345,BUGHYSHYING.CANOL,EVEOUTE2023070193714,FEATUREQINGQUARNS-PDA-

TAEOSEREETATUEIAEANNAEAINAERTATATAOAOEABUTOARAOETAOERNEANEOAE.ASONOTATIETETHATETRENETIONTNADEOANTENITOE

20230704134339,FEATURE_WANZI_DOCTOR_ORDER_TYPE-20230ODOETT

FEATURE_QINGQUAN_SSQ-PDA-SURGERY_20230710135753可

.TRACELOG20230621184642.FEATURE_WANZLIS-SEL-PAY-2UE

BUGFX_QIANHUA_CHECK_PREMISSION_20230711140358划

BUGFX_QINGSHAN_EY1IJ120230710170958可

分支RELEASE_HBOS-INPATIENTTEST_DEFAULTPIPELINE_20230629120734

FEATURE_WANZILIS_SELF_PAY_20230707112457日

FEATURE_AZU_BACKFEE_MC_VALID_20230707150738

请选择:HBOS-INPATIENT_TEST_默认...V

住院护士站->医嘱执行-)执行详情-)修

OS-INPATIENT住院工程|在线发布

发布时间:2023-07-1115:27

当前流水线:HBOS-INPATIENTTESTDEFAULTPIPELINE请

发布时.2J23-07-1115:54:4

新提交退出分支

醉收费-项目补费需识别是否自

DA入手术间,介入手术,住院手术需做隔离提

?)合并分支日

发布时间:2023-07-1118:34:22

2023-07-1017:09:5

镜像构建日

)依赖校验

2023-07-1114:04:0

布时.L.23-07-119:07:39

醉科补费项目筛选优化

VMAVEN构建[

发布时间2023-07-1116:26:3

2023-07-1013:57:55

发布时间:2023-07-1116:56:3

发布状态:发布失败

发布状态:发布完成

[护士站]岗位权限未生效

发布状态:发布失败

2023-07-0711:24:59

发布状态:发布完成

部署日

发布状态:发布失败

流水线模板二

完成

支REVIEW状流

2023-07-0715:07:40

发布时L.CUCJ-07-1114:53:4

HBOS1.0测试基准环境

发布状态:发布完成

]发布门三

丫开始

发布,

发布内容

变更原因

合并分支

创建时间

内容列表

发布环境

版本发布

发布人:

分支名

看部奢信息

创建

发布人:

22046

发布人:

布人:

应用模版

部署分支

219670

部署信息

219773

220272

发布状态:发布完

EATURE_XINYI_SUPPLEMENTE

2081

发布入,.

TATNSEACTAIET02029EEIN2C20A20057AELR2AE1ERFEP0C2AEA52EEAL2

情->修改执...

PROD

发布时

详情

分支

用部署

详情

.....ONOANEOA1SOE31FEATUREBUIADMISSION_0621_20230616114631.FEATUREJINGCH

详情

详情


图5 (自动化部署平台提交发布)
需要注意的是:假设我们需要对A分支进行发布,只需要勾选A分支,底层Jenkins会自动完成jar包构建,并执行底层的Docker run指令完成容器部署,这里部署的jar包每个环境都是隔离的。
即dev的jar跟test无关,每次都是新构建自己的。即使是test,点击两次发布也是构建了两个jar,只不过第二次的会覆盖第一次。这点各位需要明晰。
当测试提出我们有bug时,对应的开发人员就需要在idea中,A分支上完成代码修复并push,然后在自动化部署平台重新勾选分支,然后提交部署,完成一次重新发布,循环此过程,直至缺陷被修复。
如何排查日志
当测试提出某个环境有bug时,如果是传统Linux直接部署,我们会登录到指定的服务器用cat、grep、vim等指令进入日志文件,然后找到错误的堆栈信息。如果有结合Arthas的(Arthas排查错误)可以启动Arthas查看错误信息。但是现在一般都是会借助于Skywalking或ELK进行日志查看

RACELD:36606E562FEA44D0A62D527473FE48DE.494.168907997086..V

C2F-REPEATER-CONSOLE/MODULE...

VAPEX-OSC/COM.C2F.APEX.OSC.CLIENT.API...2023-07-1120:45:59

COM.C2F.BOOT.BASE.LOG.WRAPPER.SUPPLIERCLEAR..2023-07-11

VAPEX-OSC/COM.C2F.APEX.OSC.CLLIENT.API.SER...2023-07

MYSQ/JDB/PREPAREDSTATEMENT/EXE.

Q降噪:忽略REDISSONX合并理表格

开始时间:2023-07-1120:52:50持续时间:3177MS

MYSGL/JDBL/PREPAREDSTATEMENT/EXE..

MYSGL/JDBL/PREPAREDSTATEMENT/EXE...

选择环境:HBOS1.0测试基准环境

/C2F-REPEATER-CONSOLE/MODULE/...

端点:/DRAGON-BOAT/APPREGISTER

(1...34567..

PEX-OSC/COM.C2FAPEX.OSC.CLIE...

时间范围:2023-07-1120:43:06

DRAGON-BOAT/APP/REGISTER

/DRAGON-BOAT/APP/REGISTER

2023-07-1120:58:06日最近15分钟

3344MS2023-07-1120:51:32

DRAGON-BOAT/APP/REGISTER

3134MS2023-07-1120:52:28

LETTUCE/HGET/ACCEPT

3518MS2023-07-1120:55:

GET/DICT/DEFAULT/STAFF

3249MS2023071120:44:58

152MS2023-07-1120:56:13

3151MS2023-07-1120:53:2C

2023-07-1120:45:59

DRAGONBOAT/APP/REGISTER

POST/DIRECTORY/LIST

STARTTIME

2023-07-1120:46:00

2023-07-1120:45:59

177MS2023-07-1120:52:50

2023-07-1120:45:59

SER...2023-07-1120:45:59

VLETTUCE/HGET/ONCOMPLETE

RACELD:请输入TRACEID

2023-07-1120:45:59

2023-07-1120:46:00

2树状

EXEC(%O)

2023-07-1120:45:59

ETTUCE/HGET

2023-07-1120:45:59

SELF(MS)

CE-PLATFORN

2023-07-1120:45:59

ACE-PLATFOR

CE-PLATFORM

EXEC(MS)

MYSGL-CON...

更多查询,

CE-PLATFORR

METHOD

ACE-PLATFORN

NKNOWR

MYSGL-CON..

SQL-CON...APEX

SERVICE

3183M

查看日志

列表

3205MS

3579MS

CE-PLATFORR

3705MS

ETTUCE

74MS

ETTUCE

3579MS

MYSQ-CON

SPRINGMVC

DUBBO

API

ETTUCE

3205MS

UBBC

6MS

查询

OMS

OMS

MS

OMS

9MS

重置

0MS

OMS

MS

APEX

..,APEX

MS

2023-07-1120:45:59

7MS

6MS

APEX

MS

3152MS

MS


图6 (自动化部署平台日志排查)
在上图中我们就可以看到:一个GET请求,请求路径是:/dict/default/staff,然后一个远程服务调用,使用的dubbo,最后查询mysql数据库,这样就完成一个完整的日志链路追踪。
如何回答相关问题
1.你们公司如何部署发布
方案一:Linux原生部署
我们公司的部署呢,还是比较原始的,就是直接部署在原生的Linux系统,我们平时dev发布就在idea构建好一个jar包,然后用XShell上传上去,用指令:nohup java -jar tj-learning.jar启动。测试环境和生产也是一样的操作
方案二:基于Jenkins的自动化部署平台
我们公司的部署都已经非常成熟了,有一套自动部署平台,底层是Jenkins+K8S实现自动化部署发布,我们只需要在dev、test、prod等环境勾选需要发布的分支就行,它全帮我们做好了自动部署。
2.你们公司怎么排查错误
方案一:Linux原生环境
我们公司的部署呢,还是比较原始的,就是直接部署在原生的Linux系统,所以排查日志也需要自己去找到error.log,然后手动找到报错的堆栈信息,分析出原因。比如有个NPE(NullPointException-空指针异常),就会显示具体哪行报错,我们就会分析、修复。
方案二:基于Docker的原生平台
我们公司目前的部署就是原生的Docker,通过docker logs命令人肉排查
方案三:基于Skywalking的日志检索平台(CI/CD平台)
对于日志排查,我们公司是有Skywalking的,只需要测试给我对应的traceId,我输入进去就可以看到完整的调用链路和报错的堆栈信息,然后就可以分析报错原因并修复了


相关文章
|
13天前
|
数据采集 人工智能 安全
|
8天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
666 4
|
8天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:七十、小树成林,聚沙成塔:随机森林与大模型的协同进化
随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高准确性和稳定性。其核心思想包括两个随机性:Bootstrap采样(每棵树使用不同的训练子集)和特征随机选择(每棵树分裂时只考虑部分特征)。这种方法能有效处理大规模高维数据,避免过拟合,并评估特征重要性。随机森林的超参数如树的数量、最大深度等可通过网格搜索优化。该算法兼具强大预测能力和工程化优势,是机器学习中的常用基础模型。
350 164
|
7天前
|
机器学习/深度学习 自然语言处理 机器人
阿里云百炼大模型赋能|打造企业级电话智能体与智能呼叫中心完整方案
畅信达基于阿里云百炼大模型推出MVB2000V5智能呼叫中心方案,融合LLM与MRCP+WebSocket技术,实现语音识别率超95%、低延迟交互。通过电话智能体与座席助手协同,自动化处理80%咨询,降本增效显著,适配金融、电商、医疗等多行业场景。
359 155