フェデレーテッド・リポジトリでマルチサイトDevOpsを実現
少人数の開発者チームが一つの部屋でアプリケーションを作っていた時代はとうに過ぎ去りました。今やエンタープライズソフトウェアの開発は世界中の複数の拠点に配置されているチームがパッケージを共有するという、高度な共同作業になっています。
エンタープライズ向けに、JFrog Artifactoryは様々なプッシュ/プルレプリケーションのトポロジーオプションによって、マルチサイトレプリケーションを可能にし、地理的に分散したチームはローカルリポジトリで最小限のレイテンシーで同じアーティファクト(バイナリとメタデータ)の利用が可能になっています。
最近では双方向ミラーリング技術であるJFrog Artifactoryフェデレーテッド・リポジトリを導入し、DevOpsチームにマルチサイトのチームやプロジェクトのための設定と管理が容易なオプションを提供しています。このリポジトリミラーリング技術は複数のサイト間のリポジトリのフェデレーテッド・セットを継続して同期します。
JFrog Artifactoryのフェデレーテッドリポジトリにより、企業は以下のことが可能になります。
- 地理的に分散したチーム間でソフトウェアを共同開発
- 頻繁に更新されるバイナリをサイト間で安全かつ効率的に同期が可能
- グローバルに展開
- 共有されているすべてのアーティファクトとメタデータがどこでも最新バージョンであるのを確実に実施
- ディザスタリカバリのためのレプリケーション
フェデレーテッド・リポジトリでグローバルにスケールアップ
JFrogのフェデレーテッド・リポジトリは地理的に分散したチームがアーティファクトとメタデータを一括して共有することで、マルチサイト開発を可能にします。
フェデレーションによって、1つのArtifactoryデプロイメント(例えばアムステルダム)のローカルリポジトリは他のArtifactoryデプロイメント(例えばバンコク)のローカルリポジトリと同期するように論理的に結合することができます。このように結合することでアムステルダムのリポジトリにプッシュされたアーティファクトやメタデータは自動的にバンコクのリポジトリにレプリケーションされます。また、このフェデレーションは双方向なため、バンコクのリポジトリにプッシュされたデータもアムステルダムにレプリケーションされます。
このように、フェデレーションに参加したArtifactoryリポジトリは各サイトに対し、グローバルな共有データにローカルでアクセス可能な統一されたリポジトリを提供します。
マルチサイトの同期
容易な管理
フェデレーテッド・リポジトリを使用することで、1つのサイトで承認された管理者が複数のJFrog Platformのローカルリポジトリを作成し、単一のマルチサイトフェデレーションに結合することができます。フェデレーショントポロジーを作成するために、タイムゾーンを越えた異なる物理的なサイトにいるプラットフォーム管理者間で設定を調整する必要はありません。
設定やメンテナンスは提携しているどの物理的なサイトからでも迅速かつ容易に行うことができます。設定やリポジトリの設定に対するすべての変更は全てのフェデレーションメンバー間で自動的に同期されます。
管理者ビュー
エンタープライズな拡張性
Artifactoryのユニバーサルパッケージ管理でサポートされている30種類のリポジトリタイプ間でフェデレーションすることができます。もちろん、フェデレーション内のすべてのリポジトリは同じタイプでなければなりませんが、異なるパッケージタイプのために複数のフェデレーションを作成することができます。例えばnpmリポジトリのフェデレーション、Mavenリポジトリのフェデレーション、Dockerのフェデレーションなどが可能です。
リポジトリフェデレーションには同じリポジトリタイプのメンバー(リモートサイトにある異なるJFrog Platformデプロイメント(JPD)のローカルリポジトリ)を最大10個まで含めることができ、地理的に広い範囲をカバーすることができます。
セキュアな信頼関係
フェデレーテッド・リポジトリではバイナリプロバイダ・トークンを使用し、各サイトで証明書を設定することなく、メンバー間の信頼関係を確立します。JFrog Mission Controlは自動的に全てのJPDをセキュアなフェデレーションに対応させますが、セキュアなJFrog PlatformのURLを手動で指定することもできます。
各サイトの管理者は自サイトのJPDで管理しているパーミッショングループを通して、自サイトのユーザーによるフェデレーテッド・リポジトリへのアクセスを可能にしたり、制限したりすることができます。
フェデレーテッド・リポジトリの設定方法
フェデレーテッド・リポジトリを使用するために、JPD間でクロスインスタンス認証(Circle-of-Trust)を設定する必要があります。この設定完了後、プラットフォーム管理者は、事前に定義された権限セットに基づいて、リポジトリに対してCRUD(Create、Remove、Update、Delete)アクションを実行することができます。
1つのフェデレートリポジトリに対して行われた全てのアクションはリポジトリのコンテンツだけでなく、重要な設定変更も含めて自動的に同期され、すべてのフェデレーテッド・メンバーに反映されます。
フェデレーション内において、アーティファクトとメタデータの双方向のミラーリングが行われるのが直接的な接続を宣言したリポジトリ間のみであるということは重要なポイントです。ミラーリングは二次的に接続された他のリポジトリに自動的にカスケード接続されることはありません。
例えば以下の4つのJFrog Platformを導入したマルチサイトの例を考えてみます。
- Amazon Web Services (AWS)のクラウドインスタンス
- フロリダ州オーランドにあるメインデータセンターのオンプレミスサイト
- カリフォルニア州サンタクララ本社のオンプレミスサイト
- マサチューセッツ州ウォルサム支社の開発オフィスのオンプレミスサイト
これがどのように機能するか、いくつかのトポロジーの例を見てみます。
スター型トポロジー
スター型トポロジーではJPD内のローカルリポジトリはフェデレーション内の他のJPDリポジトリに対するセントラルハブの役割を果たします。ハブとなるJPDリポジトリはアーティファクトとメタデータをフェデレーション内の全てと共有し、全てのアーティファクトをハブと共有します。しかし、他のサイトはお互いに共有していません。
この例ではアフィリエイトサイトに接続するためのセントラルハブとして、AWS上のクラウドインスタンスからフェデレーションを構成します。3つのオンプレミスサイトではフェデレーテッド・リポジトリの設定は行われません。
つまり、この例では
- AWSのリポジトリにプッシュされたアーティファクトはオーランド、サンタクララ、ウォルサムにミラーリングされる
- オーランドのリポジトリにプッシュされたアーティファクトはAWSにのみミラーリングされる
- サンタクララのリポジトリにプッシュされたアーティファクトはAWSにのみミラーリングされる
- ウォルサムのリポジトリにプッシュされたアーティファクトはAWSにのみミラーリングされる
オーランド | ウォルサム | サンタクララ | AWS | |
オーランド |
✅ | X | X | ✅ |
ウォルサム |
X |
✅ |
X |
✅ |
サンタクララ |
X |
X |
✅ |
✅ |
AWS |
✅ | ✅ | ✅ |
✅ |
ご覧の通り、このトポロジーには大きな制限があります。例えばオーランドで作成されたアーティファクトはウォルサムの開発者がローカルで利用することはできません(但し、全てのサイトがAWS上のクラウド・インスタンスを通して全てのアーティファクトにアクセスできます)。
このようなトポロジーは例えば、ほとんどのアーティファクトとメタデータがセントラルサイトで作成されますが、アフィリエイトサイトではローカルで利用できる必要がある場合など、特定の状況では有用です。
フルメッシュ型トポロジー
フルメッシュ型トポロジーではフェデレーション内のすべてのアーティファクトとメタデータが全てのサイトのローカルリポジトリにミラーリングされます。全てのサイトの全てのユーザーはローカルに管理されたパーミッションに従い、最小限のネットワークレイテンシーで全てのデータにアクセスできます。
その為、プラットフォーム管理者はフェデレーション接続に万全を期す必要があります
例えば、管理者は誤って次の図のようにフェデレーションを構成してしまうかもしれません。
このトポロジー図では、この円の接続セットによって完全なメッシュネットワークが形成されているように見えるかもしれませんが、そうではありません。アーティファクトとメタデータの双方向ミラーリングはフェデレーション内で直接接続されているリポジトリ間でのみ行われます。
この構成では各サイトは他のサイト内の2つだけをミラーリングし、3つ全てをミラーリングする訳ではありません。
オーランド | ウォルサム | サンタクララ | AWS | |
オーランド |
✅ |
✅ | X | ✅ |
ウォルサム |
✅ |
✅ |
✅ |
X |
サンタクララ |
X |
✅ |
✅ |
✅ |
AWS |
✅ | X | ✅ |
✅ |
フェデレーテッド・リポジトリをフルメッシュで正しく設定するために、各サイトが他の3つのサイトと直接連携するように設定する必要があります。
このフルメッシュ構成では各サイトが全てのサイトをミラーリングします。
オーランド | ウォルサム | サンタクララ | AWS | |
オーランド |
✅ |
✅ | ✅ |
✅ |
ウォルサム |
✅ |
✅ | ✅ |
✅ |
サンタクララ |
✅ |
✅ | ✅ |
✅ |
AWS |
✅ |
✅ | ✅ |
✅ |
多くから一つへ
フェデレーテッド・リポジトリは複数サイトでアーティファクトリポジトリを共有するための柔軟な方法であり、セットアップやメンテナンスが容易です。トポロジーをどのように構成するかは環境次第であり、ニーズに最適なスタイルを選択することができます。
一度設定すればフェデレーテッド・リポジトリは単一ユニットとして機能し、各サイトの開発者は単一のローカルURLで利用できます。アーティファクトとメタデータは全てのリポジトリにミラーリングされるため、各サイトではローカルリポジトリとして機能するため、断続的な接続や切断から保護されます。
セキュリティに関しても各サイトで管理することができます。ローカル管理者はJFrog Platformの詳細なパーミッションを通して、個人またはチームのリポジトリへのアクセスを管理します。
もっと詳しく知りたい場合はJFrog Platformプラットフォームの無料トライアル(EnterpriseまたはEnterprise+)で、ご確認頂けます。