Proxy a staffetta
Il proxy di inoltro di App Configuration si trova tra i client SDK e il servizio IBM Cloud App Configuration. Anziché connettersi direttamente a IBM Cloud, i client SDK si connettono al proxy all’interno della propria rete. Il proxy recupera e memorizza nella cache la configurazione da IBM Cloud App Configuration, per poi trasmetterla a tutti i client connessi.
Perché utilizzare Relay Proxy?
Si consiglia di utilizzare Relay Proxy nei seguenti scenari:
- Ridurre le chiamate in uscita verso IBM Cloud — Il proxy apre una connessione upstream per ogni combinazione configurata di raccolta e ambiente, indipendentemente dal numero di istanze SDK distribuite nella flotta.
- Implementazioni con air-gap o su rete privata — I client SDK comunicano esclusivamente con il proxy all'interno della rete. Il proxy gestisce tutte le connessioni a IBM Cloud.
- Autenticazione a punto unico — Sul proxy è richiesta una chiave API IAM di IBM Cloud. I client SDK effettuano l'autenticazione presso il proxy utilizzando una chiave definita dall'utente.
- Failover dell'istanza primaria e di backup — Il proxy passa automaticamente a un'istanza di backup di IBM Cloud App Configuration quando quella primaria non è disponibile e si ripristina automaticamente.
- Avvio graduale da un file seed locale — In modalità “fast-start”, il proxy fornisce immediatamente la configurazione da un file seed locale, mentre in background recupera i dati aggiornati da IBM Cloud.
Come i client SDK si connettono al Relay Proxy
I client SDK utilizzano gli stessi tipi di connessione che impiegano per connettersi direttamente a IBM Cloud App Configuration, ma indirizzano la richiesta all'host e alla porta del proxy:
| Tipo di SDK | Tipo di connessione | Scopo |
|---|---|---|
| SDK server | WebSocket | Ricevi gli eventi relativi alle modifiche di configurazione in tempo reale |
| SDK client | Server-Sent Events (SSE) | Ricevi le istantanee di configurazione e gli aggiornamenti |
| Tutti gli SDK | REST | Recupera la configurazione iniziale |
Multiplexing delle connessioni
Uno dei principali vantaggi del Relay Proxy è il multiplexing delle connessioni. Centinaia o migliaia di istanze SDK possono connettersi al proxy, ma il proxy apre una sola connessione upstream WebSocket per ogni combinazione collection × environment verso IBM Cloud App Configuration. Il numero di connessioni a monte è determinato dalla configurazione e non aumenta mai in base alle dimensioni della flotta.
Ad esempio, se si configurano due raccolte (inventory e payments), ciascuna utilizzata in due ambienti (dev e prod), il proxy mantiene esattamente quattro sessioni WebSocket a monte, indipendentemente
dal numero di istanze SDK che vi si connettono:
| Sessione " WebSocket " a monte | Raccolta | Ambiente |
|---|---|---|
| Sessione 1 | inventario | sviluppo |
| Sessione 2 | inventario | Prod |
| Sessione 3 | pagamenti | sviluppo |
| Sessione 4 | pagamenti | Prod |
Quando IBM Cloud App Configuration invia un evento di modifica su una connessione upstream, il proxy lo distribuisce immediatamente a tutti i client SDK iscritti a quella combinazione.
Ogni combinazione " collection × environment " dispone, all'interno del proxy, di un proprio slot di cache isolato e di una sessione " WebSocket " a monte.
Modalità di avvio
Relay Proxy supporta due modalità di avvio a seconda che sia stato configurato o meno un file seed.
Avvio normale
Nella modalità di avvio normale, il proxy deve riuscire a connettersi a IBM Cloud App Configuration prima di poter elaborare qualsiasi richiesta. Se il recupero di una configurazione non va a buon fine, l'avvio viene interrotto. Questa modalità garantisce che i client ricevano sempre dati attendibili sin dalla loro prima richiesta.
La sequenza di avvio è la seguente:
- Recupera la configurazione da IBM Cloud App Configuration — tutte le combinazioni configurate vengono recuperate in modo sincrono.
- Memorizza tutte le configurazioni nella memoria.
- Avvia il server HTTP e accetta le richieste dei client.
- Apri sessioni “ WebSocket ” a monte per ricevere notifiche in tempo reale delle modifiche, una per ogni combinazione.
Tempi rapidi
In modalità "fast-start", un file seed preriscalda la cache in modo che il proxy possa iniziare a gestire le richieste immediatamente, senza dover attendere l' IBM Cloud. La nuova configurazione viene scaricata in background e inviata a tutti i client già connessi non appena disponibile. Questa modalità è indicata per ambienti con air gap e implementazioni resilienti.
La sequenza di avvio è la seguente:
- Carica il file seed dal disco: la cache viene precaricata istantaneamente, senza bisogno di effettuare alcuna richiesta di rete.
- Avvia immediatamente il server HTTP.
- Recupera in background la configurazione aggiornata da IBM Cloud App Configuration: sovrascrive i dati iniziali e avvisa tutti i client connessi.
- Apri sessioni “ WebSocket ” a monte per ricevere notifiche in tempo reale delle modifiche, una per ogni combinazione.
Per informazioni sul formato del file seed e sulle opzioni di configurazione, consultare la guida di riferimento all'API di App Configuration.
Come una modifica alla configurazione viene applicata ai vostri SDK
Quando una modifica alla configurazione viene pubblicata nella console App Configuration, tale modifica viene trasmessa ai client SDK secondo la seguente sequenza:
- IBM Cloud App Configuration invia un messaggio “ WebSocket ” al proxy nella sessione upstream corrispondente.
- Il proxy recupera nuovamente la configurazione aggiornata per quella combinazione e la memorizza nella cache.
- Il proxy trasmette la configurazione aggiornata a tutti i client connessi:
- Gli SDK dei server ricevono un evento “ WebSocket ”.
- Gli SDK client ricevono un evento SSE contenente il payload di configurazione aggiornato.
Failover primario e di backup
Quando viene configurata un'istanza di backup, il proxy garantisce il failover automatico per le sessioni WebSocket e il recupero delle configurazioni.
- WebSocket sessioni — Ogni combinazione mantiene il proprio WebSocket a monte. Quando l'istanza primaria non è più disponibile, il proxy si connette immediatamente all'istanza di backup. Il proxy effettua un nuovo tentativo di connessione all'istanza primaria ogni 15 secondi e chiude la connessione di backup non appena l'istanza primaria torna operativa.
- Richieste di configurazione — Le richieste di configurazione di HTTP seguono un ordine che prevede prima il server primario e poi quello di backup.
Configurazione degli SDK per il Relay Proxy
Per connettere i client SDK al Relay Proxy anziché direttamente a IBM Cloud:
- Sostituisci il nome host IBM Cloud nell'inizializzazione dell'SDK con l'host e la porta del proxy.
- Region, guid, API key, collection_id e environment_id devono corrispondere ai valori specificati nella configurazione del proxy di inoltro.
Non sono necessarie altre modifiche al codice dell'SDK.
Per iniziare a utilizzare Relay Proxy, contatta l'assistenza di App Configuration.