Quando inizi con un'applicazione legacy monolitica, devi trovare le parti possono essere suddivisi e spostati in microservizi separati. Spesso un'app monolitica ben strutturata avrà suddivisioni molto naturali e una classe di servizio fungerà già da interfaccia per un livello di archiviazione dei dati e logica aziendale. Queste classi sono il punto ideale per collegare le chiamate del cliente microservizio.
Separazione delle funzionalità in un'app monolitica
Puoi adottare due approcci per separare la tua app:
- Cerca nella tua applicazione la logica di business che può essere separata.
- Trova il codice naturalmente isolato, ad esempio utilizzando immagini statiche di analisi del codice per identificare le sezioni.
- Esamina l'applicazione per individuare la logica che potrebbe trarre vantaggio da diversi delle impostazioni di configurazione della scalabilità o dai requisiti di memoria rispetto alle altre un'applicazione. Ciò potrebbe comportare risparmi sui costi che potrebbero comportare un migliore utilizzo delle risorse.
Potresti dover eseguire il refactoring del codice per rimuovere le dipendenze non naturali. Ti consigliamo di eseguire il refactoring del codice precedente e di eseguirlo in produzione prima di tentare di separare l'app in servizi distinti.
Le aree comuni per i microservizi includono:
- Informazioni sull'utente o sull'account
- Autorizzazione e gestione delle sessioni
- Preferenze o impostazioni di configurazione
- Servizi di notifiche e comunicazioni
- Foto e contenuti multimediali, in particolare i metadati
- Worker delle code di attività
Passaggi per la migrazione di un'app
Dopo che un insieme di corsi è stato identificato come candidato a diventare microservizi, i passaggi successivi includono:
- Lasciare il codice esistente in posizione e operativo nell'applicazione precedente per facilitare il rollback.
- Creare un nuovo repository di codice o almeno una sottodirectory nel repository esistente.
- Copiare i corsi nella nuova posizione.
- Scrittura di un livello di visualizzazione che fornisca i hook dell'API HTTP e formatta i documenti di risposta nel modo corretto.
- Formulare il nuovo codice come applicazione separata (crea un
app.yaml
). - Deployment del nuovo microservizio come servizio o progetto separato.
- Testare il codice per assicurarsi che funzioni correttamente.
- È in corso la migrazione dei dati dall'app precedente al nuovo microservizio. Vedi di seguito per una discussione.
- Modifica dell'applicazione legacy esistente per l'uso dei nuovi microservizi un'applicazione.
- Deployment dell'applicazione legacy modificata
- Verificare che tutto funzioni come previsto e che non sia necessario eseguire il rollback all'applicazione precedente.
- Rimozione di eventuale codice non funzionante dall'applicazione legacy.
Migrazione dei dati su un'applicazione attiva
La migrazione dei dati in un'applicazione in produzione può essere complessa e dipendere molto dalla tua situazione. Spesso, per semplificare il rollforward e il rollback, devi scrivere codice che completi sia le entità Cloud Datastore precedenti che quelle nuove, eventualmente utilizzando un'API temporanea sul microservizio, e poi scrivere codice che esegui la migrazione del set di dati esistente, ad esempio come MapReduce. Questo processo solitamente comporta una quantità di codice temporaneo e dati ridondanti. In base specifiche della tua situazione, potresti anche dover eseguire un'analisi migrazione dopo il rilascio. Fai attenzione a non sovrascrivere i dati più recenti con quelli meno recenti.
Sembra un sacco di lavoro, ma è un'operazione comune ed è importante consentire il roll forward e il roll back nel caso in cui il passaggio al nuovo microservice non vada a buon fine. Puoi rimuovere il codice temporaneo e eliminare i dati dalla posizione di archiviazione precedente solo dopo aver verificato che viene eseguita correttamente la migrazione e che tutto funziona come previsto. Essere assicurati di eseguire backup lungo il percorso.
Passaggi successivi
- Consulta una panoramica dell'architettura dei microservizi su App Engine.
- Scopri come creare e assegnare un nome agli ambienti di sviluppo, test, QA, temporaneo e di produzione con microservizi in App Engine.
- Scopri le best practice per la progettazione di API in modo da comunicare tra microservizi.
- Scopri le best practice per le prestazioni dei microservizi.