以下内容摘自TNS的贡献者 Ritesh Modi的新书《DevOps with Windows Server 2016》。
如今,业内还并未对DevOps的定义达成共识。几乎每个行业机构和组织都制定了一套自己的DevOps实践。他们以为只要进行自动化、配置管理和敏捷开发,就算是真正意义上了解并实践了DevOps。
然而并没有那么简单。
DevOps与软件系统的发布机制是密切有关的。DevOps涉及到建立协作互通的开发团队,并朝着一个可预见的目标一起工作,也同时涉及到协作中的责任制和管理制度。它还涉及到实践过程中的集体性和服务心态。DevOps确保实现了团队组织中一种敏捷而灵活的传输机制。与大众观念相左的是,DevOps其实和工具、技术以及自动化无关。自动化实际扮演的是实现敏捷开发,减少了团队内部的合作并辅助更快交付的角色。
DevOps的定义
网上有很多关于DevOps的定义,但它们大多数并不够完整。为什么这么说?
首先,DevOps并不提供框架和方法,当它应用到团队和项目中的时候,它其实是DevOps和企业共同实现既定目标的一系列原理和实践经验。其次,这些原理和实践经验并不执行任何特殊的程序、工具和技术,甚至环境。最后,即便有的技术和流程本身确实可能对实现DevOps的目标和愿景比较适用 ,但事实上,DevOps能在应用实践这些工具、技术和流程的过程中提供指导。
任何直接面向用户并为用户提供产品和服务的企业都可以实践DevOps,作为本书的目标,我们将通过剖析企业的开发和运维团队了解到真正的DevOps。
所以,DevOps到底是什么?我认为:
• DevOps是一系列原理和实践经验的总和。
• DevOps从一开始便将开发和运维团队放到同一个系统开发中。
• DevOps提供了一种快速、有效的方式,能不断地以端到端的传播形式向用户端传递价值,而且这种方式具备一致性和可行性。
• DevOps缩短业务上线时间,并保障了业务的市场竞争力。
如果你仔细揣摩过以上DevOps的定义,你就会发现它并未对任何特殊的流程、工具和技术有偏好,也并未规定任何特殊的方法和环境。
DevOps的实践
任何企业的DevOps实践,其最终目标都是确保相关人员(包括用户)的期望和需求能有效、快速地开展起来。
DevOps满足用户以下需求和期望:
• 获得他们想要的功能;
• 在任何需要时都能获得他们想要的功能;
• 能更快地更新功能;
• 发布的新版本的质量够高。
只有当企业能满足这些用户需求,用户的忠诚度才会高,反过来企业的市场竞争力便得到了提升,并最终增强企业的品牌和市场价值。DevOps对企业的顶线和底线带去直接影响,因而企业可以在创新和客户反馈上投入更多,从而持续改变其系统和服务,以保持和用户之间的黏性。
而任何企业在实践DevOps的过程中都会受其所处的行业和领域的影响,所以要把握住DevOps实践的核心原则和核心做法。
DevOps实践的核心原则:
• 协作机制和沟通机制;
• 响应变化的敏捷度;
• 软件设计能力
• 快速试错
• 持续学习和创新;
• 自动化流程和工具。
DevOps实践的核心做法:
• 持续集成
• 配置管理
• 持续部署
• 持续发布
• 持续学习
虽然DevOps并不是新词,但近几年却受到越来越多的普及和关注。到目前为止,采取DevOps已是最高优先级,且越来越多的公司正在实践它。而DevOps的实践中又有着不同优先级的考虑:以成功实施持续部署和持续交付的优先级最高,以采用源代码控制和敏捷开发的优先级最低。
DevOps定义的解析
DevOps谈到的第一个问题是如何打破开发团队和运维团队之间的隔阂,以及如何实现多团队之间的亲密协作。DevOps打破了以往开发团队只负责写代码并提交代码给运维团队来进行部署,而运维团队不参与开发过程的观念。事实上,运维团队应该对产品的上线计划产生影响,也应该对即将发布的功能有更多关注,他们还应该持续向开发部门反馈运维上的任何问题以便在后续版本中予以修正。运维团队的工作实际上最终能为提升整体功能特性的系统设计产生影响。相对应地,开发团队应该辅助运维部门成功交付系统和解决问题。
DevOps的定义中还谈到了系统端到端的交付效率是快速、高效的,但并未谈到底有多高效。发布的效率取决于企业的行业、领域和细分用户等,有的企业以季度为交付周期,有的则按周计算交付周期。
这两种类型从DevOps的角度来看都是有效的,他们可以部署任何相关的流程和技术来实现其特定的目标。但DevOps不会决定该目标,企业应根据其整体项目和愿景来确定DevOps的最佳实施。
这个定义还谈到了端到端的交付。这意味着从系统的规划和交付到服务和运维都应该是DevOps实践的一部分。这些过程应该在应用程序开发生命周期中具备更大的灵活性、模块化和敏捷性。虽然企业可以自由地使用最好的进程,如瀑布、敏捷、看板等,但通常企业都倾向于通过基于迭代的交付方式来支持敏捷开发流程。这便意味着在更小的单元拥有更快的交付,与大体量交付相比是更好测试也更好管理。
DevOps谈到在不断地向终端客户提供软件系统的时候要保证一致性和可预测性,这意味着企业应该使用自动化向用户提供更新和功能升级。在不使用自动化的情况下,我们无法实现一致性和可预测性。为避免失误,自动化也应该要求是端对端,这也表明系统设计应该是模块化的,才可能保证更快交付的同时又能保持系统的可靠性、可用性和可扩展性。自动化测试便在这类交付中起着至关重要的作用。
结语
实施上述做法和原则的结果是企业可以满足其客户的期望和要求。相比竞争对手,这样的组织发展得更快,同时,也更能不断进行创新和改进,从而进一步提升产品和服务的质量。
本文为翻译文章,文章观点归原作者所有
原文链接:https://thenewstack.io/what-is-devops/
关于作者Ritesh Modi
高级技术布道者,现就职于微软,负责保障开发者、创业者和企业的技术学习和实践。曾作为架构师就职于Accenture和eFORCE,热衷开源技术,是行业有名的领导者和作家,同时,他还是T-hub和IIIT Hyderabad创业孵化器的导师,微软认证培训师,并拥有超20种相关培训证书。
关于译者Ghostcloud
Ghostcloud(中文名:精灵云)是成都精灵云科技有限公司旗下的基于Docker的PaaS/CaaS平台品牌,核心团队由来自EMC、Veritas、华为、IBM、Microsoft的核心技术主管和架构师组成。国内首批从事容器虚拟化研发的企业,为企业级行业客户提供针对互联网化、私有云管理平台、大数据业务基础架构的平台服务。在国内Docker社区贡献排名前三,主创团队曾参与Beego开源项目研发,并主导发布《Docker容器实战:原理、架构与应用》一书。Ghostcloud因容器技术而生,致力于为多个领域的“互联网+”转型企业提供服务,是一流的企业级容器云服务专家。
推荐阅读: