DevOps: DevOps使用二进制存储库管理器的8个原因
介绍
现在所有的公司都是软件公司;软件已经接管了世界。应用程序现在是所有公司的核心价值驱动力,无论是在技术、金融、制造、医疗保健还是娱乐领域。
软件开发已经从小型的、紧密结合的团队活动转变为由许多跨学科团队执行的活动,这些团队通常分布在全球各地。迭代和增量的软件开发方法现在是大多数企业的规范。
曾经每年或每年两次发布一个重要的新版本的组织现在通常每月或每周向客户发布一个新版本。许多企业现在将更新部署到生产中一天多次.
随着发布变得越来越频繁,终端用户的期望也随之提高——客户需要频繁的软件更新来修复bug、修补漏洞并提供新功能。

这也是为什么企业越来越重视DevOps-能够更频繁、高质量地在生产环境中创建和部署更多版本的工具和最佳实践。要想成功,DevOps实践旨在减少软件开发生命周期(SDLC)中所有点的摩擦,并自动化工作流程(通过CI和CD服务器等),以大大加快发布速度。
我们将解释为什么以二进制文件为中心的DevOps方法是获得成功的最佳方式。然后我们将展示Artifactory的前8种方法二进制存储库管理器在中心JFrog DevOps平台,为SREs和DevOps团队提供了工具,通过对不断增长的二进制文件、环境和地理分布站点的有效管理来执行它。
DevOps 101:包管理简介
按需观看
伴随着JFrog平台中的支持解决方案,Artifactory可以帮助确保从端到端的平稳和安全的应用程序开发工作流。
Devops的成功取决于你的二进制文件
你可能会问,“DevOps怎么可能是关于二进制的?”软件开发不就是代码吗?”当然,开发人员需要能够专注于编写创新的、无bug的源代码,为客户创造价值。对于大多数开发人员来说,源代码才是最重要的。
但是和编码一样重要的是,源代码并不是客户使用的——他们运行的是一个应用程序,这个应用程序是由来自多个来源的许多二进制文件组合而成的。您交付给客户的软件的质量取决于其中二进制文件的质量。
软件开发是关于代码的,高质量的代码来自那些知道如何编写代码的聪明人。
软件交付是关于二进制文件的——确保高质量的构建,并将它们迅速送到客户手中。高质量的二进制文件来自知道如何管理和分发它们的智能系统。
我们可以在最佳实践SDLC的DevOps循环的标准图中看到这一点:

清楚是什么?源代码在整个SDLC中起着基础作用,但比例很小。DevOps循环中的大多数进程根本不直接处理代码,而是以构建、测试、部署和运行的二进制文件为中心。
工件:开发与交付相遇的地方
工件是软件的构建块,从您的包和配置文件到作为应用程序可部署运行时组件的二进制文件。每个交付的应用程序都由一组相互连接的工件组成。
二进制文件是在最终部署到生产环境之前通过测试、验证和安全检查点,从一端传递到另一端的软件交付管道。
虽然每个应用程序都从源代码开始,但每个源文件都通过许多构建和测试步骤产生并依赖于许多工件(二进制文件和依赖项),然后才产生可交付的软件。
DevOps的目标加快高质量软件发布的交付.它通过消除软件交付流中的摩擦来做到这一点,这通常是在软件生命周期过程相遇的地方发现的。这带来了一致性和确定性,实现了快速交付的自动化。

您的工件生态系统——可部署的二进制文件及其相关文件——占据了开发与交付相遇的空间。JFrog平台的能力控制、简化和自动化二进制文件的流程是成功DevOps最强大的关键。
devops的唯一真相来源
如果所有的开发都使用一种编程语言,那么坚持一组最佳实践将很容易。但是,随着组织将语言和技术添加到他们的工具链中,实践和执行相同的工作流变得越来越困难。
作为JFrog平台背后的力量,Artifactory是你所有工件的通用存储库管理器:依赖项、二进制文件和配置文件。与本机支持超过30种包类型(包括通用存储库),它是用于存储、保护和跟踪开发组织的整个工件生态系统的单一来源。开发人员可以通过他们每天使用的包管理服务在Artifactory存储库中存储和检索他们的包或映像。
Artifactory的通用二进制文件管理服务于您组织中的所有开发人员。无论他们是用Java、JavaScript、Python、Go、c++、c#、Swift、Rust或更多语言开发程序,Artifactory都是每个人的包和构建的中心家园。
当您的所有二进制文件都通过这个通用工具进行管理时,您的整个企业就可以对齐到相同的SDLC工作流和最佳实践上,这将确保质量并加快发布速度。这就是为什么Artifactory是全自动软件分发为JFrog DevOps平台提供动力的管道。
跟踪软件物料清单(sbom)
构建很容易。了解你所建立的一切是很难的。特别是当你每天或每小时都制作许多新版本时。
Artifactory存储新的元数据——我们称之为“构建信息”——与您所做的每个构建一起,链接到您的开源和专有依赖的包元数据,以及构建工件和环境设置。有了详细的构建信息,您就可以追踪每一个构建,追溯到它的来源,以及它被放置用于服务的每一个地方.
您的构建信息是软件材料清单(SBOM)的基础,这是一份机器可读的清单,详细列出了应用程序中包含的所有项目及其来源,适用于每个投入生产或交付给客户的版本。
随着越来越多的政府和受监管的行业需要一个SBOM来帮助打击网络攻击,JFrog平台是您的合规性交钥匙解决方案。
Artifactory的构建信息有助于确保您永远不会对构建从何而来、如何创建或在何处部署一无所知。

