论文部分内容阅读
在4G移动互联网时代,软件开发的显著特点变为快速应对需求变更,快速交付软件。传统软件开发模式在应对这一挑战时存在不足,DevOps应运而生。DevOps是development和operations两个单词的组合,是一组过程,方法与系统的统称,用于促进开发,运维和测试部门之间的沟通,协作与整合。DevOps强调通过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。本文认为矛盾在于:软件部署通常是复杂的,经常出现测试环境、生产环境与开发环境不一致的情况,从而导致软件交付失败。在传统模式下,交付软件所花费的成本过高,导致DevOps期望的测试与运维人员及早参与到开发中来,每天进行集成测试的愿景无法真正实现。当前,以DevOps理念为指导形成了一套开发与运维工具链来实现自动化的开发、集成、部署、测试、交付与运维工作。例如持续集成工具有:Git、Subversion、TFS、Bit Bucket;构建工具有Jenkins、Team City、Bamboo;配置管理工具有Puppet、Chef等。然而DevOps工具链的特点是:不同的平台与工具被不同的部门使用,尽管交付效率在一定程度上提升了,但不同部门之间仍然像信息孤岛,不同系统之间的信息流转偏向手动方式。本文提出将Docker容器作为应用程序运行的环境,将应用程序容器化,利用容器标准化这一特性来降低软件部署所花费的成本以此来提高软件开发与交付效率。本文分析了DevOps理念的知识体系,最终提出了“适用于Docker环境的DevOps平台”。从设计目标,需求分析,系统设计,实现与测试等方面做出全面叙述。基于现有的DevOps工具链,提出了DevOps平台的概念。在实现方式上,首先搭建了基础服务平台如:Docker容器引擎服务、Kubernetes容器集群、Git Lab代码托管平台、Harbor容器仓库服务、Maven、Webpack自动构建工具。这些平台与工具是程序编译、构建、部署的实际执行者,而DevOps平台运行在这些基础服务平台之上,通过集成各平台的client端,利用这些client端提供的API,使得在DevOps统一平台上与各基础服务进行交互,DevOps平台成为其他基础服务平台的工作命令的发出者。开发人员可以在DevOps平台进行程序的自动化编译,并将新的测试版本提交给测试人员。测试人员在DevOps平台进行测试的反馈。运维人员使用DevOps平台可以进行软件的自动部署、扩容、监控、维护等工作。DevOps平台使用图形化的用户界面,以表单的方式配置各流程中所需要的参数,摒弃了各基础服务一般使用命令行工具的特点。通过系统测试表明DevOps平台能够自动化的完成持续集成、持续测试、持续部署、持续交付、持续反馈等工作,提高软件开发与交付效率。开发人员、测试人员、运维人员能够在统一的平台上完成各自的工作,将DevOps理念进一步落地。