两种开发运维模型——火箭和飞机

越来越多的敏捷企业要求软件开发以超音速,甚至星际速度运行,快速而安全地进行更改。DevOps管道提供了最好的方式,但是你真正需要什么来实现这个承诺呢?
有一个很好的方法来理解影响CI / CD流程的角色容器技术就像Docker和Kubernetes在DevOps中的作用一样,会有所帮助。从这里,你为什么需要Artifactory作为二进制存储库管理器为了完成它,可以清楚地看到。
事实是,运行一个完整可靠的DevOps管道并不是一件复杂的事情。
实际情况要比这困难得多。
为DevOps爆破
我们常常想到的是持续集成过程作为一个简单的从左到右的线性过程:代码被编写、提交、构建、测试、部署和交付到生产环境。软件是为“交付”而创建的,这意味着它有一个明确定义的去处。
在这个模型中,创建应用程序就像向火星发送任务一样。在允许任务继续进行之前,你必须计划、审查、测试和验证一切。
为了准备火箭发射,团队必须密切合作。你只有一次机会发射一枚火箭,升空后,没有机会进行更改或更新。从发射台到星空,火箭的能力是固定不变的。
火箭也是消耗品。每次测试都需要建造一枚新的火箭,它有自己未知的风险,直到所有的系统都“就绪”,投入到完成任务的最后一次发射中。

这是一个简洁、经典的工程模型。但这不是DevOps的工作方式。
运行DevOps车队
火箭模型对DevOps的正确之处在于,当创建和操作服务时,开发和运维团队在开发生命周期的所有阶段密切合作的方式。
但是DevOps并不是一个简单的从左到右的过程,而是一个高风险的发布过程。相反,这是一个频繁而无休止的循环,每次起飞都会带来自己的风险。
DevOps更像是现代航空系统,而不是太空任务。航空公司非常频繁地——实际上是连续地——发射飞机,在任何给定的时间,全球有超过100万的空中乘客信任它们。
航空公司管理其机队和航线的过程与DevOps管道保持应用程序最新和可靠的方式非常相似。与您的企业一样,航空公司也需要跟上技术的发展,快速响应安全问题,并根据客户需求的变化进行调整,同时整个系统要不间断地运行。
作为一项持续的实践,航空公司检查(测试),维护(修补),并轮流使用和停止其每架飞机。这个过程非常类似于每个应用程序的持续集成、交付和更新。
与飞往火星的火箭不同,飞机必须一次又一次地着陆和飞行。投入使用的飞机是通过试飞的同一艘船。
既然你明白了它们的区别,你该如何得到你的DevOps的过程不像火箭专家而更像航空公司?
准备起飞
火箭和飞机都是多种来源的产物。不同的内部部门负责船舶的结构、力学和控制。类似地,跨组织的多个团队也为您的应用程序做出贡献。
然而,从闩锁、座椅和地毯等普通元素到复杂的导航系统,大多数船舶部件都是由不同的供应商提供的。应用程序运行的大部分代码也是如此,比如操作系统和语言框架,通常通过远程存储库从企业外部获取。
开发人员可以控制他们自己的代码的哪些部分进入他们的构建。但是,从公共存储库下载的远程包(如npm和Maven)怎么办?这些可能会以你无法控制的不规则间隔变化。
如果您的DevOps流程就像构建火箭,那么每个用于测试或发布的新构建都是偷渡者偷偷上船的机会。
如果没有某种断言监督的方法,您不想要的东西就会溜进您的构建中,并且您可能永远无法多次构建完全相同的结果。

到达跑道
Docker图像就是你的船只,无论是火箭还是飞机。它们是您构建的,并封装了应用程序将要执行的功能。从发射到着陆,它们的能力保持不变。
Docker通过其图像注册表,将容器转化为容器,从而帮助容器到达发射台或闸口,然后像Kubernetes这样的编排器将这些容器送入飞行。
就像火箭一样,您在开发、测试或发布到生产环境时构建的每个Docker映像(每次都是一个新的火箭)可能与上一个略有不同。

像对待飞机一样对待它们意味着确保你向天空发射的东西更加确定。航空公司并不是每次起飞都制造一架新飞机,而是对它们进行测试,然后在航线上可靠地运行,直到需要更换为止。
通过您的管道测试和发布,构建一个您要推广的Docker映像,而不是重新构建的Docker映像,可以确保Docker带来的东西每次都能安全、准时地运行。

地面控制
正如我们希望您看到的那样,真正的DevOps过程并不是从左到右的清晰过程,而是复杂的、迭代的、由设计、分解和重构组成的网络过程。
来运行你的DevOps管道Artifactory更像是一家航空公司,它可以扮演地勤人员的角色,保证一切顺利、按计划进行。Artifactory使开发人员能够控制他们从代码中构建的Docker映像,并获得可靠性和速度,因为总是使用相同的工艺。
首先,Artifactory解决了开发人员面临的一个关键挑战,即使用外部依赖项(如npm和Maven)创建稳定、确定的构建。使用Artifactory,开发人员可以维护远程存储库的本地缓存,以防止代码更改在准备好之前潜入构建中。保持依赖关系也有助于加快构建速度,提高开发人员的工作效率。
使用Artifactory作为Docker注册表还可以更容易地通过测试和发布阶段来促进不可变的构建结果DevOps管道,而不是逐个重建。如果需要,您可以根据Artifactory存储的关于每个构建的详尽信息创建确定性构建。
飞机靠燃料飞行,但航空公司——像所有现代企业一样——靠数据运营。更多地了解他们的车队,他们的客户和他们的人员有助于最大化他们的投资回报。
当Artifactory成为你的Kubernetes的Docker注册表,它为您提供所需的数据,以简化和保护您的操作。它不仅仅是一个容器映像列表,还允许查看其中的内容他们是如何到达那里的.
当你加上图像扫描JFrog x光,您可以获得有关这些映像中的代码的安全性的更多数据,从而进一步保护您的企业。
在友好的天空飞翔
不要认为真正的DevOps就像现代的航空公司。DevOps已经成为一种至关重要的实践对于大多数航空公司在自己的运营。
美国联合航空公司、西南航空公司、阿拉斯加航空公司和捷蓝航空公司都在这方面进行了巨额投资DevOps和CI/CD通过网络和移动平台为客户提供票务、值机、登机等服务。
他们中的许多人已经在他们的环境中包含了Artifactory,并在全球范围内发现了DevOps的全部好处。
正如这些高风险的企业所表明的那样,仅仅将您的Docker容器放到跑道上是不足以实现真正的DevOps的。Artifactory为CI/CD带来的支持使这些鸟类安全飞行。
