GitLab vs JFrog: 誰が正しいものを持っていますか?

歴史的な宇宙開発競争のようにDevOpsのフラッグシップの競争が始まっており、コミュニティにとってエキサイティングな瞬間となっています。市場調査会社IDCによると、2023年までにグローバルビジネスは6.8兆米ドル(日本円$1=110換算で約748兆円)をデジタルトランスフォーメーション(DX)に投資すると言われています。しかし、非効率なコラボレーションやチーム間の調整が原因で70%は目標を達成することができないという調査結果も出ています。

今日のフォーチュン1000企業や開発組織の多くが語るように、スケールはDevOpsの次なる大きな課題です。そして、人とツールがうまく連携していなければスケールすることはできません。すべてのコードリポジトリ企業が示唆しているように、そしてGitLab自身が指摘しているように、「(組織は)サイクルタイムの短縮、効率性の向上、リスクの低減を求めている」のです。このことはソフトウェアを毎日何度もビルドとリリースする現状では、ますます明白になってきており、その要求に応えるためには企業のDevOpsインフラストラクチャ全体においてスケーラブルで安全かつ柔軟なツールが必要となります。

つまり、今日と明日の要求を満たすためにはソフトウェアライフサイクルのあらゆる側面に対応しなければなりません。コード管理システム、パッケージ管理、継続的なセキュリティ、ソフトウェア配布は統合され、高い拡張性を持ち、トランスフォーメーションを推進するために完全に同期して機能しなければなりません。お客様はVCSツール(GitHub、GitLab、Atlassianなど)とJFrog Platformが提供するバイナリ管理とソフトウェアデリバリの知見を統合しています。

しかし、JFrogとGitLabの両方が「DevOps Platform」のラベルを付けていることから、ソフトウェアを迅速、安全かつ大胆に市場に投入するために、DevOpsの仕事をどのように行えるのかを見てみましょう。

プラットフォームまたはポートフォリオ

GitLabは優れたVCSであることは、それを使用したことのあるJFrogの開発者たちも証明しています。ソフトウェア開発ライフサイクル(SDLC)の最左翼におけるGitLabの知見はコードベースプロジェクトのようなデザインとコーディングをサポートする革新的な機能を生み出すのに役立っています。

独自のオープンソースの開発モデルを通じて、GitLabはサブスクリプションを急速に拡大し、CI/CDパッケージ管理、静的テスト、動的テストなど、SDLCの右側のタスクを自動化するツールを含むようになりました。 

成熟?

その範囲の広さには目を見張るものがありますが、GitLabが提供するサービスのほとんどは現在のところ成熟しているとは言えません。GitLabの成熟度チャートではソースコードやCI/CDに関係のない40以上の右側の項目のうち、「完了」しているのは3つだけです。残りの項目の半分近くはまだ「最小限」です。

2021年9月時点でのGitLab成熟度の状況 (ソース: GitLab)

統一的?

GitLabスイートは共通ユーザインターフェイスを提供しており、UIでコントロールできなければどんな機能も完成したとは言えないということをコアバリューとして強調しています。

統一されたプラットフォームのように見えますが、多くのGitLabツールが真の意味でお互いに統合されていないという現実を覆い隠しています。UXのカーテンの裏ではスムーズに相互運用できるものはほとんどなく、共通のメタデータ・モデルさえも共有していないことが多いです。DevOpsがサイロを破壊しようとしているにもかかわらず、GitLabのDevOpsとDevSecOpsのソリューションの多くは互いにサイロ化しているのです。

ビジョン?

DevOpsを成功させるには、個々の問題を一つずつ解決していくことではありません。成功は他の何百もの組織でその効果が立証されている正しいメソッドを適用することによってもたらされます。DevOpsツール高品質なソフトウェアのリリースを促進し、顧客のデスクトップやデバイスに安全にデリバリするためのベストプラクティスを実現する必要があります。

GitLabはDevOpsのためのエンド・ツー・エンドのツールを提供しようとしていますが、DevOpsを成功させるためのエンド・ツー・エンドのメソッドを提供しているわけではありません。

DevOpsに関して言えば、ポートフォリオはプラットフォームではありません。そして、DevOpsにおける当社の長年の経験から、デジタルトランスフォーメーションの成功はコードだけではなく、バイナリを管理することにあることが分かっています。

