AWS CodeArtifact vs. Artifactory:二进制管理应该选择哪个?

更新:本文已更新,以反映截至2021年7月16日的产品

自从JFrog的开始-与OSS Artifactory -我们一直坚持,你简单不能在没有健壮性的情况下,以任何规模、速度或可靠性交付软件构件管理解决方案。现在,十多年过去了,这个行业的其他供应商终于开始赶上来了。

AWS2020年宣布用于二进制管理的CodeArtifact服务。下面是你需要知道的关于JFrog Artifactory和AWS CodeArtifact之间差异的所有内容的比较,以及最适合常见用例的解决方案。

Artifactory -骨干JFrog平台-是我们推向市场的第一款产品。作为开发人员,我们理解没有二进制管理器的痛苦,所以我们引入了业界首个工件管理解决方案.这种新的工具类别,以前不存在,成为任何开发工作的关键支柱。直到今天,Artifactory仍然是最流行的二进制管理解决方案只有一个通用的-支持30岁以上包类型,包括Docker镜像注册表而且执掌库在一个。

让我们深入了解JFrog Artifactory和AWS CodeArtifact之间的主要区别,以及它们对您意味着什么。

比较AWS CodeArtifact和JFrog Artifactory

AWS CodeArtifact是一个基于s3的托管工件/二进制存储库。它在概念上类似于JFrog在AWS市场(以及其他公共云)上提供的基础级Artifactory SaaS服务。

让我们来看看这9个关键区别:

2022年世界杯预选赛赛程表通用包管理

CodeArtifact是一个2022年世界杯预选赛赛程表通用的包管理器。它只支持4种技术。对于生产应用来说,Maven支持是不够的:Maven元数据必须由客户端手动上传——这在很大程度上扼杀了同一包的并发版本部署,尤其是惟一的快照。一般来说,CodeArtifact不支持将多个快照上传到同一个回购中——这在繁忙的并发构建的开发团队中非常常见。

JFrog Artifactory支持超过30种二进制类型Artifactory还提供了一个通用回购类型,使用户能够集中管理作为其发行版一部分的其他文件类型,如图像、zip文件、文档等等。

AWS CodeArtifact(完整) JFrog Artifactory(部分)
  • Maven / Gradle
  • npm /纱
  • 皮普/线
  • Maven / Gradle
  • npm /纱
  • 皮普/线
  • Nuget
  • RPM
  • Debian
  • 码头工人
  • 柯南(C / c++)
  • GitLFS
  • PHP的作曲家
  • RubyGems
  • 风投公司
N/A 通用的

我们的内部数据显示,平均来说,一个Artifactory安装维护至少7种不同包类型的存储库。企业级用户的需求甚至更多,平均维护12种包类型的回购。通过这些度量,CodeArtifact不能支持足够多的技术来满足大多数组织的不同需求。

两种解决方案都允许用户这样做代理外部存储库但是,CodeArtifact只支持官方上游库的代理:npm - npm.js, Python - PyPI, Maven - Maven Central, nuget.org,谷歌Android库,Gradle插件库和CommonsWare Android库。此外,CodeArtifact对一个外部远程存储库(称为“外部连接”)有很强的限制。目前还不清楚托管、上游和外部回购之间的搜索顺序以及权限是如何传播的。

另一方面,Artifactory支持代理任何存储库——内部的或外部的。此外,Artifactory的虚拟存储库简化工件管理的规模和团队之间的共享。该特性允许用户只聚合特定的存储库,并选择如何以及从哪里解析包。

进行工件

作为支持二进制文件的一部分,Artifactory提供了企业级的容器镜像注册和赫尔姆回购在一个解决方案。AWS CodeArtifact不支持存储和管理云原生组件。您需要与AWS的ECR服务集成,与JFrog解决方案相比,该服务不提供企业用例所需的治理和集中管理。这在你的发布管道中产生了严重的可见性和可追溯性问题,因为容器映像由来自其他存储库的发布包组成,比如npm、golang、Maven等。

