Architettura del gateway API
API Gateway è un sistema di gestione API che fornisce gestione, monitoraggio e autenticazione per le tue API. I componenti che costituiscono API Gateway includono:
- API Gateway: per gestire tutti gli aspetti di un'API di cui è stato eseguito il deployment
- Service Control: per applicare le regole di gestione delle API
- Service Management: per gestire le configurazioni delle API
- gcloud CLI: per il deployment e la gestione delle API
- Console Google Cloud: per il logging, il monitoraggio e la condivisione
Architettura
Di seguito è riportato un diagramma di alto livello dei principali componenti coinvolti in API Gateway:
In questo diagramma:
Il provider dell'API è responsabile della creazione e del deployment di un'API su API Gateway. Ogni API è definita da un file scritto come specifica OpenAPI 2.0.
La specifica OpenAPI definisce l'URL pubblico dell'endpoint REST per l'API, il servizio di backend a cui accede l'API e qualsiasi altra caratteristica dell'API, come l'autenticazione, il formato dei dati e le opzioni di risposta.
Il client API invia una richiesta REST a un'API ospitata su API Gateway per accedere ai servizi di backend. Un client API può essere qualsiasi app in grado di effettuare una chiamata REST, ad esempio un browser, un'app mobile o un'app web.
Il client API deve conoscere solo l'URL dell'API, il verbo di richiesta (ad es.
GET
,PUT
,POST
,DELETE
), eventuali requisiti di autenticazione e il formato di eventuali dati inviati o ricevuti dall'API.Il client API non deve conoscere nulla dell'implementazione del backend. Infatti, una singola API ospitata su API Gateway può essere configurata per accedere a diversi backend in base alle informazioni passate nella richiesta.
Componenti di API Gateway
API Gateway
API Gateway fornisce una soluzione completamente gestita e a pagamento per l'hosting delle tue API. API Gateway fornisce un accesso sicuro ai tuoi servizi di backend tramite un'API REST ben definita e coerente in tutti i tuoi servizi, indipendentemente dall'implementazione del servizio.
API Gateway è integrato con Google Cloud, quindi puoi utilizzare gli stessi strumenti di sviluppo, monitoraggio, registrazione e tracciamento che utilizzi con qualsiasi altro prodotto Google Cloud.
Se ti connetti a un servizio di backend ospitato al di fuori di Google Cloud, puoi comunque usufruire di tutti i servizi Google Cloud, inclusi i servizi di autenticazione e autorizzazione utilizzati per controllare l'accesso alle tue API.
API Service Control
L'API Service Control applica le regole di gestione delle API in fase di runtime, ad esempio l'autenticazione delle chiavi API, il monitoraggio e la registrazione. Service Control fornisce i seguenti metodi:
- Verifica: verifica l'autenticazione e le chiavi API e indica se una chiamata deve essere consentita
- Report: invia una notifica ai sistemi di riferimento per il logging e il monitoraggio
API Service Management
Utilizza la specifica OpenAPI per definire la tua API. Poi utilizzi gcloud CLI per caricare la specifica OpenAPI in Service Management, che crea la configurazione dell'API. Qui vengono eseguite anche altre attività relative alla configurazione, come la condivisione dell'API con altri sviluppatori, l'abilitazione o la disattivazione dell'API in progetti diversi e la generazione di chiavi API.
Interfaccia a riga di comando gcloud
L'interfaccia a riga di comando gcloud fornisce lo strumento a riga di comando gcloud che puoi utilizzare per effettuare chiamate a vari servizi Google Cloud. Utilizza Google Cloud CLI per caricare la specifica OpenAPI, che crea la configurazione API, e poi per eseguire il deployment della configurazione API in API Gateway.
console Cloud
La console Google Cloud è l'interfaccia utente grafica di Google Cloud. Utilizza la console Google Cloud per esporre i dati di monitoraggio e di registrazione registrati da Service Control, per configurare l'autenticazione e l'autorizzazione e per consentire agli sviluppatori di generare chiavi API per chiamare l'API.
Gestione di una richiesta API
In una configurazione dell'API esistono due tipi di endpoint:
- Endpoint API: definisce l'endpoint disponibile pubblicamente utilizzato dai client per utilizzare le tue API.
- Endpoint di backend: definisce l'endpoint utilizzato dall'API per connettersi al servizio di backend. Le impostazioni di sicurezza, come l'accesso HTTP o HTTPS, sono definite dall'implementazione del servizio di backend.
Le richieste all'endpoint dell'API vengono passate all'endpoint di backend, inclusi eventuali dati trasmessi nell'ambito della richiesta. Le risposte del servizio di backend, inclusi eventuali dati restituiti dal servizio, vengono ritrasmesse al client.
Routing delle richieste
Quando viene ricevuta una richiesta:
API Gateway crea un token di traccia per Cloud Trace.
API Gateway associa il percorso delle richieste in entrata all'API target. Dopo aver trovato una route corrispondente, API Gateway esegue tutti i passaggi di autenticazione per l'API specificata.
Se è necessaria la convalida JWT, API Gateway convalida l'autenticazione utilizzando la chiave pubblica appropriata per il firmatario e convalida il campo audience nel JWT. Se è richiesta una chiave API, API Gateway chiama l'API Service Control per convalidarla.
Service Control cerca la chiave per convalidarla e assicurarsi che il progetto associato alla chiave abbia attivato l'API. Se la chiave non è valida o se il progetto non ha attivato l'API, la chiamata viene rifiutata e registrata tramite l'API Service Control.
Se Service Control convalida la chiave, la richiesta, insieme a tutte le intestazioni originali e a un'intestazione di convalida JWT, se opportuno, viene inoltrata al backend.
Quando viene ricevuta una risposta dal backend, API Gateway la restituisce all'utente che ha effettuato la chiamata e invia le informazioni sui tempi finali a Trace. I punti di chiamata vengono registrati dall'API Service Control, che poi scrive le metriche e i log nelle destinazioni appropriate.