生产环境发布管理

简介: 本文介绍大型团队中多环境自动化部署的实践方案。通过CI/CD平台实现从开发(dev)到测试(test)、灰度(pre)再到生产(prod)的全流程管控,涵盖环境职责划分、分支管理、容器化部署及热更新回滚机制,提升发布效率与系统稳定性。

在一个大型团队中,生产发布是一件复杂的事情,从dev(前后端联调)-->test(测试集成&压力测试)-->pre(灰度测试)-->prod(生产环境)的多环境推进,以及生产环境的热更新、回滚等问题一直在困扰着各个公司,今天我将基于公司的自动化部署平台为大家讲解下我们是如何做到多环境部署。

每个环境做什么

在明确发布之前,我们需要明确一下每个环境的主要职责和角色:

DEV:也叫开发环境

  • 事项:前后端接口联调,修复代码基础缺陷
  • 角色:前端-后端

TEST:也叫测试环境

  • 事项:测试集成测试、压力测试,开发修复bug
  • 角色:开发(前端后端)、测试

PRE:也叫灰度环境

  • 事项:生产环境冒烟测试,切5个左右真实生产数据,回归流程是否有问题
  • 角色:开发(前端后端)、测试

PROD:也叫生产环境

  • 事项:发布代码,做真实环境验证,有问题第一时间修复(sql止血订正或代码回滚)
  • 角色:开发(前端后端)、测试、运维
  • 在一个大型团队中,生产发布是一件复杂的事情,从dev(前后端联调)-->test(测试集成&压力测试)-->pre(灰度测试)-->prod(生产环境)的多环境推进,以及生产环境的热更新、回滚等问题一直在困扰着各个公司,今天我将基于公司的自动化部署平台为大家讲解下我们是如何做到多环境部署。
  • 大型公司如何管控代码发布

随着自动化部署CI/CD(DevOPS)成熟,目前大型公司都开始搭建自动化部署平台

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

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

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

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

需要注意的是:假设我们需要对A分支进行发布,只需要勾选A分支,底层Jenkins会自动完成jar包构建,并执行底层的Docker run指令完成容器部署,这里部署的jar包每个环境都是隔离的。

即dev的jar跟test无关,每次都是新构建自己的。即使是test,点击两次发布也是构建了两个jar,只不过第二次的会覆盖第一次。这点各位需要明晰。

当测试提出我们有bug时,对应的开发人员就需要在idea中,A分支上完成代码修复并push,然后在自动化部署平台重新勾选分支,然后提交部署,完成一次重新发布,循环此过程,直至缺陷被修复。


相关文章
|
3月前
|
Java Maven Spring
SpringBoot中如何自定义starter
自定义Spring Boot Starter通常包含两个模块:starter负责依赖管理,autoconfigure实现自动配置。前者引入后者。在autoconfigure中,通过@Configuration和@Bean定义配置类与Bean,并结合@Conditional条件注解控制Bean的创建;最后在META-INF/spring.factories(或Spring Boot 3的xxx.imports文件)中注册自动配置类全名,完成自动化配置。
|
3月前
|
存储 弹性计算 人工智能
大模型应用开发
大模型应用开发需通过API与模型交互,企业可选择开放API、云平台或本地服务器部署。开放API使用便捷但存在安全与成本问题;云部署易维护但仍有隐私风险;本地部署安全性高、长期成本低,适合企业级应用,不建议个人电脑部署。
|
3月前
|
Java Spring
Spring Boot配置的优先级
SpringBoot项目支持多种配置方式,主要包括配置文件(application.properties、yml、yaml)和外部配置(系统属性、命令行参数)。优先级从高到低为:命令行参数 > Java系统属性 > application.properties > application.yml > application.yaml。
|
3月前
|
安全
HTTP协议中请求方式GET 与 POST什么区别
简介:GET和POST是项目开发中最常见的两种请求方式。GET通过URL传递参数,长度受限且安全性低,适用于获取数据;POST通过请求体传参,更安全,适合提交数据。现代项目多采用RESTful风格,统一通过URL定位资源,结合GET、POST、PUT、DELETE等方法实现资源操作,结构清晰、易于维护。
|
3月前
|
Java Maven Spring
SpringBoot中如何自定义starter
自定义Spring Boot Starter通常包含两个模块:starter负责依赖管理,autoconfigure实现自动配置。前者引入后者,并通过@Configuration和@Conditional定义配置类,在spring.factories或SpringAutoConfiguration.imports中注册,实现按需自动装配,便于多项目复用。
|
3月前
|
SQL 监控 关系型数据库
如何定位出项目中的慢SQL
在项目开发中,定位慢SQL是常见问题。可通过链路追踪工具(如SkyWalking)分析调用链耗时,精准定位慢接口及慢SQL;若无监控工具,可开启MySQL慢查询日志,配置阈值记录执行时间较长的SQL,进而优化性能。
|
3月前
|
Java Spring
Spring Boot配置的优先级
SpringBoot项目支持多种配置方式,主要包括配置文件(application.properties、yml、yaml)和外部配置(系统属性、命令行参数)。优先级由高到低为:命令行参数 > Java系统属性 > application.properties > .yml > .yaml。
|
3月前
|
数据库 索引
索引创建的原则
创建索引需遵循六大原则:针对数据量大、查询频繁的表;在常用作查询、排序、分组的字段上建索引;优先选择区分度高或唯一的字段;varchar字段建议使用前缀索引;尽量创建联合索引,高区分度字段前置;避免过多索引,以降低维护成本,提升查询效率。
|
3月前
|
Nacos 微服务
Nacos与Eureka的区别
Eureka与Nacos均支持服务注册发现、健康监测及集群部署,默认采用AP模式保障高可用。区别在于:Nacos心跳间隔更短(5秒),超时剔除更快,支持配置管理与服务变更广播推送,而Eureka仅提供注册中心功能,更新依赖定时任务。
|
3月前
|
关系型数据库 MySQL 数据库
什么是事务以及事务的四大特性
事务是数据库操作的基本单元,具备ACID四大特性:原子性、一致性、隔离性、持久性。并发事务可能引发脏读、不可重复读、幻读等问题,数据库通过不同隔离级别(如读已提交、可重复读、串行化)加以控制。MySQL默认采用可重复读级别,在保证数据一致性的同时兼顾性能,避免高隔离级别带来的性能损耗。

热门文章

最新文章