1. 软件开发流程的演进

最近几年,面对互联网和移动互联网业务的冲击,市场对软件产品的需求快速多变,个性化需求越来越多,产品版本的迭代更新速度也越来越快,传统的软件系统单体架构由于缺乏敏捷性特点以无法应对快速的市场变化。企业业务应用系统的架构逐渐向微服务架构演进,以解决在传统单体架构模式下升级迭代慢、运维扩展性差等存在的一系列难题。同时,微服务架构下应用系统频繁的版本升级迭代也造成了开发、测试和运维人员的工作强度不断加大,导致软件交付成为了一个令人头痛的过程,非常耗时且风险很高。

传统的瀑布式软件开发模式下,软件开发组织将开发、运营和质量保障设为各自分离的部门,开发团队将所需要的代码全部编写后,再交给测试和运营部门统一进行集成、部署后再完成交付。在这样的软件交付流程下,当某一个阶段出现问题时都需要重新开始,无疑会进一步加重开发、测试和运维人员的工作量。但是,在当今互联网/移动互联网的时代,对于每一个企业而言,软件产品快速迭代的重要性不言而喻,同时,在不断的产品开发迭代过程中,如何来保障产品质量和提升工作效率呢?

随着 DevOps 理论在行业内的不断传播与实践,为传统 IT 系统的微服务云化扫清了技术和文化障碍,更敏捷的软件产品开发理念逐渐被业内接受,DevOps 集文化理念、实践和工具于一身,开发团队与运营团队之间更具协作性、更高效的关系,强调软件产品的持续集成、部署和交付,可以提高企业高速交付应用程序和服务的能力,与使用传统软件开发和基础设施管理流程相比,能够帮助企业更快地发展和改进产品,这种速度使企业能够更好地服务其客户,并在市场上更高效地参与竞争。

图 1 传统软件开发流程和 Devops 软件开发流程

在 DevOps 模式下,开发团队、测试团队和运营团队在整个生命周期(从开发、测试到部署再到交付运营)内相互协作,项目管理和安全团队也会与开发、测试和运营工作更紧密地结合在一起。通过 DevOps 理论可以帮助软件产品团队形成持续集成、持续部署和持续交付的敏捷开发思维,从而进一步降低开发部署风险,加快产品上市速度,提高软件产品发布的工作效率。

2. 品高云应用交付流水线

应用交付流水线服务是软件应用开发到发布的持续交付系统,为用户提供代码托管、环境管理、项目管理、测试管理、程序仓库、持续交付流水线等 DevOps 服务。可以实现快速而可靠的交付应用程序和基础设施更新,每次更改代码时,都可根据发布流程模型持续构建、测试和部署。

图 2 应用交付流水线功能架构图

首先,应用交付流水线需要利用基础架构云提供的云基础设施,包括了计算、存储和网络,以及由云基础设施交付的负载均衡、容器服务、容器仓库和云网络等云服务。

其次,应用交付流水线提供了应用交付的一系列管理工具集,包括了项目管理、应用管理、代码托管、程序管理、构建服务、部署服务、程序库管理和集成工具等。

最后,基于云基础设施和高级服务提供的应用交付流水线服务,即可进行软件产品的编码、编译、测试、上线、维护等从软件开发到交付的全流程操作。

3. 特色能力

  • 基于 CMDB,针对应用部署的变量、代码、凭证、运行环境整体管理;
  • 企业项目研发思路,项目、应用、程序三层应用架构管理;
  • 支持编码、编译、测试、上线发布到维护的整体动作流水线化;
  • 利用现有云设施,负载均衡、容器服务、容器仓库、云网络能力继续沿用;

4. 应用场景

  • 开发&测试的自动化部署
  • 定时或按规则发布应用
  • DevOps(开发、运维一体化)
  • 应用系统的跨平台协同开发

5. 功能实践— 部署及升级博客系统

本次功能实践是利用应用交付流水线服务部署及升级 wordpress 博客系统,功能操作步骤包括了准备云资源、创建项目及配置环境信息、部署博客系统、升级博客系统。