AWS CodeArtifact JFrog Artifactory
容器映像注册表 没有
需要AWS ECR或其他
是的
舵图资料库 没有
需要AWS ECR或其他
是的

安全性、遵从性和加密

两种解决方案都对存储的工件进行加密——包括运行中的工件和静止的工件。两者都为访问控制和遵从性提供了细粒度的RBAC。CodeArtifact仅依赖AWS IAM进行身份和访问管理。AWS IAM令牌被硬编码为12小时后失效,这意味着即使在开发中,开发人员也必须记住重新生成令牌并相应地重新配置他们的包管理器。与CodeArtifact不同,Artifactory允许与您选择的任何身份提供者集成——例如Okta、OneLogin、PingOne、GitHub等等。

AWS CodeArtifact JFrog Artifactory
工件加密 是的 是的
访问控制 AWS我 任何供应商
例如Okta, OneLogin, PingOne, GitHub
安全扫描 没有提供 JFrog x光


当谈到App 保护只有Artifactory提供内置安全扫描用于开放源码漏洞和许可证遵从性问题。结合JFrog x光, Artifactory用户可以轻松支持“左移”和DevSecOps

JFrog平台自动扫描您的包-加上容器图像的深度递归扫描-并提供所有发现的漏洞的完整影响分析IDE集成快速补救。用户可以跨回购设置安全性和合规性策略,以根据安全性数据触发自动操作。这些可能是警报、网络钩子、甚至阻止未扫描工件或具有关键cve的工件的下载、构建失败等等。对安全性和软件组合分析感兴趣的AWS用户将需要与第三方工具集成,因为没有开箱即用的解决方案。

混合和多云

CodeArtifact仅在公共云上可用,并且仅在某些地区可用(例如,它在中国不可用)。Artifactory可用于跨任何基础设施管理二进制文件和安全性。它可以自托管在预置或在云中,包括多站点拓扑和复制。它还可以在所有公共云(AWS、GCP、Azure)上作为SaaS订阅使用。这使用户能够避免锁定,还支持多云/混合的未来,包括在预置环境和云环境之间实时同步工件。

AWS CodeArtifact JFrog Artifactory
SaaS AWS AWS, GCP Azure
自我管理/ On-Prem 没有 是的

CodeArtifact仅为用户托管的存储库提供了一个地理位置,并提供了惰性按需复制。Artifactory提供活动存储库镜像通过复制本地支持多地理工作负载。Artifactory独特的一套聪明的复制功能确保了任何网络拓扑和任何开发方法的局部性。根据组织的特定分布式管道和协作的需求,用户可以从几种备选方案中进行选择,包括拉、推、基于事件的复制和多推复制。

最后,CodeArtifact为开发人员在日常工作中提出了主要的可用性问题。CodeArtifact存储库通过对开发人员不友好的域名公开,例如:我的例子-域- d.codeartifact.us -西方- 2. - 123456789012. amazonaws.com.另一方面,Artifactory被暴露为mydomain.jfrog.io.没有明确的方法来注册自定义SSL证书和简单的域,以避免重复这些冗长的6部分(!)url在每个CLI调用!

元数据和构建信息

Artifactory存储所有构建构件的详尽元数据。这使得无与伦比的粒度可见性和可跟踪性融入你的环境中每个工件的属性,贯穿整个SDLC.元数据和属性完全可搜索的事实允许您基于元数据分配和查询建立许多自动化流程。这支持高级功能——例如根据构建属性自动触发自动化建立促销并在阶段之间建立质量闸门,自动漂移分析构建以进行故障排除,基于标志的高级搜索,等等。例如,如果构建中存在问题,Artifactory的“材料清单”可以很容易地重现构建,并追踪问题的原因以减少解决问题的时间(TTR),即使构建已经处于生产中。

