Questa pagina descrive le funzionalità di gestione delle versioni dell'API Cloud Endpoints e fornisce le best practice per la gestione delle versioni e l'implementazione dell'API Endpoints. Le informazioni riportate in questa pagina sono applicabili alle API che utilizzano la specifica OpenAPI. Per le API che utilizzano framework Cloud Endpoints per l'ambiente standard App Engine, vedi Gestione del controllo delle versioni dell'API: Java o Gestione del controllo delle versioni dell'API: Python.
Ti consigliamo di seguire gli stessi principi di base utilizzati da Google per il versionamento delle API e lo staging dei servizi:
Includi quanto segue nel file di configurazione OpenAPI prima del deployment la versione iniziale:
- Imposta il numero di versione nel campo
info.version
. Ti consigliamo di utilizzare una stringa di versione che includa una versione principale e una versione secondaria, ad esempio1.0
. - Imposta il campo
basePath
in modo che includa il numero della versione principale. Ti consigliamo di utilizzare un percorso di base formattato come la letterav
seguito dal numero della versione principale, ad esempio/v1
.
- Imposta il numero di versione nel campo
Quando devi apportare una modifica compatibile con le versioni precedenti, ad esempio aggiungere una nuova , incrementa il numero di versione secondaria (1.2, 1.3, ecc.) nel
info.version
ed eseguire di nuovo il deployment. Consulta: Controllo delle versioni di un'API per maggiori dettagli.Quando devi apportare una modifica a un metodo esistente che interrompe il codice del client, crea una copia del file di configurazione OpenAPI e apporta le seguenti modifiche:
- Aumenta il numero della versione principale (2.0, 3.0 e così via) nell'
info.version
. - Incrementa il numero di versione principale (/v2, /v3 e così via) nel campo
basePath
.
Esegui il deployment di entrambe le versioni dei file di configurazione OpenAPI e del backend, che ora contiene entrambe le versioni del metodo. Per informazioni dettagliate, consulta Eseguire il versionamento di un'API.
- Aumenta il numero della versione principale (2.0, 3.0 e così via) nell'
Implementa tutte le principali versioni dell'API in un unico backend. Questo consiglio:
- Semplifica il routing perché le richieste a una versione specifica si basano sul percorso, come nell'esempio precedente.
- Semplifica la configurazione e il deployment. Utilizzi lo stesso progetto e lo stesso backend Google Cloud per tutte le versioni principali dell'API ed esegui il deployment di tutte le versioni contemporaneamente.
- Mantiene bassi i costi evitando di eseguire backend superflui.
Esegui lo staging dell'API in un progetto Google Cloud separato prima di eseguire il deployment nel progetto Google Cloud di produzione. Consulta: Servizi di gestione temporanea per maggiori dettagli.
L'utilizzo dei numeri di versione principale e secondaria in Endpoints corrisponde alle definizioni riportate nel controllo delle versioni semantico. Sebbene endpoint non richiede di incrementare il numero di versione File di configurazione OpenAPI ed esegui il deployment della configurazione quando esegui il deployment di un bug correggere il codice di backend, puoi scegliere di farlo se vuoi.
Funzionalità di gestione delle versioni dell'API Cloud Endpoints
Extensible Service Proxy (ESP) consente di gestire contemporaneamente più versioni principali dell'API in un singolo progetto e backend Google Cloud, a condizione che le API non abbiano percorsi sovrapposti. Ad esempio:
http://echo-api.endpoints.my-project.cloud.goog/v1/echo
http://echo-api.endpoints.my-project.cloud.goog/v2/echo
In questo modo i clienti possono scegliere la versione che vogliono utilizzare e controllare quando eseguono la migrazione alla nuova versione. L'ESP contrassegna ogni richiesta con il numero di versione prima di inoltrarla al metodo applicabile nel backend. Poiché ogni richiesta è codificata con un numero di versione:
I grafici e i log in Endpoint > I servizi mostrano le richieste provenienti da ogni versione principale dell'API e il totale aggregato per tutte le versioni. Puoi filtrare la visualizzazione in base a una versione specifica. Questo ti dà un'idea chiara di come il traffico ricevuto da ciascuna versione. I log possono anche indicare e la versione utilizzata dai client.
Quando esegui nuovamente il deployment dell'API con un aggiornamento secondario del numero di versione, l'attività viene etichettata con il nuovo numero di versione nei grafici e logaritmi. In questo modo, avrai una cronologia etichettata dei tuoi implementazioni.
Quando rimuovi una versione di un'API, i grafici e i log continuano a essere visualizzati nell'intervallo di tempo in cui l'API è stata attiva.
Esempio di ciclo di vita delle API
Questa sezione descrive l'evoluzione tipica di un servizio.
Versione 1
Inizialmente esegui il deployment della versione 1 del servizio API My Awesome Echo. L'API viene fornita
da my-api.endpoints.my‐awesomeproject.cloud.goog/v1/echo
. Nei grafici e
log in Endpoint > Servizi, vedi tutto il traffico su 1.0
.
Versione 1.1
I tuoi clienti richiedono una nuova funzionalità, quindi aggiungi un nuovo metodo. Nell'API OpenAPI
di configurazione del deployment, aggiungi il nuovo metodo e incrementerai il campo info.version
a 1.1
. Incoraggi il numero di versione secondaria perché questa modifica non
del codice client. Esegui il deployment e testa la modifica in un ambiente di staging per verificare che funzioni.
Successivamente, eseguirai il deployment della configurazione OpenAPI e del backend dell'API nell'ambiente di produzione
completamente gestito di Google Cloud. L'API viene ancora pubblicata da
my-api.endpoints.my‐awesomeproject.cloud.goog/v1/echo
, ma ora i chiamanti possono effettuare
richieste al nuovo metodo. Poiché non hai modificato l'interfaccia dei vecchi metodi, i tuoi clienti non devono modificare e eseguire nuovamente il deployment dei propri client. I client possono continuare a inviare richieste al vecchio metodo come prima.
In Endpoint > Servizi, il traffico gestito è ora alla versione 1.1
. Se
selezioni un intervallo di tempo precedente, verrà visualizzata la versione precedente
grafici e log, che forniscono una cronologia etichettata dei tuoi deployment.
Versione 2.0
Nel tempo, ti rendi conto che devi apportare una modifica non compatibile con le versioni precedenti a un metodo esistente. Perché è importante non danneggiare i clienti
codice client, decidi di mantenere due versioni dell'API. Lasci il vecchio
così com'è e implementa la nuova versione del metodo. Crei un altro
del file di configurazione OpenAPI per la versione 2.0 e configura la nuova versione
offerto da my-api.endpoints.my‐awesomeproject.cloud.goog/v2/echo
. Il
file di configurazione OpenAPI originale fa ancora riferimento alla vecchia versione del
metodo, mentre il nuovo file di configurazione OpenAPI fa riferimento alla nuova versione del
metodo.
Esegui il deployment dei file di configurazione OpenAPI della versione 1 e della versione 2 contemporaneamente ed eseguire nuovamente il deployment del backend, che ora contiene entrambe le versioni del metodo. Per maggiori dettagli, consulta Eseguire il versionamento di un'API.
Dopo il deployment, Endpoints > Services (Endpoint > Servizi) mostra che stai pubblicando due versioni della tua API e puoi vedere quanto traffico riceve ciascuna versione. I client della versione 1 possono continuare a chiamare /v1
, ma possono anche chiamare
/v2
per utilizzare la nuova versione del metodo. Come gestisci il controllo delle versioni
dipende dal framework API in uso. Per un esempio di utilizzo
di servlet, consulta
Esempio di endpoint e Java con più versioni.
Disabilitazione della versione 1
Nel tempo, man mano che i clienti eseguono la migrazione e noti che tutto il traffico verso la versione 1 si è interrotto, puoi smettere di pubblicarla. Per rimuovere la versione 1 dell'API, esegui il deployment solo del file di configurazione OpenAPI della versione 2 e esegui nuovamente il deployment del backend. Ora puoi rimuovere in sicurezza il codice che ha implementato la versione 1 dal tuo backend. Endpoint > Servizi conserva i dati storici della versione 1.x.
Servizi di gestione temporanea
Come best practice, ti consigliamo di posizionare temporaneamente gli aggiornamenti Servizio Endpoints per poter testare il servizio prima raggiunge i tuoi clienti. Ti consigliamo inoltre di creare un'immagine progetto Google Cloud per la gestione temporanea del servizio, in modo che sia isolato da e produzione. Ad esempio, le quote di Google sono generalmente condivise dalle risorse all'interno di un progetto. Pertanto, se inserisci il servizio di staging nello stesso progetto del servizio di produzione, un ciclo for errato, ad esempio, potrebbe causare un'interruzione del servizio di produzione.
Ti consigliamo di scegliere un nome per il progetto Google Cloud che
indica che è per la gestione temporanea. Una strategia di denominazione comune è utilizzare lo stesso nome del progetto Google Cloud di produzione, ma con -staging
alla fine.
Ti consigliamo inoltre di inserire -prod
nei progetti di produzione per chiarire che il progetto contiene servizi di produzione.
I nomi dei servizi su Google Cloud devono essere univoci. Poiché specifichi il nome del servizio nel file di configurazione OpenAPI, devi gestire file di configurazione API separati per i progetti di staging e di produzione oppure utilizzare un insieme di file di configurazione API e ideare un processo in cui modifichi il nome del servizio in modo che corrisponda al nome del progetto in cui esegui il deployment.
Passaggi successivi
- Endpoint e Esempio di Java con più versioni
- Pianificare i progetti Google Cloud
- Controllo delle versioni di un'API