Relay Proxy

Der App Configuration-Relay-Proxy befindet sich zwischen Ihren SDK-Clients und dem IBM Cloud App Configuration-Dienst. Anstatt dass jedes SDK eine direkte Verbindung zu IBM Cloud herstellt, verbinden sich die SDK-Clients mit dem Proxy in Ihrem eigenen Netzwerk. Der Proxy ruft die Konfiguration von IBM Cloud App Configuration ab, speichert sie im Cache und stellt sie anschließend allen verbundenen Clients zur Verfügung.

Architekturdiagramm
IBM Cloud App Configuration Relay Proxy

Warum den Relay-Proxy verwenden?

Erwägen Sie den Einsatz des Relay-Proxys in den folgenden Szenarien:

  • Reduzieren Sie ausgehende Anrufe an IBM Cloud – Der Proxy öffnet eine Upstream-Verbindung pro konfigurierter Kombination aus Collection und Umgebung, unabhängig davon, wie viele SDK-Instanzen in Ihrer Flotte bereitgestellt sind.
  • Bereitstellungen in Air-Gap- oder privaten Netzwerken – SDK-Clients kommunizieren ausschließlich mit dem Proxy innerhalb Ihres Netzwerks. Der Proxy verwaltet die gesamte Verbindung zu IBM Cloud.
  • Einheitliche Authentifizierung – Auf dem Proxy ist ein IAM-API-Schlüssel von IBM Cloud erforderlich. SDK-Clients authentifizieren sich beim Proxy mithilfe eines von Ihnen definierten Schlüssels.
  • Failover von Primär- und Backup-Instanz – Der Proxy wechselt automatisch zu einer Backup-Instanz von IBM Cloud App Configuration, wenn die Primärinstanz nicht verfügbar ist, und stellt den Betrieb automatisch wieder her.
  • Reibungsloser Start aus einer lokalen Seed-Datei – Im Schnellstartmodus stellt der Proxy die Konfiguration sofort aus einer lokalen Seed-Datei bereit, während im Hintergrund aktuelle Daten von IBM Cloud abgerufen werden.

So stellen SDK-Clients eine Verbindung zum Relay-Proxy her

SDK-Clients verwenden dieselben Verbindungstypen, die sie auch für die direkte Verbindung mit IBM Cloud App Configuration nutzen, richten sich jedoch stattdessen an den Proxy-Host und -Port:

SDK-Verbindungstypen zum Relay Proxy
SDK-Typ Verbindungstyp Zweck
Server-SDKs WebSocket Erhalten Sie Ereignisse zu Konfigurationsänderungen in Echtzeit
Client-SDKs Server-Sent Events (SSE) Konfigurations-Snapshots und Updates erhalten
Alle SDKs REST Anfängliche Konfiguration abrufen

Verbindungsmultiplexing

Einer der Hauptvorteile des Relay Proxy ist das Verbindungsmultiplexing. Hunderte oder Tausende von SDK-Instanzen können eine Verbindung zum Proxy herstellen, doch der Proxy öffnet pro Kombination collection × environment nur eine Upstream- WebSocket-Verbindung zu IBM Cloud App Configuration. Die Anzahl der Upstream-Verbindungen ist durch Ihre Konfiguration festgelegt und steigt niemals mit der Größe Ihrer Flotte an.

Wenn Sie beispielsweise zwei Sammlungen (inventory und payments) konfigurieren, die jeweils in zwei Umgebungen (dev und prod) verwendet werden, unterhält der Proxy genau vier Upstream- WebSocket-Sitzungen, unabhängig davon, wie viele SDK-Instanzen eine Verbindung zu ihm herstellen:

Beispiel für Upstream- WebSocket-Sitzungen für zwei Sammlungen und zwei Umgebungen
Upstream- WebSocket-Sitzung Sammlung Umgebung
Sitzung 1 Bestand Entwickler
Sitzung 2 Bestand prod
Sitzung 3 Zahlungen Entwickler
Sitzung 4 Zahlungen prod

Wenn IBM Cloud App Configuration ein Änderungsereignis über eine Upstream-Verbindung sendet, leitet der Proxy dieses sofort an alle SDK-Clients weiter, die diese Kombination abonniert haben.

Jede collection × environment Kombination verfügt innerhalb des Proxys über einen eigenen isolierten Cache-Slot und eine eigene Upstream- WebSocket-Sitzung.

Startmodi

Der Relay Proxy unterstützt zwei Startmodi, je nachdem, ob eine Seed-Datei konfiguriert ist.