5.1 准备云资源

构建博客应用需要基础架构云提供容器集群、负载均衡,容器集群是部署载体,负载均衡是建立 web 服务器之上,用以增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

首先,登录品高云操作系统,确认已为部署品高云博客提供了所需要的容器集群、负载均衡。

图 3 已准备好的容器集群

图 4 已准备好的负载均衡

5.2 创建项目,配置项目信息

在利用品高云应用交付流水线服务部署品高云博客应用时,首先,需要创建一个项目,新部署的“品高云博客系统”归属于该项目。

(1)通过品高云自助服务平台登录到品高云应用交付流水线服务(即持续交付)中。

图 5 应用交付流水线服务入口页面

(2)进入应用交付流水线服务之后,通过项目设置功能创建企业 web 应用项目。系统会自动生成项目编号、所有者、创建人和创建时间。

图 6 创建项目页面

(3)项目创建完成后,进行设置项目的环境配置信息、凭据、代码库、程序仓库、集群和负载均衡等信息。

图 7 配置项目具体信息页面

(4)环境配置。首先,设置应用部署在生产环境还是测试环境。其次设置环境变量,我们这次功能操作的变量为数据库变量,包括了 WORDPRESS_DB_HOST、WORDPRESS_DB_PASSWORD、WORDPRESS_DB_USER。

图 8 设置部署环境变量

(5)凭据。即构建项目时登录代码库和程序仓库等所需要的凭据(类似账号和密码),在创建代码库和程序仓库等时,也会一同设置了登录所需要的凭据。

(6)代码库。即构建应用时存放和程序代码的库,提供了一种将代码封装在单个文件中、允许继承和修改这些文件并允许分发离散的功能单元的可移植方法。需要设置代码库名称、代码库类型、代码库地址、代码库凭据和分支。代码库编码自动生成。

图 9 设置代码库信息

(7)程序仓库。即可供构建应用使用的各种标准程序、子程序、文件以及它们的目录等信息的有序集合。需要设置程序仓库名称、仓库类型、仓库地址和凭据。程序仓库编码自动生成。

图 10 设置程序仓库信息

(8)集群。即部署应用所需要的计算集群。我们选择了代码为 cl-AB4913CF 的集群,集群名称为 web 应用集群。

图 11 设置容器集群信息

(9)负载均衡。即部署应用所需要的负载均衡,我们选择的负载均衡名称为 lb-企业 web 应用,IP 地址为 114.67.33.196. 博客部署完成后通过负载均衡即可访问。

图 12 设置负载均衡信息

5.3 部署博客系统

本次部署博客系统的架构包括一个 ECS 集群、一个 RDS 集群和一个弹性负载均衡器。

图 13 博客系统部署架构

部署过程如下:

(1)新建博客应用,所属项目为企业 web 应用。

图 14 新建“品高云博客”应用

(2)关联代码库

图 15 关联已设置好的代码库

(3)上传程序包

图 16 上传博客程序包

(4)配置部署环境信息

图 17 配置部署博客的环境变量

(5)创建交付流水线

图 18 创建流水线

(6)点击“运行”按钮,运行 wordpress 程序。

图 19 运行程序

程序运行成功后,通过负载均衡 IP 地址 114.67.33.196 访问博客系统,可以看到博客系统的背景为包含盆景的图片(如下图所示)。

图 20 部署完成后的博客背景图片

5.4 升级博客系统

更换博客系统的背景图片,更换为品高公司大楼的图片,并配上“品高云,懂企业的云”文字。

(1)首先,更新程序代码,改变博客背景图片。

图 21 更新代码

(2)代码更新完成后,再一次运行程序,这是再访问博客系统地址是,博客的背景已变为最新图片,博客系统升级完成。

图 22 更新代码后的博客系统背景图片

目前,应用交付流水线服务已经在品高云 8.0 版本中正式发布,对于品高云应用交付流水线功能操作介绍,还可以通过视频详细了解。