正如本文前面提到的,DevOps起源于软件工程,同样,贯穿实践的重要术语源于各自的工程领域。软件工程包括以下领域的知识:计算机编程、架构(例如数据、软件、系统)、解决方案工程;以及各种学科,如:计算机科学、数学、质量管理、系统工程(Bourque et al.,2014)。
DevOps 工程方法通过坚持合理的数学和工程原则,极大地提高了效率和成功,这些原则包括:抽象(Russell,1903),模块化(Gausier&Pont,1970),多态性(Cardelli&Wegner,1985),可移植性(Newey et al.,1972),封装(Pamas,1972),可重用性(Rich&Waters,1983)。
工程自动化是 DevOps 的一个重要方面,也是其成功的关键组成部分。此外,自动化对现代和未来的计算技术至关重要。2001年,IBM宣布自主计算是必要的,并通过四个概念提供了自我管理能力的原则:自我配置、自我优化、自我修复和自我保护(Kephart&Chess,2003)。然后在2005年,IBM为自主计算提供了一个架构蓝图(IBM,2005)。约翰·冯·诺依曼(John von Neumann)在自主计算领域开创了先河,他就自动计算机器与人类神经系统进行了详细的比较(冯·诺依曼(von Neumann),1951年),后来又提出了自复制自动机的概念(冯·诺依曼(von Neumann),1966年)。DevOps 成功的一个重要贡献在于工程 CI/CD 流水线的实践,以自动化配置、优化、修复和保护高效、质量有保证的工程解决方案。
DevOps CI/CD 流水线的实施利用复杂的技术来增强和促进不同系统的自动化,这需要非平凡的、定制的互操作性,然而开发的软件已经简化了实现(Klein等人,2020)。软件和系统运维团队,或全栈工程团队协调接口以开发、管理和运维用于建立所需流水线的系统。尽管如此,DevOps CI/CD流水线的集成需要进行工程设计以实现表达自动化,从而工程自动化以实现自动化工程(即构建构建机器的机器)。
DevOps 中的工程自动化,例如但不限于 CI/CD 流水线,由协同、可重用、多态的构建块组成:图像、脚本、应用程序编程接口(API)(Klein&Miner,2018)。DevOps中的工程构建块类似于计算机科学中的抽象数据类型和数学中的函数(高阶函数)。在设计通用的、可重用的架构模式和解决方案时,构建块以最抽象的形式被无类型化,然后在实例化时被类型化,以开发高效的、有质量保证的解决方案。