首页 > 其他分享 >每日变更的最佳实践

每日变更的最佳实践

时间:2024-01-23 18:08:12浏览次数:28  
标签:实践 升级 最佳 发布 logic 组件 我们 变更


每日变更的最佳实践_正常运行


在优维公司内部,我们采用发布单的方式进行每天的应用变更管理,这里给各位介绍优维的最佳实践。

变更是需要多角色合作的,而且他是整体研发流程的一部分。在优维内部,我们坚持每日变更,打通开发环节到最终发布上线的全过程,在保证质量的前提下,尽可能提升需求交付速率,如下是我们的简要流程图:

每日变更的最佳实践_数据_02

其中最右侧【发布单】就是用EasyOps产品的【双态部署 - 发布单】来实现的。发布单用于记录应用程序的更改,包括:

  • 变更的内容
  • 变更的顺序
  • 影响的范围
  • 变更的结果
  • 操作的人
  • 操作的开始时间和耗时

这种标准变更方案有助于保证每日变更过程的有序可靠及高效。同时优维内部也把发布单的创建跟提测单对接起来,做到了全流程自动化。

大伙知道,发布绝不仅仅只是程序包版本的变化,他包括发布前的各种准备,部署过程以及部署之后的线上检查等。基于此考虑,我们的日常发布单是由升级前、升级、升级后三部分组成,如下是产品截图的全貌:

每日变更的最佳实践_数据_03

升级前

1.发送升级通知升级前通知各同事环境开始升级,避免升级过程中影响到环境的使用,这里使用的是调用钉钉机器人给各个关系群发送消息,客户可以根据实际情况采用不同通知方式.
在一些对客系统中,经常需要进行系统维护或升级的情况下,我们会考虑挂维护页面,以避免客户访问页面时出现报错或其他不良体验.
通过挂维护页面,我们可以向用户提供一些相关的信息,如维护的时间范围、维护目的以及预计恢复时间等。这样可以增加透明度,让用户了解系统维护的原因和进展。此外,维护页面还可以提供一些联系方式,以便用户在有需要时能够与系统管理员或客服人员进行沟通和交流。

这些都可以在发布单的前置动作去灵活配置

2.设置监控维护期这步骤内部没有设置,我们想清楚的看到升级过程中监控是否能够监控到服务的变化,实际使用时建议配置上,避免升级过程中收到误报.

升级

优维内部总共将近400个组件,每日变更的组件平均有20+,最多时候有50来个。组件之间有些是有部署依赖,有顺序要求,在如此庞大的组件清单里面我们如何去解决这个部署依赖的问题?对此,我们设立了一些标准:

  • 对组件进行分层(runtime -> runtime_db -> model_resource -> logic -> logic_db -> L1 -> L2 -> L3 -> xxx),层与层之间是串行部署的
  • 将所有组件归属到具体层级中,下层组件可以对上层组件有依赖,但同层组件不允许有依赖(如logic层的logic_x组件可以对runtime层的runtime_x有依赖)
  • 不同层有自己的并发部署设置,并发限定为1(串行)肯定是最为可靠和有序的,但他带来的是部署时长的增加,故我们需要依据不同层的特性,在保证稳定的前提下,尽可能提升部署效率

这里简单介绍几个重要的层:

model_resource(数据组件)这里主要放置了数据组件,他主要负责表结构的变更,我们要求我们的表结构是不能做破坏性变更的,故把他放在第一步,在升级过程中,即使表结构发生的变化,但逻辑组件应该也是能正常运行的。同时我们也会有专门的数据割接组件(logic_db层),如果有数据割接,就会在后续执行。

因为表结构的变更是非常严谨的,故在这个阶段我们采用串行执行的方式。
虽然串行执行的方式可能会导致导入模型的时间变长,但它可以有效地控制数据库的负载,确保系统的稳定性和可靠性。

逻辑组件(logic)逻辑组件可以被理解为无状态应用,它们之间相互独立,没有依赖关系。由于这种独立性,我们可以采用并发执行的方式来提高发布速度,当前并行度我们设置为3。
通过并发执行逻辑组件,我们可以同时处理多个组件的发布任务,而不需要按照严格的顺序逐个执行。这样可以显著提高发布的速度和效率。每个逻辑组件都可以在独立的线程或进程中执行,充分利用多核处理器和分布式计算资源,以实现并行处理。

前端组件(L5)优维微应用是前端组件,同样是无状态组件,但在某些情况下可能会依赖于后端逻辑组件。针对这种情况,我们将微应用的处理与逻辑组件分开,分成前后两个阶段进行处理。
在本阶段, 我们并发执行微应用的变更,当前并行度我们同样设置为3。

升级后

升级后我们会做一些升级后的通知和检查工作,包括:

