スケラブルなマルチリジョンSaaSソリュション
1 .。ディストリビュション,プロモション,デプロメントをSaaSへ

他の多くのプロダクションDevOpsエンジニアリングチームと同様に,私たちJFrogチームも20以上のクラウドリージョンにまたがるAWS, Azure, GCPに1日に数回,新しいバージョンリリースをデプロイしています。このプロセスは以前は何時間も要し,他のチームによるメンテナンスと並行して行われた場合は失敗する可能性さえありました。
2021年に進行中のクラウド改善の一環として,自社のSaaS環境,つまりエンドユーザーへのあらゆる種類のソフトウェアリリースのSaaS展開に対応するために使用しているシングルインスタンスの設定を変更することにしました。私たちは1つのメインサイトから大規模な地域にわたってソフトウェアを配布したいと考え,それには大規模な自動化が必要で,完全な証明とテスト,スケーラブルなインフラを使用する必要がありました。
私たちは”自分たちのドッグフードを食べる”ことに決め,シングルインスタンスのJFrog ArtifactoryをマルチインスタンスのJFrog平台にアップスケ,ルし,さらに分散エッジをセットアップしました。
当社の使用例
以前はプロダクション環境で1つのJFrog Artifactoryインスタンスをプライベート码头工人および执掌レジストリとして使用することで多くのメリットを享受していました。そのおかげでバイナリアーティファクトを信頼できる唯一の情報源から,あらゆるJFrogクラウドリージョンに保存,共有,デプロイすることができたのです。
複数プロダクションリ,ジョンの単一障害点
このシングルesc escンスタンス方式の最大のメリットは,そのシンプルさにあります。しかしスケ,ラブルではありません。シングルインスタンスの設定は需要が少ない環境では最も効率的な選択肢かもしれませんし,設定も比較的簡単です。しかし,同じ設定で静的コンテンツと動的コンテンツの両方を提供する場合,需要が大きくなり非効率的になります。また1つのインスタンスを使用することで,たった1つの不具合や故障が原因でシステム全体が動かなくなるという事態を招く可能性があり,潜在的なリスクを抱えています。
さらに,従来は数週間から数カ月ごとにリリ,スされるバ,ジョン単位でのデリバリが一般的でした。新しいバージョンがリリースされるたびに運用チームが手作業でソフトウェアをアップデートしなければなりませんでした。それが今,すべて変わりました。
ソリュ,ション
JFrog平台は開発者のコードからプロダクション稼動までシームレスで安全なソフトウェアリリースの流れを可能にします。
私たの構成はマルチクラウドでha冗長ネットワ,クア,キテクチャを構成しています。つまり,単一障害点がなく,Artifactory边缘のノードが1つでも稼働していれば,社内システムの運用を継続できます。これにより,稼働率は最大で"ファ▪▪ブナ▪▪ン"まで向上しました。
.JFrog云は現在,当社のクラウドArtifactory边缘からプロダクション用ランタイムクラスターへの何百万ものダウンロードを処理しています。@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
複数のプロダクションリジョンに対するマルチンスタンスアプロチ
私たの日々の仕事の流れ:Dev2Cloudのプロダクションフロ
社内ではクラウドプロダクションに新しいバージョンを提供する方法について,厳格なフォワードコントロールを実施しました。以下はその2の例です。
- RnDデリバリ,グル,プのみが関連する製品のCIジョブを介して,エッジおよびクラウドステージングにバージョンをデプロイおよびプロモートします。
- ciジョブでクラウドプロダクション環境にプロモトまたはデモトするのはプロダクションデリバリ,グル,プのみです。エッジにデプロされていないバジョンをプロモトされた場合は失敗します。
1.ソフトウェア配布- RnDデリバリグルプ
今日,私たちのすべてのデリバリーチームは信頼できる不変のリリース・バンドルを使用して,リリースをArtifactory边缘にプロモートする方法を知っています。これには社内のオフィシャルなJFrog平台リリースや图依存関係,外部のサードパーティ依存関係が含まれます。

2.ソフトウェアデリバリ-プロダクションデリバリグルプ
JFrog分布は大規模なデプロイメントと同時ダウンロードを高速化し,ハイレベルな同期ダウンロードをサポートします。
私たちはE2Eクラウドのプロビジョニング,デプロイメント,メンテナンスを担当する社内デプロイサービス(上記ソリューションセクションの図中のJFrog内部クライアントを参照)を開発しました。このサ,ビスは舵图とDockerメ,ジ(基本的に私たちのワークロードをデプロイするもの)を含むリリースバンドルをDevCenterから取得します。
無限のスケラビリティ—ネットワクの高速化と耐障害性
大規模なインフラのフットプリント,ユーザー,ダウンロードの急増に対応するため,ソフトウェアの更新を迅速にリリースするにはDNSソリューションが必要です。私たちのチームはスケーラブルなHAソリューションを確実にし,規模に応じたネットワーク使用率と耐障害性を向上させるために,多大な投資を行っています.DNSソリューションのためのいくつかの異なるオプションを検討した後,私たちはレイテンシールーティングポリシー(DNSソリューション)にAWS R53を使用することに決定しました。
私たちのユースケースではソフトウェアのリリースバンドル(码头工人イメージと执掌图表)のコレクションを用意し,異なる地域のクライアントが単一のエンドポイント(レイテンシールーティングポリシー)を介して利用可能なArtifactory云边缘のいずれかからダウンロードできるようにしています。
レイテンシーベースのレコードは関連するヘルスチェックを適用することで,トラフィックを最適なレイテンシーと往復時間の短いエッジにルーティングできるため,最適な選択肢となります。AWS R53をに使用することで,権威あるサーバーがDNS階層を横断して最終的な回答を取得するため,最終回答解決までの時間を短縮する别名レコードを使用する利点を得られます。
結果
1年近くプロダクション運用を続けた結果,クラウドのデプロescメントに大きな改善が見られました。JFrog平台を利用することで大規模でインフラ非依存からあらゆるクラウドサーバーにアップデートをリリースする際に、デプロイのスピード、ガバナンス、ネットワークの利用率を向上させることができました。
JFrog学院の無料アカウントを作成し,今日から学習をはじめましょう。
最後に
私たちの経験ではマルチインスタンスアプローチは非常に好評なため,初期設定を多少増やしてもいいのであれば,最初からマルチインスタンスにすることをお勧めします。
分散型クラウドソリュ,ションの設計と実装に貢献してくれたメンバ,に感謝します。Eran Nissan, Eldad Assis, Matan Katz, Asaf Federman, Ronny NivそしてAWSの方々に特に感謝いたします。さらにJFrog分布式*云機能,プロセス,設計上の決定についてサポートと支援をしてくれたCTO,クラウドプロダクション,DevOpsの各チームにも感謝します。
JFrog云のためにさらなる高度な機能を作り続ける私たちのチームからの興味深いアップデートにご期待ください。