作者介绍

陈能技,DBAplus社群原创专家,新炬网络首席DevOps专家。14年开发测试与质量架构经验,擅长DevOps及APM、Docker、持续集成、持续交付在企业中的落地实施。著有《软件性能测试诊断分析与优化》、《软件自动化测试成功之道》、《深入浅出性能测试与LoadRunner实战》等书。

业界关于持续交付有如下图所示的5级能力成熟度模型:

今天我们就来聊聊持续交付流水线中的环境配置管理工作。

DevOps、持续交付、环境配置管理

持续交付作为DevOps的核心实践,涵盖了从开发到测试到部署上线的过程,是持续集成的延伸,持续交付流水线中涉及很多环节,而每个环节基本上都跟环境配置管理相关。

例如开发阶段的构建环境、联调环境、测试阶段的功能测试环境、性能测试环境、安全测试环境、兼容性测试环境,发布生产前的准生产部署环境等。

整个开发环境可分为本地开发环境,测试环境,准生产环境,生产环境。当产品通过了各种测试,例如: 功能测试,性能测试,系统测试等等,需要部署到准生产环境,其特点是与生产环境参数基本一致,在用户接受测试通过之后,可根据业务需求或决策部署在生产环境了。

传统模式下的环境配置管理问题

DevOps的目标是通过建立并不断完善持续交付的流水线,最终达到无需人工干预的持续交付过程。从代码开发到持续集成,创建测试环境,运行测试并报告结果,完成各种测试计划中任务,最后是业务决策交付或部署上线。

下图是一个典型的持续交付流水线,可以看到流水线经过了好几套环境的测试、验证,可见环境配置管理工作的重要性。

传统模式下的环境配置管理通常存在以下问题:

1、手工准备环境,对冲突无控制。

  • 软件安装麻烦、来源不一致、安装方式不一致、杂乱无章。

  • 共用一个服务器开发环境,隔离性差,互相冲突。

  • 可移植性差,例如和生产环境不一致,开发人员之间也无法共享;新人入职通常又折腾一遍开发环境,无法快速搭建。

2、基础设施环境的准备工作繁琐,跨部门流程冗长

3、手工部署软件

部署和发布过程以及发布后的验证都依赖人工进行,容易出错,并且效率有待提升。

4、环境资源无法共享

环境资源缺乏动态调配能力,造成资源浪费。

环境配置管理与应用部署自动化

为了有效解决上述问题,提高持续交付流水线的效率,我们需要开展环境集中配置管理的工作。主要从以下几方面入手:

  • 基础设施环境配置管理

基础设施(Infrastructure)代表了你所在组织中的所有环境,以及支持其运行的所有服务,如DNS服务器、防火墙、路由器、版本控制库、存储、监控应用、邮件服务器,等等。

基础设施管理的基本原则:

(1)使用保存于版本控制库中的配置信息来指定基础设施所处的状态;

(2)基础设施应该具有自治特性,即它应该自动地将自己设定为所需状态;

基础设施不但应该具有自治特性,而且应该是非常容易重新搭建的。当出现硬件或其它问题时,就能迅速重建一个全新的已知状态的环境配置。所以,基础设施的准备工作也应该是一个自动化过程。自动化的准备工作与自治性的维护相结合,可保证一旦出现问题就能在可预见的时间内重建基础设施。

(3)通过监测手段,应该每时每刻都能掌握基础设施的实时状况。

应该与交付流程的其它方面一样,把创建和维护基础设施需要的所有内容都进行版本控制:

(1)操作系统的安装定义项(例如使用Debian Preseed、RedHat Kickstart和Solaris Jumpstart)。

(2)数据中心自动化工具的配置信息,例如Puppet、CfEngine等。

(3)通用基础设施配置信息,例如DNS区域文件、DHCP和SMTP服务器配置文件、防火墙配置文件等。

(4)用于管理基础设施的所有脚本。

部署流水线的基础设施变更管理工作:

(1)对于任何基础设施的变更部署到生产环境之前,应该验证所有的应用程序在这些变更之后也能正常工作,并确保在该新版本的基础设施之上,所有受到影响的应用程序的功能和非功能测试都能成功通过。