AWS CodeArtifact没有元数据或构建信息的概念。它有“包版本状态”——包可以被标记为已删除、已归档等。CodeArtifact还提供了使用自定义键值属性标签标记资源的能力,该标签可与其他AWS服2022世界杯阿根廷预选赛赛程务(如AWS CodeBuild)一起使用。虽然很有帮助,但这并不能像Artifactory那样提供丰富的元数据跟踪,以提供构建的完整跟踪。

无类型库

在Artifactory中设置存储库类型时,每个存储库都用于管理特定的二进制类型。CodeArtifact提供了un类型化的存储库,他们称之为“多语言”,这意味着一个存储库可以存储来自3种受支持技术的工件包的混合。例如,单个CodeArtifact存储库可以配置为存储来自Maven、npm和Python存储库的包。这对于小型团队来说可能更容易,但如果需要扩展到跨越不同团队、geo或应用程序的几种包类型和多个存储库,则在大规模管理时可能会带来挑战。

一个常见的问题是,它在包类型和特定于包的api(而不是简单地引用存储库端点)之间产生了重叠的名称空间混淆。由于无类型存储库的限制,所有CodeArtifact api都要求用户显式地指定包格式字符串作为URL的一部分。

方案审核

这两种解决方案都为您提供了对二进制文件的状态和使用情况的详细审计。CodeArtifact与AWS CloudTrail集成,用于审计包的使用。类似地,Artifactory本地提供了与包相关的用户操作的跟踪(例如删除包)。除了用户跟踪,Artifactory的ascenents / Descendants库存跟踪提供了哪些包正在使用以及在哪里使用的可见性。

CI/CD和DevOps工具链集成

这两种解决方案都可以与您的CI/CD和DevOps的工具您已经通过广泛的CLI和REST api在使用。CodeArtifact通过AWS EventBridge与其他AWS服务集成,因此您可以触发Lambda函数、SNS主题、CodeBuild和CodePipelines。Artifactory对所有CI/CD工具(包括JFrog自己的管线解决方案)提供了更广泛的集成,IDE集成、Jira等常用工具,以及云环境/配置工具。JFrog平台为协调所有的点工具和自动化的端到端过程提供了一个单一的窗格,横跨所有的版本和团队。

AWS CodeArtifact JFrog Artifactory
REST接口和CLI 是的 是的
集成 通过AWS EventBridge提供AWS服务 CI / CD:Jenkins、Bamboo、CircleCI、TeamCity、Travis CI、Azure DevOps、GitHub Actions、JFrog Pipelines
ide:Eclipse, VS Code, Visual Studio, IntelliJ IDEA
单层玻璃 没有 是的- JFrog平台

定价

AWS CodeArtifact基于使用情况的账单,由存储的工件大小、发出的请求数量以及从AWS区域传输出的数据量计算。前2GB的存储空间和每月前100,000次请求是免费的。CodeArtifact的免费容量可能使非常小的团队和SOHO开发团队非常喜欢它。AWS上的Artifactory SaaS有几种计划提供,每月的订阅费用包括使用费用。二进制管理每月98美元起,基本服务包括2GB的存储和10GB的数据传输。下一个订阅级别,包括安全扫描,有20GB的存储空间和200GB的数据传输。

理货了

由于其与AWS生态系统的原生集成,允许在相同基础设施上的AWS服务之间进行无缝操作,CodeArtifact可能是单云AWS用户的起点——前提是这些用户是相对较小的团队或组织,在规模、受支持的包类型和云原生构件、安全性、混合环境或元数据可见性方面的需求有限。

CodeArtifactory仍然是一个不成熟的解决方案——它的特性、广度、功能和规模都无法与通用二进制管理解决方案JFrog Artifactory相比这一切的开始,这些年来,它仍然是领先的技术!

免费开始使用托管在AWS上的JFrog云帐户或另一个您选择的主要云提供商,以及jJump-start您的DevSecOps旅程具有通用的2022年世界杯预选赛赛程表包管理和集成的安全性-适用于遗留和容器应用程序。