API gateway, come semplifica i microservizi e cosa verificare

5 novembre 2026

Diagramma mostra un **API Gateway** che gestisce le richieste da app client a microservizi backend, illustrando l'architettura esterna per applicazione.

Quando l’app mobile, il sito e un partner esterno chiamano servizi diversi, ogni modifica interna rischia di costringere anche i client ad aggiornarsi. Un API gateway offre un punto d’ingresso comune e di solito semplifica il traffico, ma il risultato dipende da quali responsabilità gli affidi.

Architettura con un API Gateway che gestisce richieste da app mobile, SPA e web tradizionale verso microservizi.

Il gateway semplifica l’accesso, ma va dimensionato e delimitato

  • Un solo ingresso: instrada le richieste verso i servizi senza esporre ai client la topologia interna.
  • Compiti adatti: autenticazione, limiti di traffico, terminazione TLS e logging possono essere centralizzati.
  • Confine di sicurezza: il gateway non sostituisce i controlli di autorizzazione sui singoli dati e sulle operazioni.
  • Scelta architetturale: un gateway condiviso è semplice da governare; un BFF può adattare l’API alle esigenze di ciascun client.
  • Controllo operativo: testa latenza, gestione dei picchi e comportamento in caso di errore prima di esporre il servizio.

Il gateway nasconde la topologia interna ai client

Immagina che una schermata di pagamento debba consultare ordini, profilo e disponibilità. Senza un livello intermedio, il client deve conoscere gli endpoint dei diversi servizi e gestire direttamente ogni variazione. Un gateway riceve la richiesta pubblica e la instrada verso il backend appropriato, mantenendo separato ciò che vede il client da come sono organizzati i sistemi interni.

Può anche applicare regole comuni, per esempio verificare credenziali, terminare la connessione TLS o registrare i metadati della richiesta. Se una singola operazione richiede più servizi, può aggregarne le risposte: così il client fa meno chiamate, anche se il gateway deve gestire la logica di composizione. Le responsabilità e i limiti di questo schema sono descritti nel Microsoft Azure Architecture Center.

Il vantaggio, quindi, non è “avere un URL solo” in astratto: è ridurre l’accoppiamento tra interfacce e backend. Se i client non devono conoscere i confini interni dei servizi, il gateway può rendere più semplici le evoluzioni successive.

Un gateway condiviso e un BFF risolvono esigenze diverse

Un unico ingresso sembra ordinato finché web, app mobile e integrazioni esterne hanno bisogni simili. Quando ciascun client richiede dati e flussi differenti, un gateway centrale rischia di accumulare eccezioni e trasformazioni specifiche. In quel caso, un BFF (Backend for Frontend) offre un livello dedicato a un tipo di client, come l’app mobile.

La distinzione è pratica: il gateway condiviso è adatto a funzioni trasversali e routing uniforme; il BFF ha senso quando l’esperienza di un client richiede una composizione diversa o risposte più adatte alle sue schermate. La documentazione Microsoft sul pattern API gateway e Backend for Frontend descrive questa separazione.

Io preferirei partire da un gateway condiviso per le policy comuni e aggiungere un BFF solo quando un client presenta esigenze autonome e ricorrenti. Creare subito livelli distinti per ogni applicazione può moltiplicare deploy e configurazioni prima che esista un problema concreto da risolvere.

Il limite di richieste protegge il servizio, ma non garantisce un tetto rigido

Un picco di chiamate può saturare il backend prima che il team riesca a intervenire. Il rate limiting consente di limitare la frequenza delle richieste, spesso usando un token bucket: un contatore si ricarica nel tempo e ammette una raffica temporanea entro la capacità configurata.

C’è però un dettaglio che cambia la progettazione: nella documentazione di Amazon API Gateway, le soglie di throttling sono descritte come obiettivi applicati “best effort”, non come massimali garantiti. Quando le richieste superano rate e burst, il client può ricevere 429 Too Many Requests. Perciò una policy sul gateway aiuta a controllare il flusso, ma non sostituisce capacità sufficiente nel backend né una strategia di retry prudente.

Nel client, un retry immediato e ripetuto può aggravare proprio il sovraccarico che ha provocato il 429. La risposta va gestita con attese e limiti di tentativi, mentre il gateway e i servizi devono condividere una politica coerente. Non presentare una soglia configurata come garanzia matematica se il servizio la definisce come best effort.

Autenticare una chiamata non autorizza ogni operazione

Un token valido dimostra che una richiesta arriva da un’identità autenticata; non dimostra che quell’identità possa leggere o modificare qualunque risorsa. Se un endpoint riceve l’identificativo di un ordine, il servizio deve comunque verificare che quell’ordine appartenga all’utente o al tenant che effettua la chiamata.

