本文做者:AIOps智能运维安全
当咱们谈发布变动时咱们谈些什么?服务器
软件产品的生命力在于不断的功能迭代。一个新功能从需求产生到完整地呈现给终端用户,中间通过了调研、立项、需求分析、设计、开发、测试等一系列步骤,而发布变动则是整个流程的最后一步。具体来讲,发布变动是指将产品功能的修改内容发布到一组服务器上的过程。并发
变动过程能够简单到由一个研发人员手工将代码上传到一台服务器上,也能够复杂到上万台机器的数据传输和命令执行。若是咱们深刻地考查整个变动过程,能够发现不管变动过程自己如何变化,其中有些组成部分是不可或缺的,这里将其总结为变动三要素,即变动源、变动策略、变动目标。运维
变动源:描述变动涉及的具体内容,能够是程序、数据或者命令;测试
变动策略:描述变动过程如何执行,包括但不限于顺序、并发度、失败容忍度等;spa
变动目标:描述落地变动内容的一个或者多个目标机器,也多是虚拟机或容器。设计
变动面临的问题对象
其实咱们对变动的需求并不复杂,做为迭代的最后一千米,咱们只关注两点:开发
操做过程足够快捷(效率)部署
变动结果符合预期(安全)
可是,在具备必定规模企业的生产环境中,用户每每要面对比单台机器手工上线更加复杂的情况,在这些情况下上述两点要求一般难以知足:
大批量机器的操做步骤繁琐,较依赖人的经验,变动操做效率低下;
因为缺乏可靠的检查机制,变动效果没法保证,甚至引起线上较大异常。
咱们在百度各核心产品的大规模变动实践中积累了丰富的经验,发现经过自动化部署能够有效提高变动效率,在变动过程当中严格执行分级发布流程能够确保检查机制获得执行,而且可以有效限制异常影响范围,加速异常恢复。在二者基础之上,融入AIOps智能变动策略,能够进一步下降管理成本,提高检查效果。下面将从三个方面详细介绍咱们的解决方案。
咱们的解决方案
1自动化部署
自动化部署包含变动策略和批量机器执行能力两部分。具体来讲,用户经过UI/API配置整个变动过程的执行策略,例如先执行A地域机器的变动,再执行B地域机器的变动;执行失败的机器超过10台就自动停止等。而后由专门的执行系统解析策略,并自动执行批量机器的变动,如开源的Ansible、SaltStack和百度内部的CCS系统。整个执行过程自动进行,用户只须要查看执行进度便可。另外一方面,执行系统也提供了干预能力,用户能够手动暂停乃至撤销一个部署任务的执行。图2给出了自动化部署的示意图。
2分级发布
分级发布是指将变动过程以实例组为单位划分红多个阶段,每一个阶段引入自动化的检查用例,只有检查经过才能执行下个阶段的变动。分级发布不能彻底避免变动异常,可是能够有效限制异常影响范围。经过把变动版本管理和历史审计与分级发布结合,能够有效加强对变动过程的管控,下降异常影响,加快异常恢复速度。整个分级发布规范的构成能够参考图3。
3智能变动策略
采用自动化部署和分级发布以后,用户已经能够得到较好的变动效率,而且可以在至关程度上提高变动安全性,可是使用更高标准来审视,其中仍存在改进的空间:变动模板须要人工配置,使用门槛较高,复用性低;变动效果检查强依赖人的经验,可能出现异常没被及时检查出来的问题。
得益于在AIOps上的充分实践,咱们发现经过将智能策略引入到变动流程中,能够进一步提高变动效率和安全。具体的落地点在如下两个方面:
智能模板生成:分析变动对象属性特色并自动填充
智能变动检查:关联异常检测,及早发现并输出干预命令
其具体的实现思路为:
智能模板生成:使用运维知识库充分收集变动目标对象的属性,而后基于这些对象属性特色自动生成变动模板,例如变动对象的最小可用度能够用于生成变动失败容忍度;
智能变动检查:咱们已经有成熟的智能监控方案,能够全方位监控目标服务的状态并及时汇报异常。经过订阅变动目标的服务监控,能够实现变动过程当中的实时检查,从而及时发现变动引发的异常,进而自动执行干预命令。
如何应用上述解决方案?
上面介绍了变动面临的主要问题以及咱们对应的解决方案,为了可以让更多的外部用户也能体验到百度高效安全的变动能力,咱们将在百度云上提供百度智能变动产品。届时购买了百度云服务的用户,便可使用该产品完成业务功能的平常迭代。百度智能变动产品目前在紧锣密鼓地推动中,预计很快就会与你们见面。
总结
发布变动做为产品迭代的最后一千米,其执行效率和执行结果将直接影响功能迭代的效果。当把目光投向实际的生产环境,咱们发现,在不少企业中变动的执行效果并不能获得保障。针对这种情况,咱们结合百度内部的实践经验和总结抽象,提出了包含自动化部署、分级发布和智能变动策略的完整解决方案。这套解决方案将以百度智能变动产品的形态在百度云上落地,期待与您分享!