AWS CodeArtifact im Vergleich zu Artifactory: Welchen sollten Sie für das Binärmanagement wählen?
Seit der Gründung von JFrog – mit OSS Artifactory – haben wir darauf bestanden, dass man ohne eine robuste Artefakt-Management-Lösung einfach keine Software in beliebiger Größe, Geschwindigkeit oder Zuverlässigkeit liefern kann. Jetzt, mehr als ein Jahrzehnt später, fangen auch andere Anbieter in der Branche endlich an, dies zu verstehen.
AWS hat kürzlich seinen CodeArtifact-Service für die Verwaltung von Binärdateien angekündigt. Im Folgenden finden Sie einen Vergleich mit allem, was Sie über die Unterschiede zwischen JFrog Artifactory und AWS CodeArtifact wissen müssen, und welche Lösung am besten für gängige Anwendungsfälle geeignet ist.
Artifactory – das Rückgrat der JFrog Plattform – war das erste Produkt, das wir auf den Markt gebracht haben. Da wir selbst Entwickler sind, wussten wir, wie unangenehm es ist, keinen Binär-Manager zu haben. Deshalb haben wir die erste Artefakt-Managementlösung der Branche vorgestellt. Diese neue Kategorie von Tools, die es vorher nicht gab, wurde zu einem entscheidenden Grundpfeiler für jede Entwicklungsarbeit. Noch heute ist Artifactory die beliebteste Lösung zur Verwaltung von Binärdateien und die einzige universelle, die mehr als 27 Pakettypen unterstützt, einschließlich Docker-ImageRegistry und Helm-Repository in einem.
Lassen Sie uns in die wichtigsten Unterschiede zwischen JFrog Artifactory und AWS CodeArtifact eintauchen und sehen, was diese für Sie bedeuten.
Vergleich zwischen AWS CodeArtifact und JFrog Artifactory
AWS CodeArtifact ist ein S3-basiertes verwaltetes Artefakt-/Binär-Repository. Das Konzept ähnelt dem des grundlegenden Artifactory SaaS-Dienstes von JFrog, der auf AWS Marketplace (und in anderen öffentlichen Clouds) angeboten wird.
Lassen Sie uns diese 9 Hauptunterschiede näher unter die Lupe nehmen:
Universelle Paketverwaltung
CodeArtifact ist kein universeller Paketmanager. Es werden nur 3 Technologien unterstützt. Maven-Support ist noch in der Entwicklung und nicht bereit für den produktiven Einsatz: Maven-Metadaten müssen von den Clients manuell hochgeladen werden – was gleichzeitige Versionsbereitstellungen für dasselbe Paket, insbesondere einmalige Snapshots, so gut wie ausschließt. Generell unterstützt CodeArtifact keine mehrfachen Snapshot-Uploads in dasselbe Repository – ein Szenario, das bei vielbeschäftigten Entwicklungsteams, die Builds erstellen, sehr häufig vorkommt.
JFrog Artifactory unterstützt über 27 Binärtypen.. Artifactory bietet außerdem einen generischen Repo-Typ, der es Benutzern ermöglicht, zusätzliche Dateitypen, die Teil ihrer Veröffentlichungen sind, zentral zu verwalten – wie Bilder, Zip-Dateien, Dokumente und mehr.
AWS CodeArtifact (vollständig) | JFrog Artifactory (teilweise) |
---|---|
|
|
N/A | Allgemein |
Beide Lösungen erlauben Benutzern, externe Repositories zu proxxen. Allerdings unterstützt CodeArtifact nur das Proxxen von offiziellen Upstream-Repositories: npm – npm.js, Python – PyPI, Maven – Maven Central, Google Android-Repository, Gradle Plugins-Repository und CommonsWare Android-Repository. Außerdem hat CodeArtifact eine starke Begrenzung auf ein externes Remote-Repository (mit der Bezeichnung “externe Verbindung”). Es ist unklar, was die Suchreihenfolge zwischen gehosteten, Upstream- und externen Repos ist und wie Berechtigungen ausgegeben werden.
Artifactory hingegen ermöglicht das Proxxen jedes Repositories – intern oder extern. Darüber hinaus vereinfachen die virtuellen Repositories von Artifactory die Verwaltung von Artefakten in großem Umfang und die gemeinsame Nutzung durch Teams. Mit dieser Funktion können Benutzer nur bestimmte Repositories zusammenfassen und auswählen, wie und von wo ein Paket aufgelöst werden soll.
Cloud-basierte Artefakte
Als Teil der Unterstützung von Binärdateien bietet Artifactory eine unternehmenstaugliche Container-Image-Registry und ein Helm-Repository in einer Lösung. AWS CodeArtifact unterstützt nicht die Speicherung und Verwaltung von Cloud-basierten Komponenten. Sie müssen sich in den ECR-Service von AWS integrieren, der im Vergleich zur JFrog-Lösung nicht die Governance und das zentrale Management bietet, die für Anwendungsfälle in Unternehmen erforderlich sind. Dies führt zu akuten Sichtbarkeits- und Nachvollziehbarkeitsproblemen in Ihrer Release-Pipeline, da Container-Images aus Release-Paketen bestehen, die aus anderen Repositories stammen, wie z.B. npm, golang, Maven, usw.
AWS CodeArtifact | JFrog Artifactory | |
---|---|---|
Container-Image-Registries | Nein benötigt AWS ECR oder andere |
Ja |
Helm-Chart-Repositories | Nein benötigt AWS ECR oder andere |
Ja |
Sicherheit, Compliance und Verschlüsselung
Beide Lösungen verschlüsseln die gespeicherten Artefakte – sowohl während der Durchführung als auch im Ruhezustand. Beide bieten auch engmaschiges RBAC für Zugriffskontrolle und Compliance. CodeArtifact stützt sich für das Identitäts- und Zugriffsmanagement ausschließlich auf AWS IAM. Der AWS IAM-Token ist hartkodiert, sodass er nach 12 Stunden abläuft. Das bedeutet, dass Entwickler selbst in der Entwicklung daran denken müssen, Token zu regenerieren und ihre Paketmanager entsprechend neu zu konfigurieren. Im Gegensatz zu CodeArtifact ermöglicht Artifactory die Integration mit jedem Identitätsanbieter Ihrer Wahl – wie Okta, OneLogin, PingOne, GitHub und mehr.
AWS CodeArtifact | JFrog Artifactory | |
---|---|---|
Verschlüsselung von Artefakten | Ja | Ja |
Zugriffskontrolle | AWS IAM | Jeder Anbieter z. B. Okta, OneLogin, PingOne, GitHub |
Sicherheits-Scannen | Nicht vorgesehen | JFrog Xray |
Wenn es um die Sicherheit von Anwendungen geht, verfügt nur Artifactory über einen integrierten Sicherheitsscan für Open Source-Schwachstellen und Lizenzkonformitätsprobleme. Durch die Integration mit JFrog Xray können Artifactory-Nutzer Shift-Left-Tests und DevSecOps problemlos nutzen.
Die JFrog-Plattform scannt automatisch Ihre Pakete – wozu auch tiefes rekursives Scanning für Container-Images gehört – und bietet eine vollständige Auswirkungsanalyse aller gefundenen Schwachstellen sowie IDE-Integration zur schnellen Behebung. Benutzer können Sicherheits- und Compliance-Richtlinien für alle Repositories einrichten, um automatische Aktionen auf Basis von Sicherheitsdaten auszulösen. Dies können Warnungen, Web-Hooks, sogar das Blockieren eines Downloads von nicht gescannten Artefakten oder solchen mit kritischen CVEs, aufgrund dessen ein Build fehlschlagen kann, und mehr sein. AWS-Nutzer, die sich für Sicherheit und Software Composition Analysis interessieren, müssen Tools von Drittanbietern integrieren, da es keine “Out of the Box”-Lösung gibt.
Hybrid und Multicloud
CodeArtifact ist nur in der Public Cloud und nur in bestimmten Regionen verfügbar (es ist beispielsweise nicht in China verfügbar). Artifactory kann zur Verwaltung Ihrer Binärdateien und der Sicherheit in jeder Infrastruktur verwendet werden. Es kann selbstgehostet, lokal oder in der Cloud sein, einschließlich Multi-Site-Topologien und Replikation. Es ist auch als SaaS-Abonnement auf allen öffentlichen Clouds (AWS, GCP, Azure) verfügbar. Dies ermöglicht es Anwendern, Lock-in zu vermeiden und auch die Multi-Cloud/Hybrid-Zukunft zu unterstützen, einschließlich Echtzeit-Synchronisierung von Artefakten zwischen lokalen Umgebungen und Cloud-Umgebungen.
AWS CodeArtifact | JFrog Artifactory | |
---|---|---|
SaaS | AWS | AWS, GCP, Azure |
Selbstverwaltet/lokal | Nein | Ja |
CodeArtifact bietet nur ein einziges Geo für vom Benutzer gehostete Repositories und mit Lazy-on-Demand-Replikation. Artifactory bietet aktive Repository-Spiegelung durch Replikation, um Multi-Geo-Workloads nativ zu unterstützen. Der einzigartige Satz intelligenter Replikationsfunktionen von Artifactory gewährleistet die Lokalität in jeder Netzwerktopologie und für jede Entwicklungsmethodik. Abhängig von den Anforderungen an die unternehmensspezifischen verteilten Pipelines und die Zusammenarbeit können Anwender aus mehreren Alternativen wählen, darunter Pull-, Push-, ereignisbasierte Replikation und Multi-Push-Replikation.
Zu guter Letzt stellt CodeArtifact die Entwickler bei ihrer täglichen Arbeit vor große Nutzbarkeitsprobleme. CodeArtifact-Repositories werden über entwicklerunfreundliche Domainnamen offengelegt, wie z. B.: my-example-domain-123456789012.d.codeartifact.us-west-2.amazonaws.com
. Artifactory hingegen wird angezeigt als mydomain.jfrog.io
. Es gibt keine eindeutige Möglichkeit, ein benutzerdefiniertes SSL-Zertifikat und eine einfache Domain zu registrieren, um die Wiederholung dieser langen 6-teiligen (!) URLs in jedem CLI-Aufruf zu vermeiden!
Metadaten und Build-Informationen
Artifactory speichert ausführliche Metadaten für alle Build-Artefakte. Dies ermöglicht eine unvergleichliche granulare Sichtbarkeit und Rückverfolgbarkeit der Attribute jedes einzelnen Artefakts in Ihrer Umgebung, während des gesamten SDLC. Die Tatsache, dass Metadaten und Eigenschaften vollständig durchsuchbar sind, ermöglicht es Ihnen, viele Automatisierungsabläufe auf der Grundlage von Metadatenzuweisungen und -abfragen einzurichten. Dies ermöglicht erweiterte Funktionen, wie z. B. das Auslösen von Automatisierungen auf der Basis von Build-Attributen, die automatische Build-Heraufstufung und die Einrichtung von Quality Gates zwischen den Stufen, die automatische Drift-Analyse von Builds zur Fehlersuche, die erweiterte Suche auf der Basis von Flags und vieles mehr. Wenn es zum Beispiel ein Problem mit dem Build gibt, macht es die “Materialliste” von Artifactory einfach, einen Build zu reproduzieren und die Ursache von Problemen zu verfolgen, um die Zeit bis zur Lösung (TTR) zu verkürzen, selbst wenn der Build bereits in Produktion ist.
AWS CodeArtifact hat kein Konzept von Metadaten oder Build-Informationen. Es verfügt zwar über einen “Paketversionsstatus”, bei dem Pakete als gelöscht, archiviert usw. gekennzeichnet werden können, bietet aber nicht die Reichhaltigkeit der Metadatenverfolgung wie Artifactory.
Untypische Repositories
Beim Einrichten eines Repository-Typs in Artifactory wird jedes Repository für die Verwaltung eines bestimmten Binärtyps instrumentiert. CodeArtifact bietet untypisierte Repositories an, die als “polyglott” bezeichnet werden, was bedeutet, dass ein Repository eine Mischung von Artefaktpaketen aus den 3 unterstützten Technologien speichern kann. Zum Beispiel könnte ein einziges CodeArtifact-Repository so konfiguriert werden, dass es Pakete aus Maven-, npm- und Python-Repositories speichert. Dies mag für kleine Teams einfacher sein, kann aber bei großem Umfang zu Herausforderungen bei der effektiven Verwaltung führen, sobald Sie auf mehrere Pakettypen und mehrere Repositories über verschiedene Teams, GEOs oder Anwendungen hinweg wachsen müssen.
Ein häufiges Problem ist, dass dadurch Verwirrung bezüglich überlappender Namensräume zwischen Pakettypen entsteht und APIs benötigt werden, die paketspezifisch sind, anstatt einfach auf den Repository-Endpunkt zu verweisen. Aufgrund der Beschränkung auf untypisierte Repositories erfordern alle CodeArtifact-APIs, dass der Benutzer den Paketformat-String explizit als Teil der URL angibt.
Paket-Prüfung
Beide Lösungen bieten Ihnen einen detaillierten Einblick in den Status und die Verwendung Ihrer Binärdateien. CodeArtifact ist mit AWS CloudTrail integriert, um die Verwendung von Paketen zu überprüfen. In ähnlicher Weise bietet Artifactory nativ die Nachverfolgung von Benutzeraktionen in Bezug auf ein Paket an (z. B. das Löschen des Pakets). Zusätzlich zur Nutzerverfolgung bietet die Bestandsverfolgung von Artifactory Ascendents / Descendants einen Überblick darüber, welche Pakete wo in Gebrauch sind.
CI/CD- und DevOps-Toolchain-Integrationen
Beide Lösungen können über umfangreiche CLI- und REST-APIs mit Ihrer CI/CD und den DevOps-Tools integrieren, die Sie bereits verwenden. CodeArtifact ist über die AWS EventBridge mit anderen AWS-Services integriert, sodass Sie Lambda-Funktionen, SNS-Thema, CodeBuild und CodePipelines auslösen können. Artifactory verfügt über breitere Integrationen zu allen CI/CD-Tools (einschließlich JFrogs eigener Pipelines-Lösung), IDE-Integrationen, gängigen Tools wie Jira und Cloud-Umgebungen/Konfigurations-Tools. Die JFrog Plattform bietet eine einzelne Konsole für die Orchestrierung all Ihrer Point-Tools und die Automatisierung des End-End-Prozesses über alle Releases und Teams hinweg.
AWS CodeArtifact | JFrog Artifactory | |
---|---|---|
REST-APIs und CLI | Ja | Ja |
Integrationen | AWS-Services über AWS EventBridge | CI/CD: Jenkins, Bamboo, CircleCI, TeamCity, Travis CI, Azure DevOps, GitHub Actions, JFrog Pipelines IDEs: Eclipse, VS Code, Visual Studio, IntelliJ IDEA |
Zentrale Konsole | Nein | Ja – JFrog Platform |
Preisgestaltung
Bei AWS CodeArtifact wird nach Nutzung abgerechnet, die sich aus der Größe der gespeicherten Artefakte, der Anzahl der Anfragen und der Menge der aus einer AWS-Region übertragenen Daten errechnet. Die ersten 2 GB Speicherplatz und die ersten 100.000 Anfragen/Monat sind kostenlos. Die freie Kapazität kann CodeArtifact für sehr kleine Teams und SOHO-Entwicklungsprojekte wünschenswert machen. Für Artifactory SaaS auf AWS werden mehrere Preismodelle angeboten, wobei die monatlichen Abonnementkosten die Nutzung beinhalten. Der Basisdienst beginnt bei 98 $/Monat für die Verwaltung von Binärdateien und umfasst 2 GB Speicherplatz sowie 10 GB Datentransfer. Die nächste Abonnementstufe, zu der eine Sicherheitsüberprüfung gehört, beinhaltet 20 GB Speicherplatz und 200 GB Datentransfer.
Zusammenfassung
Aufgrund der nativen Integration in das AWS-Ökosystem, die einen nahtlosen Betrieb zwischen AWS-Services auf derselben Infrastruktur ermöglicht, kann CodeArtifact der Ausgangspunkt für Mono-Cloud-AWS-Benutzer sein – vorausgesetzt, es handelt sich um relativ kleine Teams oder Organisationen, die begrenzte Anforderungen in Bezug auf Skalierung, unterstützte Pakettypen und Cloud-basierte Artefakte, Sicherheit, hybride Umgebungen oder Metadatentransparenz haben.
CodeArtifactory ist immer noch eine unausgereifte Lösung – Eigenschaften, Umfang, Funktionalität und Skalierung sind nicht vergleichbar mit JFrog Artifactory, der universellen Binärverwaltungs-Lösung mit der alles begann, und die nach all diesen Jahren immer noch die führende Technologie ist!
Sie können JFrog Cloud Pro X auf AWS ausprobieren. Sie können wählen, ob Sie mit ECS- oder EC2-Speicher sowie mit EKS verwaltetem Kubernetes arbeiten möchten.
Starten Sie Ihre DevSecOps-Reise mit universeller Paketverwaltung plus integrierter Sicherheit – sowohl für Legacy- als auch für Container-Anwendungen.