头图

本文来源jfrog.com,由JFrog中国授权合作伙伴、DevSecOps解决方案提供商-龙智节选进行翻译整理,旨在为中国用户提供更贴合本地需求的产品解读与实践指导。

如需了解更多关于JFrog Artifactory的功能与价值,龙智为您提供专业的产品咨询、免费试用以及定制化解决方案。

引言

企业越来越重视软件开发运维(通常称为DevOps),以识别和部署最有效的解决方案和最佳实践,从而更快、更频繁且更安全地将高质量的版本发布到生产环境中。

要成功完成这一任务,DevOps专业人员必须致力于在软件开发生命周期(SDLC)的所有环节提高效率并减少摩擦。包括监控和自动化工作流程,从编码阶段的开源软件包管理,到通过构建工具和CI/CD技术加速高质量版本的发布,并确保安全分发。

为此,企业选择适合的技术平台至关重要——这些平台应能够带来更快的软件交付速度、更高的质量、改进的协作能力,并最终推动企业在当今数字化环境中的业务成功。

本文探讨了为什么以“二进制文件为中心”的DevOps方法是企业取得成功的最佳途径,并详细介绍了JFrog DevOps平台的核心——二进制文件管理工具JFrog Artifactory为SRE和DevOps团队提供的八大关键优势,以帮助高效管理日益增长的二进制文件、环境以及地理分散的站点矩阵。

DevOps的核心是二进制文件

DevOps的核心是二进制文件——对此,你可能会有所质疑:软件开发的核心是代码,DevOps怎么可能围绕二进制文件展开呢?但事实确实如此。

开发者需要专注于编写高效、创新且无漏洞的源代码,为客户创造价值。对大多数开发者而言,源代码才是最重要的。然而,编码固然重要,但客户最终使用的并不是源代码,而是由多个来源的众多二进制文件组成的应用程序。因此,交付给客户的软件质量最终取决于组成它的二进制文件的质量。

  • 软件开发与代码有关,而高质量的代码来自懂得如何编写代码的开发者。
  • 软件交付的核心是二进制文件——确保高质量的构建,并将其快速交付给客户。
  • 高质量的二进制文件则来自能够高效管理并分发它们的智能系统。

这一点可以从DevOps循环和SDLC最佳实践的标准图中看出:

显而易见,源代码在SDLC中起着基础性的作用,但所占比例相对较小。DevOps循环中的大多数流程并不直接处理代码,而是以构建、测试、部署和运行的二进制文件为中心。

JFrog Artifactory的8个关键优势

01.二进制文件的单一事实来源

随着企业在其工具集中添加更多的语言和技术,遵守统一的工作流最佳实践变得越来越困难。

作为JFrog平台的核心,Artifactory是一个通用的存储库管理器,用于管理所有工件、依赖项、二进制文件和配置文件。它原生支持30多种包类型(包括通用存储库),是存储、保护和跟踪整个工件生态系统的单一来源。开发者可以通过他们日常使用的包管理服务,在Artifactory存储库中存储和检索他们的软件包或镜像。

Artifactory存储库类型:

Artifactory的通用二进制管理服务于企业中的所有开发者。无论他们使用Java、JavaScript、Python、Go、C++,还是C#、Swift或Rust 开发程序,Artifactory都是每个人的软件包和构建的中心之家。

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

02.跟踪软件物料清单(SBOM)

构建很容易,但了解构建的所有内容却很难。特别是当你每天甚至每小时生成许多新的构建时。

每次构建时,Artifactory都会存储新的元数据(我们称之为 “构建信息”),并链接到开源和专有依赖项的软件包元数据、构建工件和环境设置。通过详细的构建信息,你可以追溯每个构建的来源,并跟踪它在各个环境中部署的情况。

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

随着越来越多的政府和受监管行业要求提供SBOM来帮助应对网络攻击,JFrog平台成为合规的即用型解决方案。

Artifactory的构建信息确保你永远不会对某个构建的来源、创建方式或部署位置一无所知。

Artifactory查询语言(AQL):

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

03.通过代理缓存远程存储库

从远程资源存储库(如npm、Maven、Conan等)获取的开源软件 (OSS) 依赖项,往往占当今应用程序代码的较大比例。确保站点的可靠性和快速访问是保持发布速度的关键,但也会面临一些挑战:

  • 网络延迟:物理距离导致的固有延迟——远程站点可能位于地球另一端。
  • 高负载:因服务需求量大而造成的延误。
  • 连接不良:网络中断、抖动、带宽不足、连接不稳定。
  • 站点宕机:存储依赖项的远程站点可能会因故障、攻击或服务丢失而中断。

