6.2 云上生存——开发运维一体化(DevOps1)
随着信息技术的飞速发展及业务需求日益复杂多变,越来越多的企业开始意识到,要按时交付软件产品和服务,将开发团队和运维团队割裂开的传统方式,已不适应软件开发的需求。企业希望能有一个平台或工具来满足并支持从软件开发到测试到生产运营的整个过程及软件环境配置管理,希望能够完成一站式的持续集成、交付,自动化部署、测试监控、自动化伸缩及自动化恢复,提升开发测试运营过程中的部署效率,简化开发测试运维过程的管理,降低交付风险,降低运营成本。
为解决上述问题,DevOps(Development and Operations)一词在2009年在欧洲被提出来,将其视为 一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合(如图 6.2 示意)。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。
DevOps的出现弥补了软件开发和运维之间的信息不对称问题,提升团队之间的协作能力,减少沟通成本。开发者可利用完整的工具链在交付软件时完成实际生产环境的开发、测试和运维,无疑是自动化运维工具的受益者。随着技术的快速发展,出现了微服务、容器等技术以及各种运维自动化工具,使得DevOps有了良好的技术支撑并得以快速实施。
DevOps的优势主要体现在以下几方面:
- 支持软件的高效交付
据2016年DevOps调查报告显示,对全球近5000位IT公司的技术工作者提交的调查问卷,发现使用DevOps 的公司平均每年可以完成1400次以上的高效部署,比未用DevOps的公司部署频率高200倍以上,产品投入使用速度快2500倍,业务恢复速度快20倍以上。在工作效率上,未用DevOps的公司要多花20%以上的时间处理重复性的工作,而采用DevOps的公司却可以将这些时间用在新的开发内容上。由此可见,DevOps不仅提高效率,更能提升质量。
- 促进开发与运维协同
DevOps 成功与否的关键在于员工之间的协同工作,各部门员工通过使用共享平台获得更高质量和一致性的信息,员工之间沟通更顺畅,处理问题速度加快,使得工作更加高效,增加员工的成就感,使员工对工作的满足感增强。DevOps 的出现使多团队协同工作成为可能,以往开发团队只负责写代码,运维只负责部署运行,运维团队不参与任何开发过程,这一情况使得运维团队对产品的上线计划没有发言权,也不需要关注产 品发布的功能,却持续向开发部门反馈运维上的问题,不断修正后续版本中的问题,这种情况增加了双方团队大量的沟通成本,大大降低了工作效率。DevOps使运维团队能为提升整体功能特性的系统设计产生影响,开发团队同时辅助运维部门成功交付系统和解决问题,达到事半功倍的效果。
- 快速部署并提高业务稳定性
站在传统的软件开发视角,软件的快速部署和提高业务稳定性两者存在矛盾,但其实不然,快速的部署是为了帮助开发者更快地发现产品中存在的问题,从产品被快速地交付到用户侧,到根据用户的反馈,团队更快地响应、处理问题,这种小步快跑的形式,会发现每次出现问题都不会太大,修复起来也会较容易。DevOps 的目标是加速软件发布和部署流程,利用自动化运维工具降低系统出错的概率,并快速消除宕机和错误等的影响,提高企业对业务问题的敏捷性,降低IT成本。