(2)将这些变更应用到测试和生产环境上。

(3)流水线应该执行部署测试,确保新的基础设施配置已成功部署。

基础设施的版本配置管理工作还包括:

管理应用程序和应用程序所依赖的基础设施之间的版本依赖。也就是说,为了能够正常工作,就要记录每个应用程序需要哪个版本的基础设施。
 应用部署与发布管理

良好的环境配置管理能为应用部署和发布创造高效的环境,而应用部署与发布工作本身也应该做集中化的配置管理工作。例如,制定完善的发布计划:

1、第一次部署应用程序时所需的步骤;

2、作为部署过程的一部分,如何对应用程序以及他所使用的服务进行冒烟测试;

3、如果部署出现问题,需要哪些步骤来撤销部署;

4、对应用程序的状态进行备份和恢复的步骤是什么;

5、在不破坏应用程序状态的前提下,升级应用程序所需要的步骤是什么;

6、日志文件放在哪里,以及他包含什么样的信息描述;

7、如何对应用程序进行监控;

8、作为发布的一部分,对必要的数据进行迁移的步骤有哪些;

9、前一次部署中存在问题的记录以及他们的解决方案是什么。

对发布过程进行建模并让构建晋级:

1、为了达到发布质量,一个构建版本要通过哪些测试阶段(例如集成测试、QA验收测试、用户验收测试、试运行以及生产环境)

2、每个阶段需要设置什么样的晋级门槛或需要什么样的签字许可。

3、对于每个晋级门槛来说,谁有权批准让某个构建通过该阶段。

最后,还需要建立高效的自动化部署机制:

每个需要部署应用程序的人都能用这种自动化部署机制,而不需要了解部署本身相关的任何技术知识,一旦部署完成后,自动运行一个冒烟测试来验证部署成功与否,这样,做应用部署操作的人(包括分析人员、测试人员或运维人员)就可以确认该系统运行正常,即使不能正常运行,也很容易找到原因。

1、选择需要部署的应用程序版本之后自动执行后续的部署步骤。

2、环境及相关基础设施的准备应该以完全自动化的方式进行。

3、部署应用程序的二进制包应该从制品库中拿到,而不是每次部署时重新构建出来。

4、对应用程序进行配置。应用程序的配置信息应该以某种统一的方式来管理,并在部署和运行时使用。

5、准备或迁移该应用程序所管理的数据。

6、对部署进行冒烟测试。

7、执行测试(可能是手工的,也可能是自动化的)

8、如果应用程序的这个构建版本通过了这些测试,允许其晋级到下一个环境中。

9、如果应用程序的这个构建版本没能通过这些测试,记录一下是什么原因。

小结

本文简述了传统环境配置管理存在的问题,以及在持续交付流水线工作模式下的环境配置管理的具体做法。

随着Puppet、Ansible、SaltStack,持续集成、持续交付、DevOps,Docker、开发测试云平台等技术和方法的日渐成熟和被企业所接受,相信越往后边,持续交付流水线的环境配置管理、应用部署管理工作将越自动化、敏捷化!

本文来自云栖社区合作伙伴"DBAplus",原文发布时间:2016-08-08

