マクロサビスの非同期通信とメッセジング|JFrog x射线

マ▪▪クロサ▪▪ビスはアプリケ,ションの構築方法を変えました。ソフトウェア設計は大規模なモノリシックなアプリケーション(変化や改善に適応できない)から,アジャイルな世界の変化に適応する小規模で独立したプロセスのインフラストラクチャの集合体へと移行しています。

マ▪クロサ▪ビスはどのように通信するのか?

マ▪▪クロサ▪▪ビスは互いに分離していますが通信できなければなりません。マ▪▪クロサ▪▪ビスのインフラストラクチャ内で通信を行う場合、最もポピュラーな1つが非同期通信です。

同期通信では他のタスクに移る前にレスポンスを待必要がありますが非同期通信ではマクロサビス間でメッセジを送信し,他のタスクで作業を続けることができます。また、このアプロ、チは各マ、クロサ、ビスの独立性を高めることにもなります。マ▪▪クロサ▪▪ビスが停止した場合、障害を受けたマイクロサービスが再び稼働するまでタスクは保留されるため、他のサービスに影響を与えることはありません。非同期通信の最も良い例の一つが電子メールです。電子メールを送信した後、送信者は他の作業を継続でき、受信者が電子メールを読むまでの間、送信者は返信に頼らずに作業を継続することができます。

非同期通信の実装方法はメッセジキュ(宛先サービスがビジーな状態であったり,利用できない間に待機しているすべてのメッセージのための一時的なストレージ)を使用することで実現できます。メッセージキューイングの基本的なアーキテクチャは非常にシンプルでプロデューサとコンシューマを使って実現します。プロデュサはメッセジを作成してキュに送信するアプリケション/サビスです。コンシュ,マはキュ,に接続し,処理するメッセ,ジを取得します。

メッセージキューイングを実装するためにプロデューサからメッセージを受け取り,コンシューマに渡すにはサービスのメッセージブローカーが必要です。メッセ,ジはキュ,に直接公開されません。その代わりにプロデュ,サはメッセ,ジを異なるキュ,にル,ティングする交換機に送ります。メッセ,ジはプロデュ,サに処理されてキュ,から削除されるまで存在します。

JFrog x射线の場合

微服务通信和消息传递

JFrog x光には主に2の作業フロがあります:

  • デ,タベ,スの同期化- - - - - -VulnDBなどのプレミアムリソ,スからのデ,タを含見ます。JFrogが管理するグローバルな脆弱性データベースサーバから問題と脆弱性に関するデータを毎日自動的に取得します。また,エアギャップ/ dmz環境では手動によるオフランモドも可能です。
  • リソスのンデックス化——インデックス化されたリソース内のコンポーネントに違反や脆弱性をインデックス化してマッチングします。
    このフロは新規と既存コンテンの2のフロに分けられます。

x光ではマイクロサービス間の内部通信はすべて非同期でRabbitMQメッセージブローカーを使用して管理します。

: JFrog x射线をすでにお使いですか?JFrog x射线のRabbitMQの詳細はこらの記事をお読みください。

JFrog x射线がRabbitMQを使用する方法

x射线はスキャン,ンパクト分析,デ,タベ,ス同期など複数の重要な役割があります。これらの役割には異なるx射线サ,ビスで同時に処理する必要があります。x光はRabbitMQを使用してサービス間の通信を確認しながら、異なる処理を管理します。

RabbitMQはXrayで主に3のタプのキュを管理しています:

  • 新しいコンテン-システムに追加された新しいコンテンに関連するベントを処理します。例えばインデックス化するリポジトリに新しいアーティファクトがアップロード後にインデックスキューにメッセージが作成されます。
  • 既存コンテン-システム内の既存コンテンを処理します。例えばリポジトリを再ンデックス化後にこのキュにメッセジが送信されます。
  • リトラvmware-失敗したメッセジはこのキュに送信され,TTLの間はそこに留まります。TTLの経過後、メッセージは元のキューに戻されます。

キュー名はサービス名とキュータイプによって定義されます(新しいコンテンツのキュー名にはサフィックスがありません)。この命名規則によってキュ,名が予測できるため,RabbitMQキュ,をデバッグする際に便利です。

JFrog x射线队列在x射线的主要流程

x射线のメンフロでのJFrog x射线キュ

ワークフローを独立したキューに分離するアプローチはメッセージキューの負荷を削減し,より効率的な機能を提供します。

各x射线マクロサビスは"ワカ"と呼ばれるコンシュマ数の設定を可能にしています。特定のキューに対するワーカー数を増やしたり,新しいx光インスタンスをクラスタに追加したりすることで,ワーカーのスケールアップが可能です。各サービスのワーカー数を個別に調整することで,集中度の低いサービスには比較的少数のワーカーを割り当て,より必要とされるところでインスタンスリソースを利用することができ,x光のパフォーマンスを最適化することができます。

試してみてください

JFrog x光はRabbitMQメッセージブローカーを使用して内部のマイクロサービスの非同期通信を行い,堅牢性とスケーラビリティを向上させています。

DevSecOpsを向上し?x射线を無料で使ってみましょ