Come scegliere una soluzione API centralizzata per le Sue applicazioni Google Cloud? Mettiamo a confronto ApigeeX, Cloud Endpoints e API Gateway per aiutarLa a fare la scelta giusta.

Cloud Endpoints, API Gateway e ApigeeX a confronto
Da quando sono entrato in DoiT International come senior cloud architect, i clienti mi chiedono spesso come scegliere una soluzione API centralizzata su GCP per le proprie applicazioni. Lasciando da parte il prodotto enterprise ApigeeX, tra Cloud Endpoints e API Gateway quale conviene scegliere? E qual è la differenza principale tra le due soluzioni?
All'inizio del 2017 Google ha annunciato la disponibilità generale di Cloud Endpoints, caratterizzato da un proxy locale al server costruito sugli stessi servizi. Inizialmente Cloud Endpoints si appoggiava all'Extensible Service Proxy (ESP) V1, un data plane basato su nginx, per supportare l'ambiente flessibile di AppEngine, GCE e GKE. Nel 2019 Google ha rilasciato ESP v2, basato su Envoy, per supportare un numero maggiore di servizi serverless come Cloud Function, Cloud Run e l'ambiente standard di AppEngine. Sebbene ESP v1 sia ormai considerato superato, supporta ancora AppEngine Flexible e la configurazione personalizzata di Nginx, cosa che ESP v2 non fa.
Inoltre, dato che Cloud Endpoints è un servizio di gestione API distribuito e auto-gestito con diverse voci a pagamento, Google ha rilasciato un altro servizio di gestione API, API Gateway, che per certi aspetti può essere visto come un'evoluzione di Cloud Endpoints.
Google offre Apigee anche in diverse varianti gestite, tra cui ApigeeX, ospitato su Google Cloud, e ApigeeEdge, ospitato su Apigee Cloud.
In questo articolo Le spiegherò come orientarsi nella scelta della soluzione API più adatta.
Protocolli supportati
Quali protocolli Le servono? È la prima domanda da porsi.
La specifica OpenAPI consente di definire l'API proxy in tutte e tre le piattaforme. Tutte supportano infatti API HTTPS RESTful e, allo stesso modo, gRPC.
Se invece ha bisogno di WebSocket o SOAP, ApigeeX è l'unica piattaforma percorribile.
Integrazione con i servizi di backend
Cloud Endpoints, API Gateway e ApigeeX possono integrarsi con i servizi di Google Cloud Platform come Cloud Functions, Cloud Run, GKE e AppEngine, oltre che con funzioni e servizi non Google, ad esempio AWS Lambda, Azure Functions e servizi API on-premise.
ApigeeX resta però l'unica scelta possibile se il backend utilizza SOAP. ApigeeX è in grado di generare un'interfaccia RESTful per il servizio SOAP di backend, permettendoLe di esporre un servizio SOAP come API proxy. Supporta inoltre una modalità pass-through che inoltra la richiesta SOAP in arrivo direttamente al servizio di backend.
Un'altra funzionalità interessante di ApigeeX è il supporto degli script personalizzati: consente di implementare funzioni custom in JavaScript e di distribuirle sul portale ApigeeX. All'interno di questi script si può accedere all'oggetto DOM della pagina del portale tramite l'evento JavaScript `onLoad` quando l'utente arriva sulla pagina e tramite l'evento JavaScript `onUnload` quando l'utente la abbandona.
Al momento della stesura di questo articolo, sia Cloud Endpoints sia ApigeeX supportano i nomi di dominio personalizzati. Anche API Gateway supporta i domini personalizzati, ma la funzione è ancora in preview.
Sicurezza
Le chiavi API sono la soluzione standard per proteggere le API. Cloud Endpoints, API Gateway e ApigeeX supportano tutti l'autenticazione tramite chiave API.
Trattandosi inoltre di servizi gestiti da Google, supportano anche l'autenticazione tramite service account. (L'autenticazione tramite service account utilizza la chiave privata del service account per firmare un JWT sicuro e invia le richieste API con il JWT firmato).
Oltre a questi due metodi, Cloud Endpoints supporta l'autenticazione Firebase e Auth0, mentre ApigeeX supporta OAuth2.
Vale la pena ricordare che tutte e tre le soluzioni di gestione API possono essere protette con un rate limit, così da regolare il traffico tra le API e i servizi di backend e prevenire attacchi DOS sulle Sue applicazioni.
Monitoraggio
Tutte e tre le soluzioni API si monitorano facilmente su Google Cloud Platform.
Cloud Endpoints mette a disposizione un portale per creare un developer portal, all'interno del quale è possibile anche tenere sotto controllo log e metriche. API Gateway offre una dashboard con grafici più dettagliati per spiegare picchi, cali o attività anomale e consente di approfondire l'analisi tramite la tabella dei metodi.
In quanto piattaforma API di livello enterprise, ApigeeX fornisce una dashboard di monitoraggio che mostra tutte le metriche di esecuzione sia a livello di integrazione sia di task. È inoltre semplice configurare avvisi di vario tipo in ApigeeX.
Costi
Sia Cloud Endpoints sia API Gateway prevedono un free tier per un determinato numero di chiamate API: se le chiamate mensili restano sotto quella soglia, non vi è alcun addebito. Tuttavia, poiché Cloud Endpoints richiede l'esecuzione di un endpoints runtime in un servizio Google per inoltrare le richieste in arrivo, il servizio Google che ospita l'ambiente di runtime comporta costi aggiuntivi rispetto a quelli dei servizi API.
ApigeeX prevede un'opzione di valutazione che consente di distribuire e provare la piattaforma. Al termine della valutazione è necessario passare a un piano a pagamento. Se le Sue API gestiscono un numero ridotto di richieste, può optare per il piano pay-as-you-go, che non richiede impegni anticipati e prevede addebiti basati sul solo utilizzo. In alternativa, può sottoscrivere un abbonamento commerciale qualora siano necessari più ambienti per gestire volumi di richieste molto elevati.
In sintesi, ApigeeX è la soluzione API più costosa, API Gateway è una buona alternativa per scenari di larga scala, mentre Cloud Endpoints risulta più conveniente sui volumi ridotti.
Riepilogo
Cloud Endpoints e API Gateway sono piattaforme di gestione API leggere, con funzionalità analoghe, adatte alla maggior parte degli scenari. API Gateway è un servizio relativamente recente in GCP e alcune funzionalità, come il supporto dei domini personalizzati, sono ancora in preview.
La soluzione enterprise ApigeeX offre funzionalità complete, ma a un prezzo più elevato.
Cloud Endpoints
SaaS
Parziale
Prezzo
Free Tier + costo del runtime
Supporto servizi backend GCP interni
Sì
Supporto servizi backend pubblici non GCP
Sì
Protocolli supportati
HTTPS / gRPC
Supporto CORS
Sì
Dominio personalizzato
Sì
Modellazione, accesso e conversione dei messaggi
No
Autenticazione
API Key / autenticazione Firebase / Auth0 / Google ID Token / Google Service Account / autenticazione personalizzata
Specifica OpenAPI
Sì
Supporto della documentazione
Scarso
API Gateway
SaaS
Sì
Prezzo
Free Tier
Supporto servizi backend GCP interni
Sì
Supporto servizi backend pubblici non GCP
Sì
Protocolli supportati
HTTPS / gRPC
Supporto CORS
No
Dominio personalizzato
Preview
Modellazione, accesso e conversione dei messaggi
No
Autenticazione
API Key / Google Service Account
Specifica OpenAPI
Sì
Supporto della documentazione
Scarso
Apigee
SaaS
Sì
Prezzo
Pay-as-you-go, abbonamenti commerciali
Supporto servizi backend GCP interni
No
Supporto servizi backend pubblici non GCP
Sì
Protocolli supportati
HTTPS / gRPC / WebSocket
Supporto CORS
Sì
Dominio personalizzato
Sì
Modellazione, accesso e conversione dei messaggi
Sì
Autenticazione
API Key / OAuth
Specifica OpenAPI
Sì
Supporto della documentazione
Buono
Cloud Endpoints
API Gateway
Apigee
SaaS
Parziale
Sì
Sì
Prezzo
Free Tier + costo del runtime
Free Tier
Pay-as-you-go, abbonamenti commerciali
Supporto servizi backend GCP interni
Sì
Sì
No
Supporto servizi backend pubblici non GCP
Sì
Sì
Sì
Protocolli supportati
HTTPS / gRPC
HTTPS / gRPC
HTTPS / gRPC / WebSocket
Supporto CORS
Sì
No
Sì
Dominio personalizzato
Sì
Preview
Sì
Modellazione, accesso e conversione dei messaggi
No
No
Sì
Autenticazione
API Key / autenticazione Firebase / Auth0 / Google ID Token / Google Service Account / autenticazione personalizzata
API Key / Google Service Account
API Key / OAuth
Specifica OpenAPI
Sì
Sì
Sì
Supporto della documentazione
Scarso
Scarso
Buono