正しいもの: 開発 vs デリバリ

何千ものお客様の成功が一つの真実を証明しています。それはDevOpsを成功させるには、バイナリが重要だということです。 

ソフトウェア開発にはソースコードがつきものですが、質の高いコードは書き方を知っている賢い人に力を与えることで生まれます。 

ソフトウェアデリバリとはバイナリのことであり、高品質なビルドを確保し、それをお客様のデバイスに迅速に届けることです。

大手VCSのベンダーであるGitLabはソフトウェア開発者がソースコードを作成・管理するために必要な作業を得意としています。しかし、DevOpsの目的は開発者からの高品質なリリースを最高のスピードでデリバリすることにあります。

バイナリを中心としたアプローチ(JFrogの知見)は信頼性と迅速なデリバリを保証するソフトウェアライフサイクルの自動化を成功させる唯一の方法です。

そのためには、これらの重要なマイルストーンを達成できるようにする必要があります。

リリースの高速化

リリースを高速化するためには信頼のあるバイナリのワークフローを高速化する必要があります。

JFrog GitLab
パッケージタイプ 30+ 11+
プロキシによるリポジトリのキャッシュ Docker Hubのみ
自動化: ネイティブに統合されたCI/CD
SBOMとトレーサビリティのメタデータをビルド X
リリースステージングのビルドプロモーション X
拡張クエリ言語 X
ディストリビューションソリューション X


パッケージタイプ

JFrogのインターナルデータによると、Artifactoryのインストールでは平均して少なくとも7種類の異なるパッケージタイプのリポジトリを管理しています。エンタープライズレベルのユーザはさらに多く、その半数は12種類以上のパッケージを使用しています。

このようにGitLabが現在サポートしているローカルリポジトリは11種類のパッケージに対応していますがArtifactoryがネイティブでサポートしている約30種類のパッケージに比べると、その数ははるかに少ない状況です。Artifactoryと同様にGItLabもGenericリポジトリタイプを提供しており、イメージ、ZIPファイル、ドキュメントなどリリースに含まれる追加のファイルタイプを一元的に管理することができます。

言語またはOS JFrog Artifactory(一部)  GitLabパッケージレジストリ(完全)
Java Apache Maven Apache Maven
Java Gradle Gradle
Javascript npm/Yarn npm/Yarn
Javascript Bower
Python pip/twine pip/twine
.Net Nuget Nuget
Golang Go modules Go modules
Docker Docker Docker
Helm Helm charts –*
C/C++ Conan Conan
iOS CocoaPods
PHP PHP Composer PHP Composer
Ruby RubyGems RubyGems
Rust Cargo
Linux, Yum RPM
GNU Linux Debian
Hashicorp Terraform(まもなく) Terraform

* Helm v3ではGitLabユーザはコンテナレジストリを使用してHelm Chartsを保存することができます。しかし、Dockerによるメタデータの受渡しと保存方法のために、GitLabがこのデータを解析してパフォーマンス基準を満たすことはできません。

プロキシによるリポジトリのキャッシュ

92%以上のアプリケーションが公開リポジトリのオープンソースコードを使用しており、各アプリケーションのコードの60〜90%を占めると言われています。

Artifactoryのリモートリポジトリはオープンソースパッケージのリポジトリをプロキシしてキャッシュすることができるたえ、バージョンの不変性を強化し、ローカルアクセスが可能となり、あらゆる接続障害に対応します。これらをローカルのArtifactoryリポジトリと論理的に組み合わせて単一の仮想リポジトリとすることで、開発者には利便性を、管理者にはアクセス可能な情報のガバナンスを提供することができます。

GitLabのDependency Proxyも同様の機能を提供していますが、現在はコンテナレジストリでしか利用できず、Docker Hubへのプロキシのみとなっています。

SBOMとトレーサビリティのメタデータをビルド

アプリケーションのビルドにはパッケージや設定ファイルから、アプリケーションのランタイムコンポーネントとしてデプロイ可能なバイナリまで、ソフトウェアの構成要素である多くのアーティファクトが含まれています。 

1日に複数回のビルドを行うというDevOpsの目標を達成すると、あっという間にその数は増えていきます。当社のエンタープライズ顧客はそれぞれ平均2,000万個のアーティファクトを管理しており、毎年130%増加しています。