Normaler Anfang

Im normalen Startmodus muss der Proxy erfolgreich eine Verbindung zu IBM Cloud App Configuration herstellen, bevor er Anfragen bearbeiten kann. Sollte das Abrufen einer Konfiguration fehlschlagen, wird der Startvorgang abgebrochen. Dieser Modus gewährleistet, dass Kunden bereits bei ihrer ersten Anfrage stets zuverlässige Daten erhalten.

Die Startsequenz läuft wie folgt ab:

  1. Konfiguration von IBM Cloud App Configuration abrufen – alle konfigurierten Kombinationen werden synchron abgerufen.
  2. Alle Konfigurationen im Arbeitsspeicher zwischenspeichern.
  3. Starten Sie den HTTP-Server und nehmen Sie Client-Anfragen entgegen.
  4. Eröffnen Sie Upstream- WebSocket-Sitzungen für Live-Änderungsbenachrichtigungen, jeweils eine pro Kombination.

Schnellstart

Im Schnellstartmodus wärmt eine Seed-Datei den Cache vor, sodass der Proxy sofort mit der Bearbeitung von Anfragen beginnen kann, ohne auf IBM Cloud warten zu müssen. Die aktuelle Konfiguration wird im Hintergrund abgerufen und, sobald sie verfügbar ist, an alle bereits verbundenen Clients übertragen. Dieser Modus eignet sich für Air-Gap-Umgebungen und ausfallsichere Bereitstellungen.

Die Startsequenz läuft wie folgt ab:

  1. Laden Sie die Seed-Datei von der Festplatte – der Cache wird sofort vorgewärmt, ein Netzwerkaufruf ist nicht erforderlich.
  2. Starten Sie den HTTP-Server sofort.
  3. Laden Sie im Hintergrund die aktuelle Konfiguration von IBM Cloud App Configuration ab – dabei werden die Startdaten überschrieben und alle verbundenen Clients benachrichtigt.
  4. Eröffnen Sie Upstream- WebSocket-Sitzungen für Live-Änderungsbenachrichtigungen, jeweils eine pro Kombination.

Informationen zum Seed-Dateiformat und zu den Konfigurationsoptionen finden Sie in der API-Referenz zu App Configuration.

Wie eine Konfigurationsänderung in Ihre SDKs einfließt

Wenn eine Konfigurationsänderung in der App Configuration-Konsole veröffentlicht wird, wird diese Änderung in folgender Reihenfolge an Ihre SDK-Clients weitergeleitet:

  1. IBM Cloud App Configuration sendet eine WebSocket-Nachricht an den Proxy der entsprechenden Upstream-Sitzung.
  2. Der Proxy ruft die aktualisierte Konfiguration für diese Kombination erneut ab und speichert sie im Cache.
  3. Der Proxy überträgt die aktualisierte Konfiguration an alle verbundenen Clients:
    • Server-SDKs empfangen ein WebSocket-Ereignis.
    • Client-SDKs erhalten ein SSE-Ereignis mit der aktualisierten Konfigurationsdatenlast.

Failover von Primär- auf Backup-System

Wenn eine Backup-Instanz konfiguriert ist, sorgt der Proxy für ein automatisches Failover bei WebSocket-Sitzungen und beim Abrufen von Konfigurationen.

  • WebSocket Sitzungen – Jede Kombination verfügt über eine eigene Upstream- WebSocket. Wenn die primäre Instanz nicht mehr verfügbar ist, stellt der Proxy sofort eine Verbindung zum Backup her. Der Proxy versucht alle 15 Sekunden erneut, eine Verbindung zur primären Instanz herzustellen, und schließt die Backup-Verbindung, sobald die primäre Instanz wieder verfügbar ist.
  • Konfigurationsabrufe – Konfigurationsabrufe bei HTTP erfolgen in der Reihenfolge Primär, dann Backup.

Konfiguration Ihrer SDKs für den Relay-Proxy

So verbinden Sie Ihre SDK-Clients mit dem Relay-Proxy statt direkt mit IBM Cloud:

  1. Ersetzen Sie den Hostnamen IBM Cloud bei der Initialisierung Ihres SDK durch den Host und den Port des Proxys.
  2. Region, guid, API-Schlüssel, collection_id und environment_id sollten mit den in der Relay-Proxy-Konfiguration übergebenen Werten übereinstimmen.

Es sind keine weiteren Änderungen am SDK-Code erforderlich.

Um mit dem Relay Proxy zu beginnen, wenden Sie sich bitte an den App Configuration-Support.