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

更新:本博客文章已更新,以反映截至2021年7月16日的产品供应
自从JFrog(与OSS Artifactory)成立以来,我们一直坚持认为您只需不能以任何类型的规模、速度或可靠性交付软件,而无需健壮性构件管理解决方案。现在,十多年过去了,行业中的其他供应商终于开始迎头赶上。
AWS2020年宣布用于二进制管理的CodeArtifact服务。下面是您需要了解的JFrog Artifactory和AWS的CodeArtifact之间的差异的比较,以及哪个解决方案最适合常见用例。
人工-脊柱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人工制品(部分) |
|---|---|
|
|
| N/A | 通用的 |
我们的内部数据显示,平均而言,一个Artifactory安装维护至少7种不同包类型的存储库。企业级用户的需求甚至更多,他们平均维护12个包类型的仓库。通过这些度量,CodeArtifact不能支持足够的技术来满足大多数组织的不同需求。
这两种解决方案都允许用户代理外部存储库。然而,CodeArtifact只支持代理官方上游仓库:npm - npm.js、Python - PyPI、Maven - Maven Central、nuget.org、Google Android仓库、Gradle插件仓库和CommonsWare Android仓库。此外,CodeArtifact对一个外部远程存储库(称为“外部连接”)有很强的限制。目前还不清楚托管、上游和外部repos之间的搜索顺序,以及权限是如何传播的。
另一方面,Artifactory支持代理任何存储库——内部或外部。此外,Artifactory的虚拟存储库简化工件管理的规模和团队之间的共享。此特性允许用户仅聚合特定的存储库,并选择如何以及从何处解析包。
进行工件
作为支持二进制文件的一部分,Artifactory提供了企业级容器映像注册表和Helm repo在一个解决方案。AWS CodeArtifact不支持存储和管理云原生组件。您需要与AWS的ECR服务集成,与JFrog解决方案相比,该服务不提供企业用例所需的治理和集中管理。这在您的发布管道中造成了严重的可见性和可追溯性问题,因为容器映像由来自其他存储库(如npm、golang、Maven等)的发布包组成。
| AWS CodeArtifact | JFrog Artifactory | |
|---|---|---|
| 容器映像注册表 | 没有 需要AWS ECR或其他 |
是的 |
| Helm Chart存储库 | 没有 需要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光,人工用户可以轻松支持" shift left "和DevSecOps。
JFrog平台自动扫描您的包——加上对容器映像的深度递归扫描——并提供对所有发现的漏洞的完整影响分析IDE集成为了快速修复。用户可以跨仓库设置安全性和遵从性策略,以触发基于安全性数据的自动操作。这些可能是警报,web钩子,甚至阻止未扫描工件或具有关键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部分(!)每个CLI调用中的url !
元数据和构建信息
Artifactory为所有构建工件存储详尽的元数据。这允许无与伦比的粒度可见性和可追溯性到环境中每个工件的属性中,贯穿整个过程SDLC。元数据和属性是完全可搜索的,这一事实允许您基于元数据分配和查询建立许多自动化流。这就启用了高级功能——比如基于构建属性触发自动化建立促销在各个阶段之间建立质量门,对构建进行自动漂移分析以进行故障排除,基于标志的高级搜索,等等。例如,如果构建存在问题,Artifactory的“材料清单”可以轻松地重现构建,并跟踪问题的原因以减少解决时间(TTR),即使构建已经在生产中。
AWS CodeArtifact没有元数据或构建信息的概念。它确实有“包版本状态”——在这里包可以被标记为已删除、已归档等。CodeArtifact还提供了使用自定义键值属性标签标记资源的功能,该标签可与其他AWS服2022世界杯阿根廷预选赛赛程务(如AWS CodeBuild)一起使用。虽然有帮助,但它不能像Artifactory那样提供丰富的元数据跟踪,从而提供构建的完整可跟踪性。
无类型库
当在Artifactory中设置存储库类型时,每个存储库都被用于管理特定的二进制类型。CodeArtifact提供了Untyped存储库,他们称之为“多语言”,这意味着一个存储库可以存储来自3种支持技术的工件包的混合。例如,可以配置单个CodeArtifact存储库来存储来自Maven、npm和Python存储库的包。这对于小型团队来说可能更容易,但是一旦您需要扩展到跨越不同团队、geo或应用程序的多个包类型和多个存储库时,就会给大规模的有效管理带来挑战。
一个常见的问题是,它会造成包类型和api之间重叠名称空间的混淆,这些api需要特定于包,而不是简单地引用存储库端点。由于非类型化存储库的限制,所有CodeArtifact api都要求用户显式地指定包格式字符串作为URL的一部分。
方案审核
这两种解决方案都为您提供了对二进制文件状态和使用情况的详细审计。CodeArtifact与AWS CloudTrail集成以审计包的使用。类似地,Artifactory原生地提供与包相关的用户操作的跟踪(例如删除包)。除了用户跟踪之外,Artifactory的ascendent / Descendants库存跟踪还提供了哪些包正在使用以及在哪里使用的可见性。
CI/CD和DevOps工具链集成
这两种解决方案都可以与您的CI/CD和DevOps的工具您已经通过广泛的CLI和REST api使用了。CodeArtifact通过AWS EventBridge与其他AWS服务集成,这样您就可以触发Lambda函数、SNS主题、CodeBuild和CodePipelines。Artifactory提供了与所有CI/CD工具(包括JFrog自己的pipeline解决方案)的更广泛集成,IDE集成、Jira等常用工具,以及云环境/配置工具。JFrog平台为跨所有版本和团队编排所有的点工具和自动化端到端过程提供了一个单一的窗格。
| AWS CodeArtifact | JFrog Artifactory | |
|---|---|---|
| REST api和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的存储空间和每月前10万个请求都是免费的。对于非常小的团队和SOHO开发团队来说,空闲的容量可能会使CodeArtifact成为理想的选择。AWS上的人工SaaS提供多种计划,每月订阅费用包括使用费用。二进制管理每月98美元起,基本级服务包括2GB的存储空间和10GB的数据传输。下一个订阅级别,包括安全扫描,有20GB的存储空间和200GB的数据传输。
理货了
由于它与AWS生态系统的原生集成,允许在相同基础设施上的AWS服务之间无缝操作,CodeArtifact可能是单云AWS用户的起点——前提是这些用户是相对较小的团队或组织,对规模、支持的包类型和云原生工件、安全性、混合环境或元数据可见性的需求有限。
CodeArtifactory仍然是一个不成熟的解决方案——它的特性、广度、功能和规模都无法与通用二进制管理解决方案JFrog Artifactory相比这就是一切的开始,这些年来,它仍然是领先的技术!
免费开始使用托管在AWS上的JFrog Cloud帐户或另一个您选择的主要云提供商,并启动您的DevSecOps旅程具有通用包2022年世界杯预选赛赛程表管理和集成安全性-适用于遗留和容器应用程序。