Artifactoryは、あらゆるビルドツールで作成されたすべてのビルドの拡張メタデータ(「ビルド情報」と呼んでいます)を保存し、オープンソースやプロプライエタリな依存関係のパッケージメタデータ、ビルドアーティファクト、環境設定などにリンクしています。詳細なビルド情報があれば、デプロイ可能なすべてのバイナリがどこから来たのか、またサービスのために用意されたすべての場所を追跡することができます。

ビルド情報はソフトウェア部品表(SBOM)の基礎でもあります。SBOMとはアプリケーションに含まれるすべてのアイテムとその起源を詳述した機械読み取り可能な目録のことで、製品化されたすべてのリリースやお客様に提供されます。  サイバー攻撃に対抗するためにSBOMを必要とする政府や規制された業界が増えている中、Artifactoryはコンプライアンスのための迅速なターンキーソリューション(直ちに稼働できるソリューション)となります。

GitLabにはArtifactoryのビルド情報に匹敵するような機能はありません。GitLabのCI/CDはdeploymentsと呼ばれる「ビルド」に類似した機能を提供しています。これはソースコードを含むビルドイベントの記録と、それがどこにデプロイされたのか(あるいは手動デプロイの場合はこれからデプロイされるのか)を記録することができます。しかし、このデータはデプロイされたバイナリではなく、イベントを説明するものであり、SBOMの作成やビルドを完全に複製できるメタデータは含まれていません。さらに、GitLab CI/CDだけの機能であるため、この追跡メカニズムをJenkinsなどの従来の CI/CD パイプラインに拡張することはできません。

メタデータではなく、GitLabの依存関係リスト機能は依存関係スキャンツールとのみ連携し、GitLab VCSのソースを解析して依存関係データを生成します。そのため、GitLab はデプロイ可能なバイナリから完全に信頼性のあるSBOMを作成することはできません。GitLab ができるのはソースコードから推測してバイナリに含まれている可能性のあるものを再構成することだけです。 

ビルドのプロモーションとステージングのリリース

新しいバージョンのソフトウェアはSDLCの中でいくつかのクオリティゲートを通過しなければなりません。しかし、これらのゲートを通過するものがリリースまでの道のりをスピーディにするか、そうでないのかを分けるのです。

ArtifactoryはSDLC全体を通して実行する不変のバイナリのビルドプロモーションを可能にします。SDLCの各ステージにリポジトリがあればメタデータ付きのビルドを順番に次のリポジトリに移すだけで、プロモーションが可能になります。

この「一度ビルドしてプロモートする」方法では全ての段階で同じビルドが利用されるため、DevOpsパイプラインにおける絶対的な一貫性が担保されます。自分たちで完全なビルドを行う必要がなくなったことで、チームはその時間をより徹底的なテストの実施や、より迅速なフィードバックの提供に充てることができます。

ビルドプロモーションはArtifactoryのDNAに組み込まれています。シンプルなAPIアクションで、あるリポジトリから次のリポジトリにビルドをプロモーションすることができます。また、Artifatoryのチェックサムベースのストレージは特定のビルドとそのメタデータが、それが保存されているすべてのリポジトリで同一であることを保証します。

GitLabはリリースバイナリのような一般的なアーティファクトのためのリポジトリやDockerイメージのためのコンテナレジストリを提供していますが、GitLabは単純にビルドプロモーションを標準でサポートしていません。GitLab CI/CD はGitLab プロジェクトで定義された環境へのデプロイメントの記録をサポートしていますが、この機能は他の自動化ツールでは使用できません。

ディストリビューションソリューション

JFrog CloudのリポジトリからAmazonのCloudFront CDNソリューションを通して、大量のソフトウェアを複数の場所にデリバリ配布することができます。JFrog Distributionは検証済みのアプリケーションやアップデートを使用可能なサーバ、デスクトップ、デバイスに安全に配信するためのエンタープライズ対応ソリューションを提供します。ArtifactoryリポジトリのバイナリからArtifactoryエッジノードに配信するための署名付きリリースバンドルを作成します。

GitLabはディストリビューションソリューションを一切提供しておらず、エンドツーエンドのDevOpsプラットフォームであるという主張には遠く及びません。

 接続性と自動化

汎用性を持たせるためにはDevOpsプラットフォームは開発チームが使用するすべてのテクノロジーをサポートし、必要なツールとシームレスに連携できる必要があります。

