每日变更的最佳实践

敏捷开发中编号项目管理的最佳实践 在软件开发领域,项目管理是确保项目按时交付、质量达标的关键环节。敏捷开发作为一种流行的开发方法论,强调快速迭代和持续交付,其中编号项目(如project-2)是常见的实践方式。这类项目通过数字编号来标识不同的迭代周期或子模块,虽然简化了命名流程,但也带来了需求边界模糊、知识传递困难等挑战。通过引入业务领域标识、建立详细的项目章程以及使用Jira、Trello等敏捷管理工具,可以有效提升项目管理效率。特别是在金融系统升级、电商平台开发等场景中,合理的项目管理实践能够显著降低风险,提高团队协作效率。本文结合实际 阅读详情

图片

图片

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

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

图片

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

  • 变更的内容

  • 变更的顺序

  • 影响的范围

  • 变更的结果

  • 操作的人

  • 操作的开始时间和耗时

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

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

图片

升级前

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

云计算:从基础架构原理到最佳实践之:云计算容错与高可用性 作者:禅与计算机程序设计艺术 1.简介 概述 “云”这个词汇已经成为互联网行业的热门话题了。虽然“云”目前并不等同于真正意义上的云计算技术,但确实给人们带来了更多方便、快捷、便利的服务。云计算通过利用大量分布式计算资源实现各种业务的快速部署和自动化,极大的提升了各组织机 阅读详情

相关推荐

解读软件架构的复杂性:业务和技术的双重挑战

本文探讨了软件架构中的复杂性及其对业务成功的影响。随着技术和业务环境的快速变化,架构师面临着管理日益增加的复杂性挑战。文章分析了影响架构复杂性的关键因素,如技术选择、团队协作和需求变更,并提出了一系列应对策略,包括明确的架构决策流程和持续的架构评估。通过强调沟通与合作,架构师可以更有效地应对复杂性,从而为企业创造持久的价值。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 6万+

Azure可用性保障最佳实践中文版

作者:王文勤 时间:2017-12-10 1,应用程序设计 避免任何单点故障 所有的组件、服务、资源以及计算节点都应该部署成多个实例,以此来避免单点故障导致可用性受影响。比如虚拟机资源,同一应用的虚拟机要部署成多实例,当单个实例故障时,服务不受影响。 认证机制也要避免单点。将应用程序设计为可以通过配置来使用多实例,并将不能自动化的平台改造成能自动检测失败,并将请求跳转到没有失败的实例上。 ...

zhinengyunwei的博客 418

PMP–一、二、三模–分类–变更–技巧–敏捷变更

A:项目章程B:问题日志C:变更管理计划D:确认范围过程DA:审查迭代待办事项列表,因为产品定义已经改变,需要在继续项目之前重新评估。B:继续工作,并要求产品负责人评估变更,并根据待办事项列表中的需要添加/删除用户故事。C:请业务分析师评估变更,然后在待办事项列表中添加/删除用户故事,并根据商业价值对它们进行优先排序。D:要求产品负责人将新的变更添加到待办事项列表的底部,以便将变更作为变更请求来处理。AB。

stqer的博客 1959

当面试官问你CAS,他到底在问什么?

