JFrog が実現した開発者のためのセルフサービス型クラウド環境 ~ Crossplane を使った自動化と効率化の取り組み

Frog が開発者のために実現したセルフサービス型クラウド環境の舞台裏

JFrog の社内 DevOps チームは、開発者向けにクラウド リソースの準備や環境構築、インフラの管理が必要でした。
しかし、これらの作業には多くの繰り返し作業が伴い、時間が無駄になるだけでなく、開発者が新機能のビルドや革新的なプロダクト開発に集中できない要因となっていました。

本記事では、こうした課題に対して JFrog の DevOps チームがどのように取り組んだのか、その裏側をご紹介します。鍵となったのは、Kubernetes ネイティブなリソースでインフラをコードとして管理できるオープンソース プロジェクト「Crossplane」の活用です。

Crossplane を活用することで、開発者がインフラの複雑さを意識することなく、必要なリソースや環境を自分で簡単に作成できる、社内向けセルフサービス プラットフォームを構築することができました。

Crossplane とは?

技術的な詳細に入る前に、まず Crossplane について簡単に説明します。

Crossplane は、クラウドリソースやサービスを Kubernetes の API オブジェクトとして管理できるオープンソース プロジェクトです。
Kubernetes のインターフェースや記法をそのまま使ってインフラを扱えるため、アプリケーションと同じ感覚でリソースの定義、管理が可能になります。

Crossplane は宣言的なアプローチを提供し、データベース、ストレージ、ネットワーク、さらには環境全体の構築まで、Kubernetes 経由で簡単にクラウド リソースをプロビジョニングできます。

開発者リソースのプロビジョニングが抱えていた課題

インフラ チームとして日々感じていたのは、開発者が新しい環境やリソースを必要とするたびに、手動での申請や承認待ちが発生し、プロビジョニングが非常に煩雑で遅く、ミスも多かったということです。
この状況では、開発者は自律的に作業できず、リリースに向けたコーディングに集中する時間が奪われていました。

JFrog の目標は、開発者が DevOps やインフラチームの手を借りずに、自分自身で必要な環境やリソースを簡単に準備できるセルフサービス型の仕組みを提供することでした。
これにより、クラウド環境の構築にかかる障壁を取り除き、開発スピードと生産性を向上させることを目指しました。

Crossplane の導入

JFrog はさまざまな調査を経て、Crossplane が最適なソリューションであると判断しました。
Go 言語で開発された Crossplane を Kubernetes 環境に統合することで、インフラの制御を維持しつつ、開発者には自由度の高いセルフサービス体験を提供できるようになったのです。

1. Crossplane による IaC の実現

まずは、開発者が必要とするインフラ リソースを定義することから始めました。
Crossplane を使えば、Kubernetes のカスタム リソース (CR) としてインフラ要件を記述できます。
これにより、クラウド プロバイダーに依存しない統一的な操作が可能になり、開発者は単純な YAML ファイルを用いてジョブを実行するだけで、リソースのリクエストが行えるようになります。

2. セルフサービス インターフェースの構築

API やインフラリソースの定義が完了した後、JFrog は Crossplane のリソース定義を適用するためのシンプルな Jenkins ジョブを作成しました。

さらに、開発者がクラウドプロバイダーの選択やデータベース サイズの指定など、必要な構成を入力できるユーザーフレンドリーなジョブも用意。
Crossplane の Composition と API を活用し、よく使われる環境構成をテンプレート化することで、選択だけで環境構築が完了する仕組みを実現しました。

たとえば、ある開発者が「JFrog Artifactory」と「JFrog Xray」を Kubernetes クラスター上に、PostgreSQL データベースとオブジェクト ストレージ付きでセットアップしたい場合、テンプレートを選ぶだけで環境がすぐに立ち上がります。

3. プロビジョニングと管理の自動化

裏側では、Crossplane API の結果に基づいてカスタムリソース (CR) を Git に保存し、それを ArgoCD が Crossplane に適用するというワークフローを構築。
これにより、開発者のリクエストが送信されると、クラウド リソースの準備と設定が自動的に行われるようになりました。
Artifactory に保存されたイメージや Helm チャートも自動で取得され、環境が迅速に整います。

クラウド API を抽象化してくれる Crossplane のおかげで、ほぼすべてのプロビジョニング工程が自動化され、人的な介入を最小限に抑えることができました。

このようにして、JFrog は インフラの複雑さを隠蔽しつつ、開発者が自由に使えるクラウド環境を実現しました。
開発スピードの向上と運用効率の両立を可能にしたこの取り組みは、今後の開発基盤のあり方においても、大きな示唆を与えるものと考えています。

Crossplane による自動プロビジョニングの一般的な手順

この自動化がどのように機能しているのかを理解するために、裏側で何が起こっているのかを段階的に見ていきましょう。

a. Kubernetes のカスタムリソース (CR) の作成

Crossplane は、ユーザーからのリクエストを Kubernetes のカスタムリソース (CR) に自動的に変換します。
たとえば、開発者が PostgreSQL データベースを要求した場合、Crossplane はその構成内容を定義する PostgreSQLInstance CR を生成します。
これらの CR は Kubernetes クラスター内に保存され、Crossplane はそれをもとにリソースの作成や管理を行います。

b. Crossplane Compositions (構成定義)

Crossplane は「Composition (コンポジション)」という仕組みを使って、クラウド リソースの上位抽象化を定義します。
Composition は、インフラ構築のための再利用可能な設計図のようなもので、たとえば「マネージドな PostgreSQL インスタンス」「S3 バケット」「Kubernetes クラスター」などを一括で構築する方法をまとめて定義できます。