JFrog GitLab
CI/CD自動化
  構築済み(ネイティブ)ステップと拡張機能 X
  テンプレート
  シンプルなCI/CD作成
  条件付き実行と複雑なパイプライン
  パイプラインエディタ X
  署名付きパイプライン X
  Linuxビルド
  Windows Serverビルド 一部
  オートスケーリング・ビルドインフラサポート 3 2
REST API

CI/CD自動化

ソースコードのためのVCSの提供と同様にGitLabのCI/CDは成熟し、広く利用されています。GitLabのパイプラインはYAMLで記述し、開発者はパイプラインのステージとアクションを定義できます。 

同様にJFrog Pipelinesもパイプラインの定義に YAMLを使用します。しかし、いくつかの重要な違いがあります。

  • ネイティブステップ
    GitLabのCI/CDはGitLabのソースコードリポジトリと強力に統合されていますがビルド、テスト、デプロイのための各ツールは、それぞれのコマンドラインインターフェイスからシェルスクリプトで呼び出す必要があります。

    .JFrog PipelinesはArtifactoryだけでなく、XrayやDistributionなど、JFrog Platformのすべてのミッションクリティカルな部分とネイティブに統合されています。Pipelinesのネイティブステップは宣言的なYAMLで定義された構築済みステップによって、多くの一般的なアクション(Dockerイメージのビルド、セキュリティスキャン、リリースバンドルなど)を可能にすることで、すぐに実行できます。

    Pipelinesのネイティブステップはシェルコマンドを実行する汎用ステップと混在させたり、独自のPipelines Extensionsを作成して拡張したりすることで、低レベルの複雑さを隠蔽し、チーム、部門、組織で共有できるようになります。
  • シンプルなCI/CD作成
    GitLabのAuto DevOps機能はソースコードに基づいてパイプラインやインテグレーションを自動的に設定してくれるので、CIの開始に役立ちます。JFrog Pipelinesは宣言型のネイティブステップとカスタムエクステンションにより、複雑さを大幅に軽減し、どのように実行するかではなく、何を実行するかにフォーカスすることができます。さらにPipelines Templatesを使用してCI/CDの作成を迅速に行い、一般的な操作のためのパイプラインを素早く作成することができます。当社はいくつかのビルトインを提供していますが、独自のものを追加して、チームがCI/CDのベストプラクティスに従うようにすることができます。
  • 複雑なパイプライン
    GitLabの親子パイプラインは他のパイプラインの結果に基づいてサブパイプラインの開始(または開始しない)を自動的に選択するなど、パイプラインをよりダイナミックに動作します。


    同様にPipelinesでは他のパイプラインの出力が正常に完了した場合や担当者が管理する承認ゲートなど、さまざまなイベントをトリガーにし、パイプラインやステップを設定することができます。Pipelinesのグラフビューでは相互に接続されたすべてのパイプラインとリソース(「パイプラインのパイプライン」)のステータスをリアルタイムで表示し、それらの依存関係を把握することができます。
  • 署名付きパイプライン
    Pipelinesは統合されたJFrog Platformの一部として、パイプラインの各実行に対してブロックチェーンのような暗号署名付きの台帳を作成します。また、ビルドやリリースバンドルに、それを生成した実行へのリンクを含む拡張メタデータを追加します。お客様はビルドやリリースバンドルがリンクされた実行によって作成されたものであることを検証できない場合、ビルドプロモーション、リリースバンドルの作成、デプロイメントなどのダウンストリームアクションをブロックすることができます。この「ゼロトラスト」アプローチはパッケージの信頼性を担保し、パイプラインの改ざんを防止することで、さらなるセキュリティを提供します。

API、CLI、インテグレーション

GitLabとJFrogはインテグレーションを可能にするREST APIを提供しています。どちらも検討してみてください。汎用性の高い自動化のためには、JFrogの方がより包括的なセットを提供していることが分かると思います。 

JFrog CLIはコマンドラインからArtifactoryリポジトリにアクセスしたり、シェルスクリプトから自動化する手段を提供します。GitLabのサブスクリプションではCLIは一切提供されません。