良心公众号关注不迷路在搞研发的小伙伴心目中,CAS是一个多义词,其既可以表示CAS(Compare and Swap)无锁算法,又可以表示CAS(Central Authenticati...

W_J_G_的博客 347

单细胞分析避坑指南:SCTransform和Harmony参数设置详解

本文深入解析了单细胞分析中SCTransform标准化与Harmony批次校正的关键参数设置。针对10x Genomics等数据,详细探讨了如何通过调整`vars.to.regress`、`theta`等核心参数,在有效去除技术噪音的同时,避免过度校正以保留关键的生物学差异,从而提升分析结果的可靠性与可解释性。

weixin_29053073的博客 610

【C++】POCO学习总结(六):线程、线程池、同步

Poco::RunnableAdapter继承自Poco::Runnable,在Poco::RunnableAdapter构造函数中指定了类和方法;Poco::ThreadLocal是线程局部变量,也叫线程局部存储,意思是模版ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。

郭老二 5100

揭秘云计算 | 6、如何建云?云计算最佳实践五原则

兵法云“知己知彼,百战不殆”​,今儿咱先聊聊云计算最佳实践的五个原则!

Ultipa的博客 1426

【Konva】解决图形加入group后无法获取到绝对坐标,以及group内绘制新图形坐标偏移的问题

解决konva绘图开发时“图形加入group后坐标不会变动,无法获取到绝对坐标”的问题

近10年前端开发工作经验,为你分享日常经验所得 1500

SVN之使用之注意要点

SVN之使用之注意要点 每日进行开发工作之前务必要更新本地代码,以获取SVN上的最新版本代码。避免与昨天其他开发者的代码冲突。 在确定要修改某一个文件之前,务必更新本地文件以获得该文件的最新版本,然后再做改动! 代码变动后并在测试完毕确保没有问题之后要及时提交,避免丢失本地修改后无法恢复。 SVN更新的原则是要随时更新,随时提交。当完成了一个小功能,能够通过编译并且自己测试之后,谨慎...

无名小卒菜的博客 364

告别玄学调参:手把手教你用LSTM-AutoEncoder为传感器数据做异常检测(实战篇)

本文详细介绍了LSTM-AutoEncoder在传感器数据异常检测中的工程化实践,包括数据预处理、模型架构设计和生产环境部署策略。通过结合LSTM的时间序列处理能力和AutoEncoder的特征提取优势,该方法能够有效识别温湿度、PM2.5等传感器数据的异常模式,适用于工业物联网和室内空气质量监测等场景。

weixin_29212429的博客 477

【补充篇】三万字了解AUTOSAR软件架构(一)

主要讲解了AUTOSAR软件架构的分层及各个栈的作用

weixin_47571898的博客 1120

《Rapid Development:Taming Wild Software Schedules》阅读(五)

第三部分 最佳实践 第十七章 变更委员会(change board)——项目中多部门一起工作,多项目中的变更进行批准或拒绝! 1、主要效果:降低项目进度风险!——建议长期使用!   2、主要风险:批准的变更太多或太少;   3、相互影响:可以与其他实践方法自由结合使用;   第十八章 每日构建和冒烟测试(daily build and smoke test)——持续集成,提高开发效

makunyuan123的专栏 654

RISC-V CPU设计(三)---多周期CPU的设计与实现

基本情况 本多周期CPU支持RV32I指令集(fence,ecall,ebreak除外),已通过部分指令的测试,如代码有bug,欢迎指出。 模块划分 代码将CPU划分为以下几个模块: 1.控制单元:ControlUnit 用于产生控制信号,是CPU的大脑,指挥中枢。 2.分支决策单元:BranchUnit 用于决定B型指令是否发生跳转 3.立即数单元:ImmUnit 用于从指令中解析出立即数. 4.寄存器堆:RegisterFile RISC-V的32个寄存器,其中x0寄存器恒为0,不可更改。 5.指令存储

qq_40268672的博客 5542

氢气传感器抗中毒技术解析:新国标与HB14-J2如何保障长期稳定

电化学气体传感器是氢气检测的核心器件,其工作原理基于氢气在敏感电极上的催化反应。然而在实际工业环境中,硅氧烷、硫化氢等干扰气体会与催化剂活性位点结合,导致传感器灵敏度衰减甚至失效,这一“催化剂中毒”问题长期困扰现场运维。随着新国标GB 15322.1-2025将抗中毒测试引入氢气传感器强制要求,行业开始从“能检测”转向“可靠检测”。针对这一痛点,采用复合催化体系、优化透气膜与扩散阻层设计的三电极电化学氢气传感器,在实验室认证与实测工况中均展现出优异的抗中毒能力和长期稳定性。在地下室、加氢站、储能电站等高风险

axfcjwkbi259888707的博客 303

Claude Code 错误解决方案 使用策略拒绝 Usage Policy refusal

摘要:本文分析了Claude Code API请求被拒绝的问题,当违反Usage Policy时会显示错误提示。根因包括请求内容违规、模型敏感度差异或历史消息影响。解决方案包括修改请求措辞、切换至Sonnet 4.5模型或开启新会话。文章详细追踪了错误链路,提供了核心代码分析,并给出验证方法和最佳实践建议,帮助用户避免触发API拒绝机制。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 988

气象水文资料预处理:缺测数据插补延长等

简介气象水文资料预处理

WW、forever的博客 3772

【Git】当分支 A 销毁后,如何让分支 B 完美同步已合并的代码?

Git分支同步实战指南 当分支A合并到master后被删除,而分支B需要其代码时,可通过以下步骤处理: 确认代码位置:分支A的代码已保留在master中,无需找回原分支。

经天纬地,格物致理 324

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【Leetcode 每日一题】3019. 按键变更的次数

Leetcode 每日一题 - 按键变更的次数

冠位优化 1042

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

敏捷迭代管理 --每日站会

本文在研发组织管理中的位置: 研发组织管理--项目管理--敏捷迭代管理--每日站会 目的 1、同步信息,抛出问题; 2、周知需求变更及调整; 时间&频次 1、每天一次固定时间, 开始时间由master安排; 2、时长由master控制(通常n+5分钟内); 议程 1. master整理准备看板. 2. 以产品,研发,测试顺序对属于自己的卡片状态进行更新 产品--是否有需求变更(非站会时更新的需求变更研发经理及RD不能接) 研发--今天做了什么,有没有遇到什么问题, ...

软件猿扫地僧 1552

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

项目进度跟踪的最佳实践:每日站立会议

项目进度跟踪的最佳实践:每日站立会议1 每日站立会议的具体做法每日站立会议是Scrum方法中的一条关键实践,看似很简单的一个活动,其实内涵丰富,站立会议通过每天面对面的沟通,可以:  (1)快速同步进展,让项目组内部的员工互相了解彼此的进展,从而了解本项目的整体进展。  (2)给每个人一种精神压力,信守承诺。这是一种面对面的精神压力,直面项目进展。  (3)培养团队的文化,让每个人意识到:我不是一

麦哲思科技 1万+

Docker diff 命令:容器文件系统变更追踪

Docker diff 命令:容器文件系统变更追踪指南 docker diff 是 Docker 提供的诊断工具,用于检查容器运行时相对于基础镜像的所有文件系统改动。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1万+

需求变更对测试的影响及应对策略全解析

从风险预防到高效响应的系统化解决方案 在敏捷开发模式下,需求变更已成为软件项目的常态。据统计,平均每个项目经历的需求变更率高达35%,而每次变更可能引发测试用例失效、测试周期延长、质量风险上升等问题。

software_test010的博客 979

微PE官网更新慢?我们每日监控上游模型变更

面对微PE官网更新滞后,我们构建了每日自动监控上游模型变更的CI/CD流水线,确保第一时间获取VoxCPM-1.5-TTS的最新优化。结合44.1kHz高音质与6.25Hz高效推理,配合Docker一键部署,让开发者快速落地语音合成应用。

weixin_35592186的博客 921

腾讯云直播计费变更

3. 在弹窗中确认是否取消中国大陆(境内)或国际/港澳台(境外)计费变更,需要先勾选“取消变更后,当日不可再进行修改计费操作”的选项,单击。标签,在该标签中,可选择中国大陆(境内)或国际港澳台(境外)的计费方式,如果您需要将原有计费方式从日结流量计费切换为日结带宽计费, 单击。如果需要抵扣流量包,需要将计费方式切换回日结流量计费。如果您需要进行计费方式的变更,请先确认当前的计费方式,以避免不必要的损失。标签,可查看当前待生效的计费方式和生效时间,如果您需要取消计费方式的变更,单击。,在左侧目录中,单击。

szqcloud的博客 586

某直聘每日算法变更分析

确认了第一步之后,我们就可以用191+3=194这个点进行检索,直接搜索194,会有好几个,那么怎么确认是哪一个呢?这里可以看到还没有走出+3的for循环,且194后递增为195,那么可以判断这里是for循环递增,排除。boss变更算法块固定5个步骤,除了运算外还会有取反,那么日志里分析不出来的就是取反了,取这一段看,符合特征,操作后的变量递增,就是for循环在从数组里取值作操作。可以看到算法中一共三个步骤,那么就是取反两次,所以算法不动即可。继续往下走,日志就结束了,那么今日的算法就是。

weixin_52001594的博客 661
上一篇: 优维全面可观测产品能力分解①:架构可观测
下一篇: 穿越混合云迷宫:克服采用障碍
优维科技EasyOps
博客等级 码龄5年 1483粉丝 395原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值