Artifactory查询语言
元数据对于CI/CD过程至关重要;它使自动化能够做出明智的决定。
Artifactory查询语言(AQL)使您能够发现与Artifactory存储库中存储的工件和构建相关的任何数据。它的语法提供了一种简单的方法来制定复杂的查询,这些查询指定任意数量的搜索条件、过滤器、排序选项和输出参数。AQL作为RESTful API公开,它使用数据流提供输出数据,从而实现极快的响应时间和低内存消耗。
使用AQL, DevOps工程师可以在不断增长的存储库中快速识别相关的包和构建。他们可以在CI/CD服务器中使用AQL来自动化原本需要人工干预的过程,或者在分析中使用AQL来提高工作流性能。
通过代理缓存远程存储库
从npm、Maven、Conan等远程资源存储库中提取的开源软件(OSS)依赖关系很容易成为当今应用程序中更重要的代码部分。确保站点可靠性和快速访问是保持发布速度的关键,但也会面临以下几个挑战:
网络延迟
物理距离的固有延迟-远程站点可能位于地球的另一端。
沉重的负荷
由于对某项服务的大量需求而造成的延误。
可怜的连通性
网络中断,抖动,带宽差,连接不稳定。
网站宕机
存储依赖项的远程站点可能会因故障、攻击或服务丢失而遭受服务中断。
Artifactory中的远程存储库是一个本地代理,它将您的远程资源依赖项缓存到您保存本地存储库的同一站点上。开发人员从不直接访问远程资源,而是使用Artifactory中的依赖项的按需副本进行构建。
这有助于消除物理距离或不稳定的服务连接所固有的网络延迟,并保持构建尽可能快地运行。代理还可以防止由于连接中断或远程站点本身不可用而造成的中断。
同样重要的是,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和其他安全的,组织范围的凭据管理。
漏洞扫描
在最近的一项调查中,只有18%的组织报告说对他们的开源组件非常有信心,这通常是应用程序代码的60-80%。几乎有两倍的人要么不太自信,要么根本不自信。
伴生安全解决方案JFrog Xray对JFrog平台存储库中的二进制文件执行深度递归扫描,以识别所有已知漏洞的开源组件。作为JFrog平台的一部分,Xray与Artifactory紧密集成,维护额外的安全元数据并提供影响分析,因此您可以快速修复所有使用易受攻击依赖的二进制文件。
使用Xray,您可以防止将高风险的构建部署到生产环境中,并允许召回新发现的具有风险的构建。
此外,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边缘节点(低成本的只读Artifactory实例),您可以通过在每个目的地验证的私有数据网络传输已签名的、不可变的版本,同时保持细粒度的访问控制。
Artifactory让你的二进制文件工作
证据很明显:成功DevOps的关键——最小化或消除管道中的摩擦——在于通过整个SDLC对二进制文件进行有效管理。二进制存储库管理器是数字化转换的关键代理。
我们在这里给出的8个理由是这种以二进制为中心的DevOps方法的基本实践。这也是JFrog平台所围绕的核心价值观,以更好地确保您的成功。
Artifactory的设计和特性为开发人员提供了DevOps的最佳实践,减少了关键生命周期阶段的摩擦,并加速了软件交付。

这种以二进制文件为中心的敏捷数字转换方法的有效性已被每天、每小时成千上万的JFrog客户所证明。
JFROG平台
Artifactory是支持JFrog DevOps平台的核心组件,是一站式DevOps的全面端到端平台解决方案。
JFrog平台可以在多个订阅级别上使用,也可以作为云中的托管服务。每个级别都包含一组适合您组织需求的JFrog组件。无论您是内部应用程序的小型开发团队,还是向边缘交付安全软件的全球企业,JFrog都为您提供合适的解决方案。


devops的唯一真相来源
跟踪软件物料清单(sbom)
通过代理缓存远程存储库
一次建造,到处推广
加速云原生开发
保护软件供应链
连接到你的工具世界
缩放到无穷大