Artifactory中的远程存储库是一个本地代理,缓存远程资源依赖项,并将其存储在与本地存储库相同的基础架构上。开发者不会直接访问远程资源,而是通过Artifactory中按需获取的依赖项副本进行构建。当Artifactory托管在与计算环境相同的云环境中时,构建可以以最高速度运行。

消除物理距离或跨云服务区域固有的网络延迟,有助于确保构建的运行速度。代理还保护了远程站点不可用时的中断风险。

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

虚拟存储库:

虚拟存储库封装了任意数量的本地和远程存储库,并通过单个URL访问它们,形成一个统一的存储库。它提供了一种管理开发者访问哪些存储库的方式,你可以自由混合、匹配和修改其中包含的实际存储库。

04.一次构建,随处推广

在持续集成的敏捷方法中,每个新软件版本都必须通过SDLC中的多个质量门。候选版本在发布供广泛使用之前,会被逐步推广到不同的团队进行集成、测试和部署。

但通过这些质量门的内容决定了发布是快速还是缓慢。通过源代码进行版本推广时,每个接收团队都必须在自己的运行环境中对代码进行确定性构建,这可能会产生一组不同的二进制文件。也就无法确保每个阶段所评估的软件与上一阶段完全相同。

Artifactory的二进制存储库管理提供了一种更一致、更可靠的方法,将单个不可变的二进制文件贯穿整个SDLC。由于每个SDLC阶段都有一个存储库,因此在JFrog平台中,只需将构建及其元数据按顺序转移到下一个版本库中,就能对其进行推广。

在这种 “一次构建,随处推广”的方法中,每个阶段都会对统一构建进行评估,从而确保DevOps管道的绝对一致性。团队无需再执行自己的构建或管理构建环境,可以将节省下来的时间用于进行更全面的测试和更快地提供反馈。

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

基于校验和的存储:

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

05.加速云原生开发

如今,软件开发越来越多地转向云原生开发:编写能够有效利用云技术基础设施的应用程序,并充分发挥云运行的固有优势。这意味着要构建基于容器的微服务,依赖于OCI等成熟的云原生标准以及Docker和Kubernetes等云原生工具。

JFrog平台中的Docker存储库完全支持所有的Docker注册表API,因此它们可以与Docker CLI原生协作。通过本地存储库,你可以根据需要在Artifactory中维护多个私有Docker注册表,以便在组织内部分发和共享容器镜像。

Artifactory揭示了每个Docker或OCI镜像中的组成层,并链接元数据以获得完全可追溯的路径,可追溯到所有部分的来源。结合JFrog平台的细粒度访问控制,你可以维护比Docker Trusted Registry更安全的私有Docker存储库。使用Artifactory的本地存储库而不是DockerHub上的私有存储库,可避免所有互联网连接问题,并提供可靠且一致的镜像访问。

Artifactory还支持Helm 图表存储库,因此你还可以在管理Docker镜像的同时管理 Kubernetes 编排清单。通过这种方式,JFrog平台可以作为你的综合Kubernetes注册表,为集群中存储部署的所有内容提供一个集中、可追溯的中心家园。

无限制的DockerHub:

基于JFrog与Docker的合作,Artifactory的JFrog Cloud用户不受DockerHub的镜像拉取速率的限制。通常情况下,匿名免费用户每六小时只能拉取100次,认证免费用户每六小时只能拉取200次。但如果镜像拉取请求来自JFrog Cloud账户,DockerHub则会取消这些限制。

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

此外,借助JFrog Xray,开发者还可以对从DockerHub拉取的镜像进行持续、全面的漏洞扫描。

06.保护您的软件供应链

在管理企业开发时,保护软件供应链(即应用程序的组成部分)免受错误和攻击至关重要。

供应链攻击,如Tyupkin(2014)、NotPetya(2017)、OperationShadowHammer(2019)和SolarWinds(2020),已经引发了高度关注,并促使世界经济论坛将其列为顶级网络安全挑战之一。

作为所有二进制文件的单一可信源,二进制存储库管理器成为供应链网络攻击的诱人目标。因此,JFrog平台将安全性视为重中之重。

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,您可以在所有云环境中对漏洞和合规性扫描进行一致的监控、报告和修复。

07.连接您现有的工具生态集

对于开发者来说,DevOps是一条单向流动的管道,最终目标是生产质量的发布。但对于SRE来说,DevOps 是一种组织结构,将工具和流程编织在一起,以创建一个强大而有弹性的基础设施。

