DevOps 是一种不断演变的理念和框架,倡导加快和优化应用程序开发过程,更快地向客户发布新的或经修订的软件功能或产品。
DevOps 实践鼓励应用程序开发团队 (Dev) 与 IT 运维团队 (Ops) 之间进行顺畅持续的沟通、协作、整合,同时保持可见性和透明度。
“Dev”和“Ops”之间的这种密切关系贯穿 DevOps 生命周期的每个阶段:从初始软件规划到编码、构建、测试和发布阶段,再到部署、运维和持续监控。这种关系推动了持续的客户反馈循环,包括进一步改进、开发、测试和部署。这些工作可实现的结果之一是更快、更持续地发布必要的功能变更或新功能。
有人将 DevOps 目标分为四类:文化、自动化、衡量和共享 (CAMS),而 DevOps 工具恰好可以提供这些方面的帮助。这些工具可以使开发和运维工作流程更加精简、更具协作性,将集成、开发、测试、部署或监控中涉及的以往耗时、手动或静态的任务自动化。
DevOps 致力于打破开发团队和 IT 运维团队之间的沟通与协作障碍,其核心价值是让客户满意并更快地交付价值。DevOps 还旨在推动业务创新和持续流程改进。
DevOps 实践鼓励更快、更好、更安全地向组织的最终客户交付业务价值。这种价值的交付形式可以是更频繁的产品发布、功能或更新。这可能涉及产品发布或新功能上线的速度,所有这些都设有适当的质量和安全级别。或者可能侧重于识别问题或错误,然后解决并重新发布产品的速度。
底层基础架构还支持 DevOps,并在软件开发、测试和发布到生产环境时提供无缝的性能、可用性和可靠性。
组织可以使用几种常见的 DevOps 方法来加快和改进开发和产品发布。它们采用软件开发方法和实践的形式。其中最受欢迎的是 Scrum、Kanban 和 Agile:
DevOps 实践的追随者通常会在其 DevOps“工具链”中使用某些 DevOps 友好型工具。这些工具的目标是进一步简化、缩短和自动化软件交付工作流(或“管道”)的各个阶段。此外,许多此类工具还可在开发和运维团队之间推广自动化、协作和集成等核心 DevOps 原则。下面显示了 DevOps 生命周期各个阶段使用的工具示例。
DevOps 实践反映了持续改进和自动化的理念。许多实践侧重于一个或多个开发周期阶段。这些做法包括:
DevOps 支持者描述了数项业务和技术优势,其中许多优势致力于提高客户满意度。DevOps 的一些优势包括:
许多用于简化软件开发和部署的 DevOps 方法早期都以敏捷软件开发和精益编程为基础。然而,DevOps 最初是由几项基层运动演变而来的,目的是协调开发团队及运维团队的活动。
21 世纪初,人们需要维持 Google 和 Flickr 等热门网站的可用性,以应对巨大的点击量。这种需求催生了软件可靠性工程师 (SRE)——运维人员与开发人员密切合作,确保在将代码发布到生产环境后网站仍能继续运行。
2009 年,Flickr 工程师 John Allspaw 和 Paul Hammond 在一次会议上介绍了他们自己开发的类似于 DevOps 的方法。他们的演讲题目为“每天 10+ 次部署: Flickr 的开发与运维合作”。同年,Patrick Debois 在比利时举办了第一个“DevOps 日”。随着越来越多的 DevOps 日在世界各地举行,#DevOps 话题标签出现并热度大增。
在接下来的几年里,业界见证了大量开源工具和框架的涌现,从而进一步推动了 DevOps 目标的实现。
NetApp 利用 DevOps 帮助促进取得更好的业务成果:运维团队可以用更少的工程设计来交付自动化基础架构,而开发人员可以在可靠和可预测的环境下进行创建,并且摩擦更少。利用 NetApp® 技术,您可以从容地提供组织所需的服务和功能,在内部环境和云环境中最大限度地提高开发人员的工作效率。
借助 NetApp,开发人员、测试、QA 和运维团队可以轻松地将基础架构资源(例如持久性存储卷)用作代码,所有这些都可以通过 DevOps 管道中的熟悉工具来实现。例如,NetApp 存储 API 以及 IAC 与 Puppet、Ansible、Docker、Kubernetes 和 OpenShift 等工具的集成。
但是,NetApp 技术不仅能让开发人员轻松地以代码的形式使用存储,还能让运维人员从容地配置资源并将其交付给开发和测试人员。然后,开发人员和测试人员可以通过自行配置快速、省时的存储功能(例如快照或克隆)来加快编码和测试周期。借助这些功能,只需几秒钟或几分钟即可将实时生产数据或代码集的副本配置为代码,从而加快开发和 QA 工作流。详细了解为什么 NetApp 是 DevOps 的理想之选。
NetApp 对社区的贡献延伸到了 thePub。此开发人员社区鼓励协作、分享提示和技巧,并围绕最新的 DevOps 实践和协议展开讨论。
DevOps 文化着眼于跨学科的小型团队,这些团队能够独立工作并共同负责软件产品提供的用户体验。