AWS CodeArtifact vs Artifactory: バイナリー管理はどちらを選ぶべきか?

Artifactory OSS版の提供と同時にJFrogの設立以来、私たちは堅牢なアーティファクト管理ソリューションがなければスケール、スピード、信頼性のあるソフトウェアも提供できないと主張してきました。それから10年以上経った今、業界の他のベンダーもようやく理解し始めています。

AWSはバイナリ管理のためのCodeArtifactサービスを先日発表しました。以下ではJFrog ArtifactoryとAWS CodeArtifactの違いや、どちらのソリューションが一般的なユースケースに最も適しているかなど、知っておくべきことをすべて比較しています。

Artifactory – JFrog Platformのバックボーン – は当社が市場に投入した最初の製品でした。開発者である私たち自身がバイナリマネージャを持たない苦労を理解していたため、業界初のアーティファクト管理ソリューションを発表しました。以前は存在しなかったこの新しいカテゴリーのツールは、あらゆる開発においての重要な柱となりました。今日においてもArtifactoryは最も人気のあるバイナリ管理ソリューションであり、DockerレジストリHelmリポジトリを含む、27種類以上のパッケージタイプを1つにまとめてサポートする唯一のユニバーサルな製品です。

ここではJFrog ArtifactoryとAWS CodeArtifactの主な違いと、それが何を意味するのかを見てみましょう。

AWS CodeArtifactとJFrog Artifactoryの比較

AWS CodeArtifactはS3ベースのマネージドアーティファクト/バイナリリポジトリです。AWSマーケットプレイス(および他のパブリッククラウド)で提供しているベースレベルのJFrog Artifactory SaaSサービスとコンセプトが似ています。 

この9つの重要な違いを見ていきましょう:

ユニバーサルパッケージ管理:

CodeArtifactはユニバーサルなパッケージマネージャではありません。3つの技術しかサポートしていないためです。Mavenのサポートはまだ初期段階であり、本番環境で使用できるレベルではありません。Mavenメタデータはユーザが手動でアップロードしなければなりません。これでは同じパッケージ、特にユニークなスナップショットの同時バージョンのデプロイを生かすことができません。CodeArtifactは同じリポジトリへの複数のスナップショットのアップロード(これは開発チームでは同時に実施される)がサポートされていません。

JFrog Artifactoryは27以上のバイナリタイプをサポートしています。Artifactoryは汎用リポジトリも提供しており、ユーザはリリースの一部である追加のファイルタイプ(イメージ、zipファイル、ドキュメントなど)を一元的に管理することもできます。

AWS CodeArtifact (全て) JFrog Artifactory (一部)
  • Maven/Gradle
  • npm/Yarn
  • pip/twine
  • Maven/Gradle
  • npm/Yarn
  • pip/twine
  • Nuget
  • RPM
  • Debian
  • Go
  • Docker
  • Helm
  • Conan (C/C++)
  • GitLFS
  • PHP Composer
  • RubyGems
  • VCS
N/A Generic

 

どちらのソリューションもユーザは外部リポジトリをプロキシすることができます。しかし、CodeArtifactはオフィシャルなアップストリームリポジトリのプロキシしかサポートしていません: npm – npm.js、Python – PyPI、Maven – Maven Central、Google Androidリポジトリ、Gradleプラグインリポジトリ、CommonsWare Androidリポジトリです。さらにCodeArtifactでは外部リモートリポジトリは1つだけという制限(「外部接続」と呼ばれています)があります。ホストリポジトリ、アップストリームリポジトリ、外部リポジトリの間の検索順序やパーミッションがどのように伝搬するかは不明です。

一方、Artifactoryは内部または外部を問わず、あらゆるリポジトリをプロキシすることができます。さらに、Artifactoryのバーチャルリポジトリは大規模なアーティファクトの管理とチーム間の共有を簡素化できます。この機能によりユーザは特定のリポジトリのみを集約し、パッケージをどこから、どのように解決するかを選択できます。

もう一つ注意すべき重要な制限事項としてAWS CodeArtifactは1つのAWSアカウントにつき最大100個のリポジトリしかサポートしないということです。世界中で複数のチームをサポートする必要がある大規模な組織にとって、この制限は許容できません。

 

クラウドネイティブ・アーティファクト:

バイナリサポートの一環として、Artifactoryではエンタープライズレベルのコンテナイメージ・レジストリHelmリポジトリを1つで提供しています。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 IAM 任意のプロバイダ

例えばOkta, OneLogin, PingOne, GitHub