GitLab CI/CDはGitLabソースコントロールリポジトリと緊密に連携しています。JFrog PlatformはパイプラインによるエンドツーエンドのDevOpsを提供しますがJenkins、CircleCI、GitLab CI/CDなどのCI/CDツールでもArtifactoryを使用することができます。JFrogは幾つかのインテグレーションをアウトオブザボックスで提供していますが、技術パートナーのインテグレーションから選択することもできます。

バイナリの保護

強力なDevSecOpsを実践するということは最高のリスクデータを入手し、その結果を解釈して安全性と規制遵守を維持することができるということです。また、ソフトウェアの製造プロセスに携わるすべての人がセキュリティを意識できるようにすることも重要です。 

JFrog GitLab
ソフトウェア構成分析(SCA)スキャン 制限あり
コンテナスキャン 制限あり
ライセンスコンプライアンス
自動化されたポリシーの施行 X
インパクト分析 X
シフトレフトセキュリティのIDEインテグレーション X

SCAスキャン

GitLab Dependency ScanningツールはGitLabソースコントロールリポジトリとGitLab CI/CDが緊密に統合されており、ソースコード内の脆弱なオープンソースの依存関係を特定するためにのみ使用できます。CI/CDパイプラインの中からソースコードをスキャンし、検出された脆弱性とその深刻度に関する情報がマージリクエストで報告されるため、開発者は修正することができます。GitLabではGitLab Package Registryのパッケージはスキャンしません。

JFrog XrayはArtifactoryのメタデータを活用して、パッケージとバイナリの再帰SCAスキャンを実行し、ビルドから直接オープンソースのコンポーネントを識別します。これにより、より確実で継続的な監視が可能となり、すでにデプロイされたバイナリにゼロデイ脆弱性のフラグを立てられます。

シフトレフトのセキュリティを支援するために開発者はXrayを起動してローカルディレクトリのソースコードの依存関係をスキャンして、コードをブランチにコミットする前に修正できます。

コンテナスキャン

GitLabコンテナスキャンはGitLab 14.0以降、オープンソースのTrivyエンジンを使用しています。コンテナスキャンはGitLab Container Registryのフローに現時点では統合されていません。DockerイメージのスキャンはGitLab CI/CDの別のジョブを通してのみ可能です。レジストリにプッシュされたイメージは自動的にスキャンされません。

JFrog XrayはXrayがサポートする18種類のパッケージタイプと同様にレジストリ内のDockerイメージ(OCI準拠のイメージやGoogle Distrolessイメージを含む)を継続的にスキャンし、脆弱性とライセンスポリシー違反の両方を検出するように設定できます。  

自動実行ポリシー

GitLabのDependency Scanning、Container Scanning、License Complianceなどのセキュリティツールはすべて人が読み、評価し、対処しなければならないレポートを提供しています。これは、ソフトウェアの迅速な提供を妨げる、摩擦の大きい手作業のステップです。

JFrog Xrayはセキュリティチームが脆弱性の深刻度やライセンスの競合に関するルールやポリシーを設定し、自動監視を設定して違反を検出し、スキャン後にそれらのポリシーを実施することを可能にします。JFrogパートナーとのインテグレーションにより、SplunkDataDogなどの分析ツールを通して違反をレポートしたり、PagerDuty、Slack*、MS-Teams*を通してインシデントレポートでチームに警告もできます。

*現在ベータ

インパクト分析

JFrog Xrayは脆弱性やポリシー違反の全範囲をビルドのインベントリ全体に表示するインパクトグラフを通して、バイナリエコシステム全体へのリスクインパクトを明らかにします。GitLabにはこれに匹敵する機能はありません。

IDEインテグレーション

IDE用のXrayプラグインを使用することでシフトレフトのセキュリティ意識を開発者に委ねることができ、コードのコミット前であってもOSSの依存関係にある脆弱性にフラグを立てて修正できます。

前述のようにGitLab Dependency ScanningはGitLab CI/CDによって実行されます。現在、GitLab用のIDEプラグインはありません。

無限のスケール

ビジネスは立ち止まっていてはいけません。グローバルに成長するためには、あらゆる機会を捉えなければなりません。限界はなく、どこから始めようともツールはそれに追従しなければなりません。クリティカル・パス・オペレーションは現在のニーズに適合するだけでなく、明日のニーズにも中断なく対応できるビジネスアジリティを備えていなければなりません。

