DevOps: DevOps在云中使用二进制存储库管理器的8个原因

介绍

对于今天的企业来说,云计算现在是应用程序、存储和计算的默认模型。云使组织能够快速创新,并以最低的成本和风险进行大胆的数字赌注,同时能够灵活地扩展。云是业务现代化的关键。

与此同时,软件开发已经从小型的、紧密结合的团队活动转变为由许多跨学科团队执行的活动,这些团队通常分布在全球各地。软件开发的迭代和增量方法是现代企业的规范,现在企业是云支持的、软件驱动的和虚拟的。

曾经每年或每年两次发布一个重要的新版本的组织现在通常每月或每周向客户发布一个新版本。许多企业现在将更新部署到生产中一天多次

随着发布变得越来越频繁,终端用户的期望也随之提高——客户需要频繁的软件更新来修复bug、修补漏洞并提供新功能。

这也是为什么企业越来越重视DevOps-能够更频繁、高质量地在生产环境中创建和部署更多版本的工具和最佳实践。为了取得成功,DevOps实践旨在减少软件开发生命周期(SDLC)中所有点的摩擦,并自动化工作流(通过CI和CD服务器等),以大大加快发布速度。

我们将解释为什么以二进制文件为中心的DevOps方法是获得成功的最佳方式。然后我们将展示Artifactory的前8种方法二进制存储库管理器在中心JFrog DevOps平台,为SREs和DevOps团队提供了工具,通过对不断增长的二进制文件、环境和地理分布站点的有效管理来执行它。

与JFrog平台中的支持解决方案一起,Artifactory可以帮助确保从端到端的平稳和安全的应用程序开发工作流,并支持您所需的混合和多云架构,以加速创新,保持一流水平,并降低云供应商锁定的风险。

Devops的成功取决于你的二进制文件

你可能会问,“DevOps怎么可能是关于二进制的?”软件开发不就是代码吗?”当然,开发人员需要能够专注于编写创新的、无bug的源代码,为客户创造价值。对于大多数开发人员来说,源代码才是最重要的。

但是和编码一样重要的是,源代码并不是客户使用的——他们运行的是一个应用程序,这个应用程序是由来自多个来源的许多二进制文件组合而成的。您交付给客户的软件的质量取决于其中二进制文件的质量。

软件开发是关于代码的,高质量的代码来自那些知道如何编写代码的聪明人。

软件交付是关于二进制文件的——确保高质量的构建,并将它们迅速送到客户手中。高质量的二进制文件来自知道如何管理和分发它们的智能系统。

我们可以在最佳实践SDLC的DevOps循环的标准图中看到这一点:

清楚是什么?源代码在整个SDLC中起着基础作用,但比例很小。DevOps循环中的大多数进程根本不直接处理代码,而是以构建、测试、部署和运行的二进制文件为中心。

工件:开发与交付相遇的地方

工件是软件的构建块,从您的包和配置文件到作为应用程序可部署运行时组件的二进制文件。每个交付的应用程序都由一组相互连接的工件组成。

二进制文件是在最终部署到生产环境之前通过测试、验证和安全检查点,从一端传递到另一端的软件交付管道。

虽然每个应用程序都从源代码开始,但每个源文件都通过许多构建和测试步骤产生并依赖于许多工件(二进制文件和依赖项),然后才产生可交付的软件。

DevOps的目标加快高质量软件发布的交付。它通过消除软件交付流中的摩擦来做到这一点,这通常是在软件生命周期过程相遇的地方发现的。这带来了一致性和确定性,实现了快速交付的自动化。

您的工件生态系统——可部署的二进制文件及其相关文件——占据了开发与交付相遇的空间。JFrog平台的能力控制、简化和自动化二进制文件的流程是成功DevOps最强大的关键。

从云原生到云灵活

系统架构师必须确保他们的系统是云原生的,其应用程序针对可扩展的云技术基础设施进行了优化。

显而易见的是,云原生解决方案只是在云和混合环境中运行敏捷、可扩展运营的开始。有远见的DevOps工程师还必须寻求解决方案云灵活:操作一致的平台,允许您进行选择,并使您能够跨多个公共和私有域分布关键工作负载。

混合云和多云正在迅速成为最受欢迎的云服务交付IT架构,因为企业通过从单一云提供商剥离业务来寻求更大的虚拟操作灵活性。

