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

介绍

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

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

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

随着版本的频繁发布,最终用户的期望也会随之增加——客户需要频繁的软件更新来修复错误、修补漏洞和提供新功能。

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

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

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

开发的成功存在于你的二进制文件中

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

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

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

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

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

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

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

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

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

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

DevOps的目标是加快交付高质量的软件版本.它通过消除软件交付流程中的摩擦来实现这一点,而这些摩擦通常是软件生命周期过程相遇的地方。这带来的一致性和确定性使快速交付自动化成为可能。

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

从云原生到云灵活

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

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

混合云和多云正在迅速成为云服务交付最流行的IT架构,因为企业通过从单一云提供商那里撤资来寻求更大的虚拟运营灵活性。

灵活的云计算企业需要在任何云中、任何地方运行的能力,因此他们可以:

  • 将云选择与给定任务的一流服务相匹配
  • 将工作负载分配给成本最低的供应商
  • 转移工作负载以实现负载平衡或调整以适应需求定价
  • 保持数据和计算服务的地理位置接近
  • 维护冗余以帮助确保5 - 9可用性
  • 采用混合策略来满足安全和/或法规要求

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

保持一致的安全姿态

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

到处都是相同的特性集

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

分布在一流的服务中

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

多域自动化

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

透明云迁移

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

为SaaS选择云

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

为开发人员提供一个真实的来源

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

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

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

“我们还没有发现什么东西是我们不能推入Artifactory的。我们的技术选择不受Artifactory的限制。——Monster CI/CD主管Graham Bucknell

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

跟踪软件物料清单(bom)

构建很容易。了解你所创造的一切是很困难的。尤其是当你每天或每小时都要做很多新构建的时候。

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

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

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

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

“对我们的开发人员来说,一个很大的好处是建立元数据——当log4j出现时,最容易的事情就是生成一个报告,告诉我们哪些应用程序有易受攻击的依赖,修复它,然后我们就可以开始了。”- Caio Trevisan, Bendigo和Adelaide Bank的DevOps服务负责人

人工查询语言

人工查询语言(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 Trusted Registry提供的安全性。使用Artifactory的本地存储库而不是Docker Hub上的私有存储库,避免了所有的互联网连接问题,提供了对映像的可靠和一致的访问。

Artifactory还支持Helm图表存储库,所以你也可以管理你的Kubernetes编排清单和你的Docker映像。这样,JFrog平台就可以作为您的全面的Kubernetes注册表,为部署到集群的所有内容提供一个中央的、可追踪的home。

docker hub没有限制

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

通过设置一个Artifactory远程存储库来代理Docker Hub,云用户可以无限制地、高性能地访问Docker Hub和Docker Official Images,从而简化云原生应用程序的开发。

通过利用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中的事件,通知用户该事件或启动自动流。

构建集成

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

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

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

自然集成的ci / cd

JFrog Pipelines CI/CD是构建CI/CD生态系统的最快方式。作为JFrog DevOps平台的一部分,pipeline与Artifactory自然地结合在一起。使用pipeline的声明式预构建步骤,您可以将重点放在进入存储库的内容上,而不是如何获得这些内容。

对于JFrog平台、Xray和Distribution的其余组件,DevOps领域核心的统一工具在安装时已进行了预集成。

pipeline还为您的生态系统中最流行的工具提供开箱即用的集成,包括GitHub、GitLab、BitBucket、Slack、Jira、AWS、GCP、Docker、Kubernetes等等。只要输入URL端点和用户凭证,就可以将这些服务中的大多数集成到pipeline中。

缩放到无穷大

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

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

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

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

本地高可用性

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

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

云(SaaS)

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

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

混合动力

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

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

多站点Geo-Replication

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

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

分配到最远的边缘

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

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

Artifactory使您的二进制文件工作

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

我们在这里给出的8个理由是这种以二进制为中心的DevOps方法的基本实践。它们也是JFrog平台赖以建立的核心价值,能够更好地确保你的成功。

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

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

JFROG平台

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

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

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

要么释放,要么死亡