JFrog GitLab
拡張可能な高可用性
リージョナルGEOレプリケーション 制限あり
マルチクラウド対応 X
ハイブリッドソリューション 制限あり
ユーザ無制限 X
プライベートディストリビューションネットワーク X


拡張可能な高可用性

GitLabとJFrogは負荷分散された複数のインスタンスを使用した高可用性(HA、クラスター化)をサポートしており、迅速なレスポンスを保証するとともに、フェイルオーバー保護やアップグレード時のゼロダウンタイムが可能です。  

リージョナルGEOレプリケーション

GitLab Geoは1つのプライマリGitLabサイトから読み取り専用のセカンダリサイトへの一方向ミラーリングによる限定的なサイトレプリケーションをサポートしています。これではグローバルな開発チームの共同作業をサポートするには不十分だと考えています。

JFrog Platformは様々なレプリケーショントポロジーをサポートしていますが、中でも革新的な双方向ミラーリング技術であるフェデレーテッドリポジトリは地理的に分散したチームがアーティファクトとそのメタデータを共同で作成し、共有することができます。各フェデレーテッドリポジトリ内では1つのサイトで行われたアーティファクトやリポジトリの構成に対する変更が他のメンバーサイト(最大10サイト)に自動的に同期されます。

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

GitLabは、すべてのクラウド(SaaS)サービスを米国のGCPという単一のクラウドプラットフォーム上でホストしており、マルチクラウドの冗長化は不可能です。GitLabにはSaaSサービスと独自管理型のインストールオプションがありますが、これらは別々のものであり、ユーザはこれらの間で作業をすることはできません。

JFrog Cloud (SaaS)は全ての主要なクラウドプロバイダー(AWS、GCP、Azure)上でマネージドホスティングが可能で、クラウドプラットフォームを選択したり、マルチクラウド戦略のために複数のプラットフォームを維持することができます。JFrog Platformのすべてのサブスクリプションレベル(Pro、Team、Enterprise、Enterprise+)はセルフホステッドまたはオンプレミスで利用でき、リポジトリのGEOレプリケーションを通してエンタープライズ対応のハイブリッドシステムを構築するために、JFrog Cloudのアカウントと組み合わせられます。

ユーザ無制限

ライセンス料がユーザアカウントの数で決定される場合、拡張や買収の費用が大幅に増えてしまいます。JFrogの無制限のユーザライセンスでは、そのようなことを考える必要はありません。実際にサポートできる数のユーザアカウントを追加コストなしで追加できます。

プライベートディストリビューションネットワーク

Artifactoryの単一の情報源からArtifactoryのエッジノードにリリースを配信することができ、エッジノードはマルチノードトポロジーに接続し、世界中に広がる安全で高速なプライベートディストリビューションネットワーク(PDN)を形成することができます。JFrogの革新的なピアツーピア・ネットワーキング技術により、貧弱なネットワーク接続、レイテンシー、国境を越えた障害を克服し、大規模な署名付きリリースバンドルを世界中に最高速度で安全に配信できます。

前述のように、GitLabは配信や配布のソリューションを提供していません。

一度でも前に進むと後戻りはできない

VCSおよびプロジェクトマネージャとしてのGitLabの強さはソースコード管理のためにGitLabに依存している多くの組織から見て明らかです。実際、JFrogのお客様の多くは、JFrogのユニバーサルCLIとAPIを利用して、GitLab、Jenkins、その他のツールなど、お好みのCI/CDと統合しています。GitLabが最近提出したForm S-1に記載されているお客様のうち、半数以上がJFrogのお客様でもあります。

幅広いツールのポートフォリオを持つGitLabの製品はベスト・オブ・ブリードのツールチェーンを単一ベンダーに置き換えることを求めています。しかし、そのベンダーが成功へのより良いチャンスを提供してくれない限り、それは危険な取引です。

JFrogのミッションはシンプルです。それはリリースを速く、安全に、継続的に提供するための最適なソリューションを提供することで、すべてのソフトウェアクリエイターを成功に導くことです。 

ミッションステートメントによると、GitLabの野望は確かに大きいです。「私たちの30年後のBHAG(社運を賭けた大胆な目標)は、あらゆる業界のナレッジワーカーに最も普及したコラボレーションツールになることです。」

なぜ30年も待つのでしょうか?バイナリ管理のための業界で最も人気のあるツールを搭載したJFrog DevOps Platformは今すぐ、無料版で利用できます。