持续交付流水线的敏捷利器:环境配置管理与应用部署自动化相关推荐

  1. 谈谈企业的持续交付流水线设计

    有一天,业务人员急冲冲的跑过来,对你说生产上出现了一个严重BUG,必须要尽快修复.你听完问题描述后,胸有成竹坐定并迅速定位问题,随后改动了一行代码并提交,系统开始自动编译.各个环境自动化测试.发布上线 ...

  2. DevOps基础-5.3-持续交付:持续交付流水线

    在上一篇,我们讨论了持续交付流水线(英文是The continuous delivery pipeline)的第一阶段,即持续集成.在本篇文章中,我们将介绍其余的持续交付流程.在前面文章我把pipel ...

  3. DevOps ACA 阿里云效持续交付流水线(十)

    文章目录 阿里云效持续交付流水线 1. 云效流水线简介 2. 云效流水线实操 3. 整体课程总结 阿里云效持续交付流水线 1. 云效流水线简介 流水线分为: -扫描-----构建-------部署 ( ...

  4. 掌门持续交付流水线大规模实践

    CD 平台是掌门的持续交付系统,流水线功能自 2020 年 3 月在 CD 平台上正式开放,目前已稳定运营一年多,超过 900 个应用启用了流水线功能,应用接入率超 60%,下图展示了流水线功能的关键 ...

  5. TOP100summit 2017:【案例分享】魅族持续交付平台建设实践

    本篇文章内容来自第10期魅族开放日魅族运维架构师林钟洪的现场分享. 编辑:Cynthia 一.自动化建设历程 1.1 魅族互联网发展的时间线 2003-2008年被称之为"互联网1.0时代& ...

  6. 魅族持续交付平台建设实践

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 原文转载自:msup 文章内容来自第10期魅族开放日魅族科技运维架构师古日旗的现场分享 大数据技术 ...

  7. 【华为敏捷/DevOps实践】8. 持续交付,持续部署,傻傻分不清楚

    文:姚冬(华为云DevCloud首席技术布道师,资深DevOps与精益/敏捷专家,金融解决方案技术Leader,中国DevOpsDays社区核心组织者) 前言 "持续交付与持续部署,到底谁应 ...

  8. 从持续交付看敏捷开发的自相似性(敏捷开发的心跳)

    作者:陈勇 出处:blog.csdn.net/cheny_com 自相似性是指一个事物的局部与其更大的局部乃至整体具有相似性. 从大的方面看,敏捷开发具有重视客户价值,提倡持续交付等思想.但一般而言, ...

  9. 大型金融企业DevOps持续交付实践

    作者介绍 符强,新炬网络DevOps专家,从事IT行业10余年,拥有丰富的开发.测试.运维工作经验.现致力于DevOps相关建设与实施推广的研究,具有多个大型电信.金融企业DevOps项目经验. De ...

最新文章

  1. postman中 form-data、x-www-form-urlencoded、raw、binary的区别--转
  2. SAP Spartacus B2B Org Unit树状结构的加载机制
  3. 22 款设计和可视化神经网络的工具
  4. Git笔记(33) Rerere
  5. Java基础教程【第一章:Java概述】
  6. MacOS Big Sur 11.3 (20E232) Cl 5133/OC 0.6.9/PE 三分区原版黑苹果镜像
  7. aspnetpager使用介绍
  8. python label显示图片_Python3 tkinter基础 Label imag显示图片
  9. c语言程序设计操作,c语言编程入门相关详细操作
  10. 现代JS名词概念系列——函数的纯洁性【龟速翻译】
  11. 海思AI芯片(35xx):板端运行报错
  12. 开机后显示服务器正在启动,电脑开机后卡在Windows正在启动界面上怎么办?
  13. 传奇世界服务端WIN7简单安装教程
  14. JVM知识梳理(二)之垃圾收集器与内存分配策略
  15. 音频文件格式转换python实现——flac转wav
  16. C语言关键字 restrict(一)
  17. Elasticsearch:IK 中文分词器
  18. Hexo Next 主题中添加本地搜索功能
  19. 元宇宙将如何改变工作的未来?
  20. OFBiz搭建项目详细讲解——Ofbiz表单

热门文章

  1. 容我喝一杯 java_花一杯茶的时间,学会Java反射(实用篇)
  2. 中职计算机应用基础每章知识点,[定稿]中职计算机应用基础教案_1-5章V3.1
  3. PHP中switch条件语句的使用,php条件语句(2)switch...case语句
  4. python中copy怎么用_python中的拷贝copy模块怎么使用?
  5. 初始化触发点击事件_【Vue原理】Event - 源码版 之 自定义事件
  6. matlab 基于Topsis的熵权法
  7. Altera FPGA配置过程
  8. 【 FPGA 】UltraFast设计方法学:时序收敛之时序约束基本准则
  9. RHEL7 kvm虚拟机桥接网络配置
  10. 2016年金融全行业网络安全状况调研报告