DevOps近来是各个软件公司一个比较火的话题,对天翼云来说也是希望探索的一个方面,希望它有助于自动化和简化应用程序的开发生命周期,释放我们的人力,让我们的整个开发测试流程标准化起来;不仅如此,DevOps还希望通过规划,沟通,流程和工具,更好的协调了开发和运维团队,从而提高项目的交付质量和速度。
那么,本文将通过讨论DevOps的基本概念,生命周期,最佳实践,以及我们应该使用的工具来探讨测试DevOps的最佳实践或者策略,帮助大家进行更好的了解。
1,什么是DevOps?
DevOps是一套工具,文化理念和实践,通过自动化和集成开发团队以及运维团队之间的流程,提高了组织高速交付项目的能力。DevOps强调跨团队的写作与沟通,团队授权和自动化。
在DevOps的方法论下,开发团队和运维以及测试团队并不是相互孤立的。这几个团队通常会合并为一个团队,开发人员负责应用的整个生命周期,从开发到部署和运维。此外,DevOps团队拥有广泛的技能,并不局限于应用程序的某个功能或特性。
有时,安全和质量保障团队会在整个应用程序开发过程中与DevOps集成。在这种情况下,如果DevOps团队的重点是应用程序的安全性,那么它也被称为DevSecOps。
与传统的手工实践不同,DevOps团队使用技术栈和工具来自动化流程,从而可以自动,可靠,快速的构建应用程序。此外,DevOps工具允许开发人员独立执行一些需要其他团队协助的任务,如配置基础设施或者部署代码等任务。
2,DevOps的生命周期
DevOps生命周期是持续开发生命周期中的一些列自动化流程。DevOps生命周期采用迭代的方式,这就是实践者为什么会将其符号化为无限循环的原因。这个无限循环代表了一种持续和写作策略,其中包括应用程序生命周期中每个阶段的技术栈和工具。
生命周期的左侧处理应用程序的开发和测试,而右边则描述了部署和运维的循环。
我们来看一下DevOps的各个生命周期。
·计划(Plans):DevOps团队在计划阶段确定业务需求并收集用户的反馈。为了最大化业务价值并提供预期结果,开发人员还会在该阶段创建项目路线图。
·编码(Code):在这个阶段,通过使用诸如git或者github之类的工具和插件来创建应用程序代码,并简化流程,最大限度的减少糟糕的编码实践和应用程序安全方面的缺陷。
·构建(build):在构建阶段,将构建部署到测试环境中,这样就可以通过使用Selenium,Junit等工具运行不同的测试(如安全性,用户接受度,集成,性能等)来确保应用程序的质量。
·发布(release):当构建通过了测试,并准备好了部署到生产环境时,运维团队将会安排发布。
·部署(Deploy):在部署阶段,基础设施即代码,使用不同的工具来构建和部署生产环境。
·运维(Operate):一旦最终用户可以访问该版本了,运维团队将使用Ansible,Salstack,CFEngine或Chef等工具进行服务器配置和资源调配。
·监控(Monitor):顾名思义,在监控阶段,根据收集到的应用程序性能,用户行为等信息来对DevOps管道进行监控。通过环境监控,团队可以轻松的识别出影响生产的瓶颈。
3,从敏捷到DevOps
敏捷的原则在开发和QA的迭代中获得了成功的应用,而DevOps则是在此基础上覆盖更长更丰富研发测试包括运维流程的一种原则和文化;DevOps中已经用持续开发取代了持续集成,在持续开发中,团队在短周期内开发应用程序,这样软件就可以随时自动可靠的发布。使用CD,可以以很高的频率开发,测试和发布软件应用程序。并且开发人员可以专注于设计和编码高质量的应用程序,而不是专注于构建,质量保障和运维流程。
4,总结
DevOps是当前多种业务开发团队希望构建的理想解决方案或理想的构建文化,因为它有充分理由。但它不仅依赖于上面介绍的数据和各个阶段所要做的事情,更依赖于持续的开发,测试策略和工具,希望我们能够从自动化和持续集成做起,逐渐向DevOps发展和靠拢。