このように、Crossplane は複雑なクラウド インフラの構築を Kubernetes を通じて自動化し、再現性の高い運用を可能にしています。

PostgreSQL インスタンス、S3 バケット、および Kubernetes クラスターの作成に使用されるコード

c. リコンシリエーション ループとリソース作成オペレーター

カスタム リソース (CR) が作成されると、Crossplane は Kubernetes のコントローラー パターンに基づく「リコンシリエーションループ (状態の整合性を保つループ)」に入ります。
Crossplane は、リソースが正しくプロビジョニングされているかを継続的に確認し、不足や設定ミスがあれば、クラウド プロバイダーの API を通じて自動的に修正します。

これにより、リソースが常に「あるべき状態」に保たれ、プロビジョニング中の遅延や失敗があっても、環境全体の整合性を保つことができます。

また、JFrog はこの仕組みを GitOps や DevOps プロセスと統合しており、Git リポジトリでリソースや環境の変更をバージョン管理し、Artifactory ではコンテナー イメージや Helm チャートを管理しています。
これにより、開発者はアプリケーション コードと同じように、インフラの変更を追跡およびロールバックし、チームで共同管理することが可能になりました。

4. RBAC (ロールベース アクセス制御) と権限管理

このセルフサービス型プラットフォームを構築する上で重要だったのは、開発者に役割に応じた適切なアクセス権限を与えることでした。
Crossplane は RBAC (ロールベース アクセス制御) に対応しており、ユーザーごとにきめ細かな権限を定義することができます。
さらに、安全なアクセスプロキシを併用することで、開発者は自分が作成したリソースのみを操作、管理できるようにしつつ、セルフマネジメントも可能にしています。

たとえば、プロジェクトごとに開発チームが分かれている場合でも、それぞれのチームが自分たちのリソースだけを管理できるようになっており、セキュアかつスケーラブルな運用を実現しています。

5. モニタリングとコスト管理

リソースの無駄遣いを防ぐため、JFrog プラットフォームではモニタリング ツールとコスト管理ツールを統合しています。各リソースには「有効期限 (expiry)」や「所有者 (owner)」といったタグを付与することで、使用状況やコストの可視化を実現。これにより、未使用や過剰なリソースを特定し、コストの最適化につなげています。

さらに、すべてのインフラはあらかじめ定義されたサイズ クラス (small/medium/large) に基づいて作成されるため、リソースの無計画なリクエストや過剰スペック化を防止できます。
この取り組みにより、クラウド コストの無駄を約 25% 削減することができました。

このように、Crossplane を活用した自動化基盤は、再現性、セキュリティ、効率性のすべてを兼ね備えた、現代的なインフラ運用の一例となっています。

オンプレミスとマルチクラウドが混在する環境におけるセルフサービス型プロビジョニングの全体像

6. 時間短縮 ~ 数日から数分へ

環境タイプ従来の手動作業時間セルフサービス実行時間
Dev/Test 用 K8s 環境1 〜 2 日約 10 分
PostgreSQL データベース数時間約 5 分
マイクロサービス一式1 〜 2 日約 10 〜 15 分

この変化により、以下のような成果を得られました。

  • プロビジョニング時間を 85 〜 90% 短縮
  • 開発者がインフラをセルフサービスで構築 (チケット不要)
  • DevOps チームはプロビジョニングから解放され、プラットフォーム改善に集中
  • 10 倍のスケーラビリティを実現

10 倍スケール対応とその他の主なメリット

Artifactory と Crossplane の連携により、JFrog チームは現在の容量の 10 倍まで数分でスケールできる環境を構築することに成功しました。

開発プラットフォームのスケーラビリティ ~ 10 倍成長への備え

新しいアーキテクチャにより、運用効率を高めながらインフラを拡張可能に。

  • Crossplane の再利用可能な Composition (設計テンプレート) を活用し、70% の開発環境関連のプロビジョニング依頼を自動化
  • GitOps と Artifactory によるインフラ変更の一元管理で、バージョン管理、監査、ロールバックが可能に

この新しい仕組みは、すでに数百件にのぼる環境作成リクエストに自動対応しており、今後さらに拡張していく予定です。

Crossplane によって得られた追加のメリット

  • 開発者の自立性向上
    他チームの承認を待つ必要がなくなり、自分たちで環境を即座に構築できるように。待ち時間の削減と生産性向上につながりました。
  • 一貫性と標準化
    リソースはすべてコードで定義されるため、組織全体で標準化されたベストプラクティスを適用可能に。テンプレート化により環境の一貫性を確保し、25% のクラウド コスト削減 (過剰、遊休リソースの削減) を実現。
  • 効率性の向上
    自動化により、インフラチームと開発者の手作業が大幅に減り、より重要な業務に集中できるように。
  • コスト管理の改善
    リソース使用状況の可視化とタグ (所有者や期限) による管理により、コスト最適化と不要リソースの特定がしやすくなりました。

まとめ

Crossplane を活用することで、社内にセルフサービス型のインフラ プラットフォームを構築し、開発者が最小限の手間とコストで必要なリソースや環境を迅速に作成できるようになりました。

これにより、開発プロセスは大きく効率化され、開発者の自立性と生産性も大幅に向上しています。

開発環境向けに JFrog Artifactory を活用したセルフサービス型プロビジョニングの構築方法について詳しく知りたい方は、ぜひ、JFrog の日本正規代理店であるエクセルソフトまでお問い合わせください。

記事参照: How JFrog Delivers Self-Service Cloud Environments for our Developers

世界の人気ソフトウェアを提供するエクセルソフトのメールニュース登録はこちらから。

タイトルとURLをコピーしました