1.发送升级完成通知通知各同事环境已就绪,可以正常使用,同时做一些人工验证。

2.触发自动化冒烟在升级后的环境中,通过自动化测试可以快速执行一系列测试用例,验证系统在升级后是否正常运行,是否满足预期的功能和性能要求。

3.计算升级过程中平台可用性计算升级过程中平台可用性,用于评估升级对客户的影响,后续分析如何进一步优化缩小对客户的影响。

标签:实践,升级,最佳,发布,logic,组件,我们,变更
From: https://blog.51cto.com/u_15605878/9381592

相关文章

  • 2023 年度龙蜥最佳用户案例奖揭晓,中国移动、小红书、中国人寿财险等企业上榜!
    近日,在2023龙蜥操作系统大会上,龙蜥社区公布了2023年度最佳用户案例获奖企业名单,龙蜥社区副理事长张东、理事李祥凯为中国移动、小红书、中国人寿财险等13家获奖企业颁奖。本次获奖企业是从使用龙蜥操作系统社区版(AnolisOS)或商业版/衍生版的企业用户中进行评选,涵盖政务、互联......
  • [转帖]小米Redis的K8s容器化部署实践
    https://juejin.cn/post/6844904196924276743   背景WhyK8SHowK8sWhyProxyProxy带来的问题K8s带来的好处遇到的问题总结 背景 小米的Redis使用规模很大,现在有数万个实例,并且每天有百万亿次的访问频率,支撑了几乎所有的产品线和生......
  • 用户画像系列——在线服务调优实践
    前面文章讲到画像的应用的几个方面,其中画像的在线服务应用主要是在推荐场景、策略引擎场景,这两部分场景都是面向线上的c端服务。推荐场景:根据不同的用户推荐不同的内容,做到个性化推荐,需要读取画像的一些偏好数据,推荐感兴趣的内容。策略引擎:根据用户的属性进入到不同的页面或者给......
  • Gitlab端口变更
     自己云服务器的80和8080端口都已经被使用,只能被迫修改gitlab监听的端口external_url'http://172.17.30.23:8077'#这里一定要加上http://nginx['listen_port']=8077gitlab_rails['smtp_enable']=truegitlab_rails['smtp_address']="smtp.qq.com&......
  • Java垃圾回收机制:理解与实践
    Java语言的一个显著特点是其自动内存管理,即垃圾回收(GarbageCollection,GC)。GC可以自动监控每个对象的引用情况,当一个对象不再被引用时,GC会自动释放该对象占用的内存。这大大简化了开发者的内存管理工作,但也带来了性能上的挑战。本文将探讨Java中的垃圾回收机制,并通过代码示例解释......
  • 应用集成(iPaaS)和数据集成(ETL)高效协同的最佳实践
    随着企业数字化的步伐加快,企业IT工程师和数据工程师在应用和数据集成方面的工作变得日益密切。IT工程师通常利用iPaaS(Integration Platform as a Service)来进行异构应用和数据的集成,而数据工程师则倾向于使用ELT/ETL(Extract, Transform, Load)工具来进行数据集成。两者之间如......
  • Prometheus最佳实践 Summary和Histogram
    本文分享自华为云社区《Prometheus最佳实践Summary和Histogram》,作者:张俭。前言Histogram和Summary都是复杂的指标,不仅仅是因为直方图和summary包含了多个时间序列,而且它们还较难使用正确。观测中的Count和SumHisto和summary都是采样观测,典型的采样维度有 响应大小 和 ......
  • 民生银行牛新庄:大数据及分布式技术在银行系统中实践应用
    把底层所有技术打通,这些技术就像ATM数据,柜台有的数据是柜台的数据,所有数据打通,第一我可以节省很多的现钞,这些现钞可以拿出去放贷款,现在流动性这么紧张。第二,你可以节省很多的成本,大家想一想,如果说这样做的话,我每天不需要那么多押运车押运。我举这个例子,这是数据,过去为什么没做到?底......
  • 快速尝试想法的实践体会
    现在总结是两种,一种是单拎一个文件出来修改,采用前面out-of-project的方式编译。可以写Makefile,也可以写CMakeLists.txt实现更自由的定制。这种方式的有点是,单拎的文件修改起来阻力更小。缺点是,调试、后期合并工作更麻烦。适合临时项目和预研项目,不适合长期发展的项目另外......
  • 一种行之有效的防错策略:在支付系统中实施防呆设计的实践
    聊个支付人都会碰到的问题:资损防控。做支付如果还没有碰到过资损,那就是做得时间还不够久。资损防控是一个很大的话题,需要开几篇文章才能讲完,今天只从一件小事入手聊一个简单而又行之有效的防错策略:防呆设计的实践。1.一个线上事故曾经处理过一个资损事件,很典型,值得说道说道。一个......