灵活的云计算企业需要能够在任何地方的任何云上运行,这样他们就可以:

  • 对于给定的任务,将云选择与同类最佳服务相匹配
  • 为每个供应商分配最低成本的工作负载
  • 为负载平衡或根据需求定价调整工作负载
  • 保持数据和计算服务在地理上接近
  • 保持冗余,以确保5个9的可用性
  • 采用混合策略来满足安全性和/或法规需求

云灵活的企业能够更好地适应变化,而不会失去平衡或速度。

保持一致的安全态势

通过跨云域的一致权限和监控来保护软件供应链。

到处都是相同的特征集

通过相同的最佳DevOps实践,使用一致的操作模型跨云进行互操作。

分布在一流的服务中

为您的SDLC的不同部分选择最合适的云提供商。

多域自动化

通过可靠的地理复制和互操作性,可以安全地将有效载荷从一个云交付到另一个云。

透明云迁移

维护操作连续性迁移从一个实例到另一个实例的包、构建和元数据。

为SaaS选择云

在多个云提供商上托管SaaS帐户,以便数据接近您的团队使用的云生态系统。

devops的唯一真相来源

随着组织将语言和技术添加到其工具链中,坚持单一的工作流最佳实践集变得越来越困难。

作为JFrog平台背后的力量,Artifactory是你所有工件的通用存储库管理器:依赖项、二进制文件和配置文件。与本机支持超过30种包类型(包括通用存储库),它是用于存储、保护和跟踪开发组织的整个工件生态系统的单一来源。开发人员可以通过他们每天使用的包管理服务在Artifactory存储库中存储和检索他们的包或映像。

Artifactory的通用二进制文件管理服务于您组织中的所有开发人员。无论他们是用Java、JavaScript、Python、Go、c++、c#、Swift、Rust或更多语言开发程序,Artifactory都是每个人的包和构建的中心家园。