La distinzione emerge chiaramente nei rischi elencati da OWASP API Security Top 10 2023: il controllo degli accessi a livello di oggetto e quello a livello di funzione sono categorie distinte. Un gateway può applicare controlli generali, ma il servizio che conosce il dato e la regola di business deve verificare i permessi specifici.

La tabella aiuta a capire dove intervenire quando il comportamento non è quello atteso:

SituazionePossibile causa o conseguenzaCosa fare
Risposta 401Credenziali assenti, non valide o scaduteControllare il token e il meccanismo di autenticazione configurato sul gateway.
Risposta 403 su una risorsa specificaIdentità riconosciuta, ma permessi insufficientiVerificare l’autorizzazione nel servizio, inclusa la relazione tra utente e oggetto richiesto.
Risposta 429 durante un piccoÈ stato superato un limite di frequenza o di burstRidurre o distribuire i retry e confrontare le soglie del gateway con la capacità del backend.
Un solo gateway rallenta o non rispondeIl livello d’ingresso può diventare collo di bottiglia o punto singolo di guastoVerificare replica, bilanciamento, health check e comportamento durante il failover.

Un’API pubblica richiede anche inventario e controlli regolari: endpoint dimenticati o non documentati possono restare esposti senza che il gateway corregga automaticamente la lacuna. Centralizzare il traffico rende più gestibili le policy, non rende sicuro per definizione il backend.

La scelta si decide con un test sul percorso completo

Un gateway introduce un passaggio di rete e un componente da mantenere. Il suo costo prestazionale può essere contenuto, ma va misurato sul percorso reale: client, gateway, servizi chiamati e risposta aggregata. La guida Microsoft segnala sia la latenza aggiuntiva sia il rischio che un gateway non scalato adeguatamente diventi un collo di bottiglia.

Prima di adottarlo o sostituirlo, prova almeno questi casi: richiesta normale, picco di traffico, backend lento, credenziale scaduta e indisponibilità di un servizio. Registra la latenza complessiva, la quota di errori e il comportamento dei retry; un test limitato alla risposta “200 OK” non mostra cosa succede quando una dipendenza si guasta.

La decisione può essere semplice: se devi esporre pochi endpoint stabili e il client può chiamarli direttamente in sicurezza, il gateway potrebbe aggiungere complessità senza vantaggi proporzionati. Se invece più client devono raggiungere molti servizi e applicare politiche comuni, un gateway gestito o una soluzione integrata nella piattaforma può essere il punto di partenza più sobrio; un livello personalizzato ha senso quando le opzioni disponibili non coprono requisiti reali di controllo o flessibilità.

Parti dal contratto, poi aggiungi il livello d’ingresso

Prima di configurare rotte e policy, definisci quali API sono pubbliche, chi può invocarle e quali dati può ottenere ogni identità. Un contratto esplicito, per esempio descritto con OpenAPI, aiuta a distinguere l’interfaccia esterna dalla struttura dei servizi e rende più verificabili le modifiche.

Il gateway funziona meglio quando ha confini chiari: centralizza l’infrastruttura condivisa, lascia ai servizi le regole sui dati e testa i guasti lungo l’intero percorso. Così il client trova una porta d’ingresso stabile, senza trasformarla in un nuovo punto fragile dell’architettura.

Domande frequenti

Un gateway condiviso è adatto a routing uniforme e policy comuni. Se web, app mobile o altri client hanno esigenze ricorrenti di dati, flussi o composizione delle risposte diverse, un BFF dedicato può adattare l’API a quel client. È ragionevole aggiungerlo quando emerge un’esigenza concreta, così da non moltiplicare in anticipo deploy e configurazioni.

Non necessariamente: alcune soglie di throttling sono obiettivi applicati best effort, non massimali garantiti. Se si superano rate o burst, il client può ricevere una risposta 429. Il rate limiting aiuta a controllare il flusso, ma va affiancato a capacità adeguata del backend e a retry con attese e un numero limitato di tentativi.

Il token autentica l’identità, ma non dimostra che possa leggere o modificare qualsiasi risorsa. Il servizio che conosce l’ordine deve verificare, per esempio, che appartenga all’utente o al tenant che effettua la richiesta. Un 401 indica credenziali assenti, non valide o scadute; un 403 segnala invece permessi insufficienti.

Prova il percorso completo tra client, gateway e servizi con una richiesta normale, un picco di traffico, un backend lento, una credenziale scaduta e l’indisponibilità di un servizio. Misura latenza complessiva e quota di errori, e controlla i retry, la replica, il bilanciamento, gli health check e il comportamento di failover. Un semplice test che verifica solo una risposta 200 non mostra come il sistema reagisce ai guasti.
Valuta l'articolo

Media: 4.5 / 5 · 2 valutazioni

Tag

api gateway microservizi backend for frontend rate limiting sicurezza api

Condividi post

Commenti (0)
Aggiungi un commento