セキュリティ・スキャン 未提供 JFrog Xray

アプリケーション・セキュリティに関してはArtifactoryにはオープンソースの脆弱性とライセンス違反に対応するセキュリティ・スキャンが組み込まれていますJFrog Xrayと統合されているため、Artifactoryのユーザーは「シフトレフト」とDevSecOpsを容易にサポートすることができます。

JFrog Platformは自動的にパッケージをスキャンし、コンテナイメージを再帰的にスキャンし、検出されたすべての脆弱性の影響を完全に分析し、迅速な修正が可能なIDEインテグレーションを提供します。ユーザはリポジトリ全体のセキュリティとコンプライアンスポリシーを設定し、セキュリティデータに基づいた自動アクションを実行することができます。アラートやWebhook、スキャンされていないアーティファクトや重クリティカルなCVEを含むアーティファクトのダウンロードのブロックやビルドを失敗させることも可能です。セキュリティやソフトウェア構成分析に興味のあるAWSユーザはサードパーティツールと統合する必要があります。

ハイブリッドとマルチクラウド:

CodeArtifactはパブリッククラウド上でのみ利用可能であり、特定の地域でしか利用できません(例えば中国では利用できません)。Artifactoryはどのようなインフラストラクチャでもバイナリとセキュリティを管理するために利用できます。マルチサイト・トポロジやレプリケーションを含め、セルフホスティングのオンプレミスでもクラウドでも利用可能です。また、すべてのパブリッククラウド(AWS、GCP、Azure)でSaaSサブスクリプションとしても利用できます。これにより、ユーザはロックインを回避できるだけでなく、オンプレミスとクラウド環境間でのリアルタイムなアーティファクトの同期など、マルチクラウド/ハイブリッドでサポートすることができます。

AWS CodeArtifact JFrog Artifactory
SaaS AWS AWS,GCP,Azure
セルフマネージ/オンプレミス いいえ はい

 

CodeArtifactはユーザーがホストしているリポジトリのための単一ロケーションのみを提供し、遅延オンデマンド・レプリケーションを提供しています。Artifactoryはマルチロケーション・ワークロードを標準でサポートするために、レプリケーションを介してアクティブなリポジトリのミラーリングを提供します。Artifactory独自のスマート・レプリケーション機能はどのようなネットワークトポロジーでも、どのような開発手法でもローカルでの利用が可能です。組織特有の分散パイプラインやコラボレーションの要件に応じて、ユーザはプル、プッシュ、イベントベース、マルチプッシュ・レプリケーションなど、いくつかの選択肢から選択することができます。

最後にCodeArtifactは開発者の日常業務の使い勝手に大きな問題をもたらします。CodeArtifactリポジトリは以下のような開発者に不親切なドメイン名で公開されます: my-example-domain-123456789012.d.codeartifact.us-west-2.amazonaws.com. 

一方、Artifactoryはmydomain.jfrog.ioとして公開されます。CLIの呼出しの度にこれらの長い6つのパートのURLを繰り返さないカスタムSSL証明書とシンプルなドメインを登録する明確な方法はありません。

メタデータとビルド情報:

Artifactoryはすべてのビルド・アーティファクトに対して網羅的なメタデータを保存します。これによりSDLC全体を通して、各アーティファクトの属性に対して他に類を見ない粒度の高い可視性とトレーサビリティを実現します。メタデータとプロパティが完全に検索可能なため、メタデータの割当てとクエリに基づき、多数の自動化のフローを適用できます。これによりビルド属性に基づいたオートメーションのトリガー、自動ビルド・プロモーション、ステージ間のクオリティゲートの確立、トラブルシューティングのためのビルドの自動ドリフト分析、フラグによる検索などの高度な機能が可能になります。例えばビルドに問題がある場合、Artifactoryの「部品表」により、ビルドを簡単に再現し、問題の原因を追跡して解決までの時間(TTR)を短縮することができます。

AWS CodeArtifactにはメタデータやビルド情報という概念がありません。パッケージの削除やアーカイブなどのラベルを付けることができる「Package Version Status」はありますが、Artifactoryのような豊富なメタデータ追跡機能はありません。

分類されていないリポジトリ:

Artifactoryでリポジトリタイプを設定する場合、各リポジトリは特定のバイナリタイプを管理するように設定されています。CodeArtifactは分類されていないリポジトリを提供していますが、これは彼らが「ポリグロット」と呼んでいるもので、1つのリポジトリにはサポートされている3つのテクノロジーのアーティファクト・パッケージを混在して保存できることを意味します。例えば1つのCodeArtifactリポジトリにMaven、npm、Pythonリポジトリのパッケージを格納するように設定することができます。これは小規模なチームでは簡単に利用できますが複数のパッケージタイプや異なるチーム、ロケーション、アプリケーションにまたがる複数のリポジトリへと拡張するような大規模環境で効果的な管理を行う場合は課題が発生する可能性があります。

共通の問題はパッケージタイプ間の重複した名前空間に関する問題が発生し、単にリポジトリのエンドポイントを参照するのではなく、パッケージ固有のAPIが必要になることです。分類されていないリポジトリの制限のため、すべてのCodeArtifact APIはユーザが URLの一部としてパッケージ形式を明示的に指定する必要があります。

パッケージ監査:

どちらのソリューションもバイナリの状態や使用状況を詳細に監査することができます。CodeArtifactはパッケージの使用状況を監査するためにAWS CloudTrailと統合しています。同様に、Artifactoryはパッケージに関連するユーザアクションのトラッキングを標準で提供します(例えばパッケージの削除など)。ユーザのトラッキングに加えて、Artifactoryのインベントリのトラッキングはどのパッケージがどこで使用している(されている)かの可視性を提供します。

CI/CDとDevOpsツールチェーンの統合:

どちらのソリューションも豊富なCLIやREST APIを介して、CI/CDや既に利用しているDevOpsツールと統合することができます。CodeArtifactはAWS EventBridgeを介して他のAWSサービスと統合されているので、Lambda関数、SNSトピック、CodeBuild、CodePipelinesをトリガーすることができます。ArtifactoryはすべてのCI/CDツール(JFrog Pipelinesを含む)、IDEインテグレーション、Jiraのような一般的なツール、クラウド環境/構成ツールとの、より広範囲な統合が可能です。JFrog Platformはすべてのリリースとチームで利用可能とするために、すべてのツールと連携してプロセスを自動化する単一UIを提供します。

AWS CodeArtifact JFrog Artifactory
REST APIsとCLI はい はい
インテグレーション AWS EventBridgeを利用したAWSサービス CI/CD: Jenkins, Bamboo, CircleCI, TeamCity, Travis CI, Azure DevOps, GitHub Actions, JFrog Pipelines
IDEs: Eclipse, VS Code, Visual Studio, IntelliJ IDEA
単一UI いいえ はい – JFrog Platform

価格:

AWS CodeArtifactは保存されているアーティファクトのサイズ、リクエスト数、AWSリージョンから転送されたデータ量で算出した使用量に応じて課金されます。最初の2GBのストレージと最初の10万リクエスト/月は無料です。容量が無料な分、CodeArtifactは非常に小規模なチームやSOHOの開発には好ましいかもしれません。Artifactory SaaS on AWSはいくつかのプランで提供されており、利用料を含めた月額利用料が設定されています。バイナリ管理の月額98ドルから始まるベースレベルのサービスには2GBのストレージと10GBのデータ転送が含まれています。セキュリティ・スキャンを含むサブスクリプションでは20GBのストレージと200GBのデータ転送が含まれています。

CodeArtifactはAWSエコシステムとネイティブに統合されているため、同じインフラ上でAWSサービス間のシームレスな運用を可能にしますので、ニーズが限定されている例えばスケール、サポートされているパッケージタイプ、クラウドネイティブのアーティファクト、セキュリティ、ハイブリッド環境、メタデータの可視性などの比較的小規模なチームや組織であればAWSの単一クラウドユーザにはマッチしているかも知れません。

CodeArtifactoryはまだ未熟なソリューションです。その機能、拡張性、機能性、スケールはすべての始まりとなったユニバーサルバイナリ管理ソリューションであるJFrog Artifactoryとは比較になりません。

AWS上のJFrog Artifactoryサービスの詳細についてはこちらのAWS Marketplaceをご確認ください。EC2またはEKSも選択できます。

まだあります:

AWSでJFrog Cloud Pro Xのサブスクリプションを2ヶ月間無料でご利用いただけます

レガシーとコンテナアプリケーションの両方に対応したユニバーサルパッケージ管理統合されたセキュリティでDevSecOpsをスタートしましょう。 

JFrog Cloud Pro Xを2ヶ月間無料でご利用いただき、ソフトウェア開発を劇的に簡素化する方法をご確認ください。

2020年7月31日までにAWSマーケットプレイスでCloud Pro Xの新しいインスタンスをサブスクリプションする必要があります。 

ご質問とコメントはこちらまで。