“我们还没有碰到一种不能推广到Artifactory的东西。我们的技术选择从未受到Artifactory的限制。——Graham Bucknell (Monster的CI/CD主管

当您的所有二进制文件都通过这个通用工具进行管理时,您的整个企业就可以对齐到相同的SDLC工作流和最佳实践上,这将确保质量并加快发布速度。这就是为什么Artifactory是支持JFrog DevOps平台的全自动软件分发管道的核心组件。

跟踪软件物料清单(sbom)

构建很容易。了解你所建立的一切是很难的。特别是当你每天或每小时都制作许多新版本时。

Artifactory存储新的元数据——我们称之为“构建信息”——与您所做的每个构建一起,链接到您的开源和专有依赖的包元数据,以及构建工件和环境设置。有了详细的构建信息,您就可以追踪每一个构建,追溯到它的来源,以及它被放置用于服务的每一个地方

您的构建信息是软件材料清单(SBOM)的基础,这是一份机器可读的清单,详细列出了应用程序中包含的所有项目及其来源,适用于每个投入生产或交付给客户的版本。

随着越来越多的政府和受监管的行业需要一个SBOM来帮助打击网络攻击,JFrog平台是您的合规性交钥匙解决方案。

Artifactory的构建信息有助于确保您永远不会对构建从何而来、如何创建或在何处部署一无所知。

“对我们的开发人员来说,一个很大的奖励是构建元数据——当log4j命中时,生成一个关于哪些应用程序有脆弱依赖关系的报告是最简单的事情,并修复它,我们就可以继续了。”——Caio Trevisan, Bendigo and Adelaide Bank的DevOps服务负责人

Artifactory查询语言

Artifactory Query Language (AQL)使DevOps工程师能够在不断增长的存储库中快速识别相关的包和构建。他们可以在CI/CD服务器中使用AQL来自动化原本需要人工干预的过程,或者在分析中使用AQL来提高工作流性能。

通过代理缓存远程存储库

从npm、Maven、Conan等远程资源存储库中提取的开源软件(OSS)依赖关系很容易成为当今应用程序中更重要的代码部分。确保站点可靠性和快速访问是保持发布速度的关键,但也会面临以下几个挑战:

网络延迟

物理距离的固有延迟-远程站点可能位于地球的另一端。

沉重的负荷

由于对某项服务的大量需求而造成的延误。

可怜的连通性

网络中断,抖动,带宽差,连接不稳定。

网站宕机

存储依赖项的远程站点可能会因故障、攻击或服务丢失而遭受服务中断。

Artifactory中的远程存储库是一个本地代理,它在您保存本地存储库的相同基础设施上缓存远程资源依赖项。开发人员从不直接访问远程资源,而是使用Artifactory中的依赖项的按需副本进行构建。当Artifactory托管在与您的计算相同的云环境中时,您的构建可以以最高速度运行。

“想象一下,几千名开发人员通过一个代理才能访问Maven Central。由于Artifactory的存在,这种不必要的流量现在被否定了。我们能够在不超出防火墙的情况下构建解决方案。”

——Mike Smith, Kroger的技术架构师

消除物理距离或跨云服务区域固有的网络延迟,有助于保持构建尽可能快地运行。如果远程站点本身不可用,代理还可以防止中断。

同样重要的是,Artifactory中的缓存有助于将依赖项维护为不可变的版本——在第一次按需从远程资源中提取后,缓存中的包永远不会更改。这可以防止任何强制推送覆盖到远程资源(可能是恶意的),并保证确定性构建。

虚拟存储库

虚拟存储库封装了任意数量的本地和远程存储库,并将它们表示为从单个URL访问的统一存储库。它为您提供了一种管理开发人员访问哪些存储库的方法,因为您可以自由地混合、匹配和修改其中包含的实际存储库。

您还可以通过定义底层存储库顺序来优化工件解析,这样Artifactory将首先查看本地存储库,然后查看远程存储库缓存,只有这样,Artifactory才会直接从远程资源请求工件。对于开发人员来说,这很简单。只需请求包,Artifactory将根据您组织的策略安全且优化地访问它。

一次建造,到处推广

在持续集成的敏捷方法下,每个新软件版本都必须通过SDLC中的几个质量检验关。候选版本在发布为通用版本之前,会先后被提升到不同的团队进行集成、测试和登台。

什么通过这些大门将决定玩家是快速还是缓慢地释放游戏。当通过源代码进行版本升级时,每个接收团队必须在自己的运行时环境中执行自己的确定性代码构建,这可能会导致一组不同的二进制文件。这缺乏在每个阶段评估的软件与最后一个阶段完全相同的确定性。

Artifactory的二进制存储库管理提供了一种更加一致和可靠的方法一个单一的,不可变的二进制文件贯穿整个SDLC。使用每个SDLC阶段的存储库,构建它的元数据可以通过将其按顺序转移到下一个回购来在JFrog平台中进行提升。

在这种“一次构建并升级”的方法中,相同的构建在每个阶段都要进行评估,确保DevOps管道的绝对一致性。

一旦不需要执行自己的构建或管理构建环境,团队就可以利用恢复的时间来执行更详尽的测试并更快地交付反馈。

在每个阶段,团队可以向候选构建信息中添加关于稳定性、安全性等的额外元数据。通过传递从一个阶段学习到的下一个阶段可以使用的关键元数据,JFrog平台进行了积累关于投入生产的每个构建的谱系的全面记录

CHECKSUM-BASED存储

JFrog平台通过确保任何二进制文件只在文件系统上存储一次来优化存储。当二进制文件存储在本地或远程存储库中时,Artifactory会计算该文件的唯一校验和(支持MD5和SHA1),并将该文件重命名为其校验和。存储库只保存对文件及其元数据的引用,因此当将二进制文件复制或提升到另一个存储库时,只更改引用。物理文件永远不会被复制,它的校验和可以用来验证二进制文件的完整性。

加速云原生开发

软件开发越来越多地成为云原生开发:编写应用程序以有效利用云技术基础设施,并启用在云中运行的固有最佳特性。

这意味着生产基于容器的微服务,依赖于已建立的云原生标准(如OCI)和云原生工具(如Docker和Kubernetes)。

JFrog平台中的Docker存储库完全支持所有Docker Registry api,因此它们可以在Docker CLI中原生运行。使用本地存储库,您可以根据需要在Artifactory中维护尽可能多的私有Docker注册表,以便在您的组织中分发和共享容器映像。

Artifactory揭示了组成它的每个Docker或OCI映像中的层,并将元数据链接到其所有部分的起源的完全可追溯路径。

当与JFrog平台的细粒度访问控制相结合时,您可以维护安全、私有的Docker存储库,其安全性超过Docker可信注册表提供的安全性。使用Artifactory的本地存储库而不是Docker Hub上的私有存储库,可以避免所有互联网连接问题,提供可靠和一致的图像访问。

Artifactory还支持Helm图表存储库,因此您还可以在Docker映像的同时管理Kubernetes编排清单。通过这种方式,JFrog平台可以作为您的综合Kubernetes注册表,一个中央的、可跟踪的家,用于部署到集群中的所有内容。

docker hub没有限制

JFrog与Docker的合作使Artifactory的JFrog云用户免受Docker Hub的镜像拉速率限制。通常,匿名免费用户每6小时只能拉100次,而经过身份验证的免费用户每6小时只能拉200次。但是当图像提取请求来自JFrog Cloud帐户时,Docker Hub将放弃这些限制。

通过设置Artifactory远程存储库来代理Docker Hub,云用户可以获得对Docker Hub和Docker官方映像的无限高性能访问,简化了云原生应用程序的开发。

通过利用JFrog Xray,开发人员还可以对他们从Docker Hub提取的图像进行持续、全面的漏洞扫描。

保护软件供应链

当您经营一家企业时,保护您的软件供应链(应用程序的组成部分)免受错误和攻击对于保护最宝贵的东西:您的业务至关重要。

供应链攻击Tyupkin(2014),NotPetya(2017),操作ShadowHammer(2019)和SolarWinds(2020)已经引起了人们的高度重视,并促使世界经济论坛将它们列为最受欢迎的产品之一最大的网络安全挑战

作为所有二进制文件的唯一真实来源,二进制存储库管理器成为供应链网络攻击的一个有吸引力的目标。这就是为什么安全性是JFrog平台的首要任务

身份验证

JFrog平台的所有服务都需要通过密码或访问令牌等安全凭证进行身份验证。

校验和验证

每个工件的计算校验和对于它在Artifactory存储库中的存储方式是不可或缺的,并用于验证其完整性。

权限管理

通过JFrog平台的细粒度访问控制,管理员可以确保开发人员和组只能通过他们被授权的CRUD操作访问存储库。

SSO

对LDAP, SAML, OAuth和SCIM协议的支持使管理员能够集成单点登录服务,如Active Directory, Crowd和其他安全的,组织范围的凭据管理。

JFrog Artifactory的细粒度权限及其与通过多个协议的单点登录的集成使组织能够跨多个云域对其软件供应链保持相同的高质量保护。

漏洞扫描

在最近的一项调查中,只有18%的组织报告说对他们的开源组件非常有信心,这通常是应用程序代码的60-80%。几乎有两倍的人要么不太自信,要么根本不自信。

伴生安全解决方案JFrog Xray对JFrog平台存储库中的二进制文件执行深度递归扫描,以识别所有已知漏洞的开源组件。作为JFrog平台的一部分,Xray与Artifactory紧密集成,维护额外的安全元数据并提供影响分析,因此您可以快速修复所有使用易受攻击依赖的二进制文件。

使用Xray,您可以防止将高风险的构建部署到生产环境中,并允许召回新发现的具有风险的构建。

此外,Xray还可以监视开源组件的许可类型,提醒您所有不符合组织策略的组件。

使用JFrog Xray,您可以在所有云环境中对漏洞进行一致的监控、报告和修复以及合规性扫描。

连接到你的工具世界

对于开发人员来说,DevOps是一组朝着产品质量发布的方向流动的管道。

但对于站点可靠性工程师来说,DevOps是一种组织结构,将工具和过程编织在一起,以创建强大的、有弹性的基础设施。

很好地集成复杂的DevOps工具栈对于可靠的操作至关重要,而保持这个生态系统的运行会消耗太多的工程时间。

首先是自动化构建的工具:您的CI/CD服务器必须与存储它们的系统顺利集成。JFrog平台可以通过以下方式连接到您选择的CI/CD自动化:

CLI

命令行接口(CLI)工具使开发人员能够通过命令窗口、shell脚本或CI管道在存储库之间存储和检索二进制文件和元数据。

REST api

开发人员可以使用REST命令管理二进制存储库旋度或自定义DevOps工具。

人则

触发另一个服务中的动作以响应Artifactory中的事件,要么通知用户该事件,要么启动自动化流程。

构建集成

主要CI工具(如Jenkins、Circle CI、TeamCity、Bitbucket、Pipelines和Azure DevOps)的现成插件和扩展加速了与CI管道的集成。

当然,这只是集成需求的开始。的工具自动化测试、协作、ITSM、可观察性和分析都是DevOps基础结构的一部分。您将希望将这些工具生成的信息推入存储库,并将这些信息连接到其他工具。

通过与顶级行业供应商集成的JFrog合作伙伴大家庭,JFrog平台可以通过这个单一的真相来源帮助您快速构建强大、紧密的DevOps工具堆栈。

自然集成ci / cd

JFrog Pipelines CI/CD是构建CI/CD生态系统的最快方式。作为JFrog DevOps平台的一部分,Pipelines自然与Artifactory结合在一起。使用管线的声明式预构建步骤,您可以专注于存储库中的内容,而不是如何将其放入存储库。

通过JFrog平台、Xray和Distribution的其余组件,DevOps宇宙核心的统一工具在安装时就已经预先集成了。

管线还为您的生态系统中最流行的工具提供开箱即开的集成,包括GitHub, GitLab, BitBucket, Slack, Jira, AWS, GCP, Docker, Kubernetes等等。将这些服务中的大多数与pipeline集成起来就像输入URL端点和用户凭证一样简单。

缩放到无穷大

对于现代企业来说,软件开发现在是一项高度协作的工作,由分布在全球各地的多个站点和云区域的交叉团队共享包。

即使是小团队也应该期望成长,DevOps的最佳实践必须与他们无缝扩展。

这些以二进制文件为中心的DevOps最佳实践——真相、元数据、构建升级、安全性等单一来源——已被证明可以顺利扩展。每天,他们都能让JFrog平台的用户快速发布高质量的软件,无论它是由5个人在一个房间里开发的,还是由全球500人开发的。

作为您的关键任务工具,即使您的部门不断增长,您也需要确保持续和响应式访问。

本地高可用性

在您自己的云帐户的集群中,或在您自己的安全数据中心的本地服务器上,作为BYOL安装进行自我管理。

集群中复制节点的高可用性配置有助于分散负载,以适应大负载突发,并确保没有单点故障。这使您的正常运行时间最大化,即使在系统更新期间,也可达到“五个9”级别的可用性。

云(SaaS)

订阅在您选择的主要云提供商(AWS、GCP或Azure)中托管的JFrog云托管服务,并利用云的“随时随地”可用性和弹性。

通过维护托管在不同云提供商上的多个SaaS帐户来采用多云策略。这有助于避免供应商锁定,并能够将工作负载分配给最具成本效益的供应商。

混合动力

混合策略使您能够为动态工作负载使用云的可伸缩性,同时将敏感工作负载保存在安全的本地数据中心的集群中。

JFrog平台的“这里一样,那里一样”承诺在每个环境中都具有相同的特性,这意味着您可以根据需要在云和on-prem之间划分工作负载。

多站点Geo-Replication

JFrog平台通过多个推/拉复制拓扑选项或存储库的双向联合来实现多站点地理复制。

JFrog独特的多站点功能集确保了任何全球云拓扑结构中的局部性。这使得地理上分布的团队能够以最小的延迟处理相同的工件(二进制文件及其元数据),以便在每个云区域的每个站点上的每个构建都能快速完成,没有失败。

分布到最远的边缘

一旦你有了一个完全验证的版本,它需要去哪里?企业必须将软件和更新分发到越来越多的全球端点,以便交付到集群、设备和桌面,从而使用户受益。

作为JFrog DevOps平台的一部分,JFrog Distribution使DevOps团队能够有效地打包来自Artifactory的发布包(二进制文件、工件和元数据),并自动将可信的软件交付到全球数十个或数千个远程站点。在多个云区域使用JFrog Edge节点(具有成本效益的只读Artifactory实例),您可以通过在每个目的地验证的私有数据网络传输已签名的、不可更改的版本,同时保持细粒度的访问控制。

Artifactory让你的二进制文件工作

证据很明显:成功DevOps的关键——最小化或消除管道中的摩擦——在于通过整个SDLC对二进制文件进行有效管理。二进制存储库管理器是数字化转换的关键代理。

我们在这里给出的8个理由是这种以二进制为中心的DevOps方法的基本实践。这也是JFrog平台所围绕的核心价值观,以更好地确保您的成功。

Artifactory的设计和特性为开发人员提供了DevOps的最佳实践,减少了关键生命周期阶段的摩擦,并加速了软件交付。

这种以二进制文件为中心的敏捷数字转换方法的有效性已被每天、每小时成千上万的JFrog客户所证明。

JFROG平台

Artifactory是支持JFrog DevOps平台的核心组件,是一站式DevOps的全面端到端平台解决方案。

云原生JFrog平台在每个操作环境中提供了完整的市场领先的特性集,使您能够跨云操作您的SDLC,使用相同的最佳实践和一致的安全态势,以确保DevOps的成功。

JFrog平台有多种订阅级别,可用于自托管安装或作为云中的托管服务。每个级别都包含一组适合您组织需求的JFrog组件。无论您是内部应用程序的小型开发团队,还是向边缘交付安全软件的全球企业,JFrog都为您提供合适的解决方案。

要么快速释放,要么死亡