能够与复杂的DevOps工具堆栈良好集成,对于可靠的运维至关重要,而维持这一生态系统可能会耗费大量的工程时间。从自动化构建的工具开始,你的CI/CD服务器必须与存储系统顺利集成。

JFrog平台可通过以下方式与您选择的CI/CD自动化工具相连接:

CLI:通过命令行界面(CLI)工具,开发者可以通过命令窗口、shell脚本或CI管道在存储库中存储和检索二进制文件和元数据。

REST API:开发者可以通过curl 或自定义DevOps工具,使用REST命令管理二进制存储库。

Webhook:响应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平台的一部分,Pipelines与Artifactory自然结合。使用Pipelines的声明式预构建步骤,你可以专注于存储库中的内容,而不是如何将其送达。

Pipelines还为生态系统中的流行工具提供开箱即用的集成,包括GitHub、GitLab、BitBucket、Slack、Jira、AWS、GCP、Docker、Kubernetes等,将这些服务与Pipelines集成通常只需输入 URL 端点和用户凭据即可。

08.无限扩展

对于现代企业,软件开发现在是一项高度协同的工作,由遍布全球的多个站点和云区域的交叉团队共享软件包。即使是小型团队也应预期增长,而DevOps的最佳实践必须能够无缝扩展以适应这种增长。

以二进制文件为中心的DevOps最佳实践(单一真实来源、元数据、构建推广、安全性等)已被证明可以顺利扩展。每天,他们都帮助JFrog平台的用户快速发布高质量的软件,无论这些软件是由5人小团队开发,还是由500人的全球团队开发的。

作为关键任务工具,你需要确保即使部门增长,也能保持持续且响应迅速的访问。

本地高可用性:

以BYOL方式安装在自己云账户的集群中,或安装在本地安全数据中心的服务器上,进行本地管理。集群中复制节点的高可用性配置有助于分散负载,以应对突发的高负载,并确保没有单点故障。这样,即使在系统更新期间,也能尽可能延长正常运行时间,提升可用性。

云(SaaS):

订阅由主要云提供商(AWS、GCP 或 Azure)托管的JFrog云托管服务,并充分利用云的 “随时随地”的可用性和弹性优势。通过维护不同云提供商的多个SaaS账户来实施多云策略,这有助于避免供应商锁定,并能将工作负载分配给最具成本效益的提供商。

混合部署:

混合部署使你能够利用云的可扩展性来处理动态工作负载,同时将敏感的工作负载存储在安全的本地数据中心集群中。JFrog平台的 “此处相同,彼处相同 “承诺在每个环境中都具有相同的功能,你可以根据需要在云和本地之间划分工作负载。

多站点异地复制:

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

JFrog独特的多站点功能集确保在任何全球云拓扑中实现本地化。这使得地理位置分散的团队能够处理相同的工件(二进制文件及其元数据),并将延迟降到最低,从而使每个云区域、每个站点的每次构建都能快速、无故障地完成。

分发到最远的边缘:

一旦有了经过全面验证的版本,需要将其分发到哪里?企业必须将软件和更新分发到越来越多的全球终端,将其交付到集群、设备和桌面,以便造福用户。

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

JFrog Artifactory让您的二进制文件发挥作用

事实表明,DevOps成功的关键在于整个SDLC对二进制文件进行有效管理。上述介绍的有关JFrog Artifactory的8个关键优势是以二进制为中心的DevOps方法的基本实践,也是JFrog平台的核心价值所在,能够更好地确保您的成功。

JFrog Artifactory在实际使用上提供了无与伦比的灵活性。无论您的团队规模是15人还是 15,000人,JFrog Artifactory 都能为您的软件开发提供高效、稳定且安全的支持。

作为JFrog中国授权合作伙伴及DevSecOps解决方案提供商,龙智致力于为企业提供全方位的服务,包括产品演示、免费试用、销售支持、实施部署、培训以及技术支持,助力企业实现敏捷开发与数字化转型!

联系龙智,获取更多JFrog Artifactory的产品信息,或申请免费试用:

官网:www.shdsd.com

电话:400-666-7732

邮箱:marketing@shdsd.com


龙智DevSecOps
6 声望3 粉丝

分享DevSecOps解决方案最新动态,帮助您学习与使用Atlassian, Perforce, Mend(原Whitesource), Cloudbees, TESSY, Jama Software及龙智自研产品,实现软件研发的高度协同与自动化,提高交付效率与质量,并确保...