Quando parti da un'applicazione monolitica legacy, devi trovare le parti che possono essere isolate e spostate 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. Questi tipi di classi sono il luogo ideale per collegare le chiamate del client al microservizio.
Separazione delle funzionalità in un'app monolitica
Puoi adottare due approcci per separare l'app:
- Cerca nella tua applicazione la logica di business che può essere separata.
- Trova il codice isolato naturalmente, ad esempio utilizzando strumenti di analisi del codice statico per identificare le sezioni.
- Esamina la logica della tua applicazione per individuare eventuali requisiti di memoria o impostazioni di configurazione di scalabilità diversi rispetto al resto dell'applicazione. Ciò potrebbe comportare un risparmio sui costi che potrebbe portare a 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 eseguirne il deployment in produzione prima di tentare di separare l'app in servizi distinti.
Le aree comuni per i microservizi includono:
- Dati dell'utente o dell'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 eseguire la migrazione di un'app
Dopo che è stato identificato un insieme di classi come candidato per diventare un microservizio, 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 gli hook dell'API HTTP e formatta i documenti di risposta nel modo corretto.
- Formulare il nuovo codice come applicazione separata (crea un
app.yaml
). - Esegui il deployment del nuovo microservizio come servizio o progetto separato.
- Testare il codice per assicurarsi che funzioni correttamente.
- Esegui la migrazione dei dati dall'app precedente al nuovo microservizio. Di seguito è riportata una discussione.
- Modifica dell'applicazione legacy esistente per utilizzare la nuova applicazione basata su microservizi.
- Deployment dell'applicazione legacy modificata
- Verificare che tutto funzioni come previsto e che non sia necessario eseguire il rollback all'applicazione precedente.
- Rimuovere il codice inutilizzato dall'applicazione precedente.
Eseguire la migrazione dei dati in un'applicazione in produzione
La migrazione dei dati in un'applicazione in produzione può essere complessa e dipendere molto dalla tua situazione. Spesso, per facilitare 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. In genere, questa procedura comporta una certa quantità di codice temporaneo e dati ridondanti. A seconda delle specifiche della tua situazione, potrebbe essere necessario eseguire anche una migrazione dei dati di aggiornamento 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 microservizio non vada a buon fine. Puoi rimuovere il codice temporaneo ed eliminare i dati dalla posizione di archiviazione precedente solo dopo aver verificato che la migrazione sia stata eseguita correttamente e che tutto funzioni come previsto. Assicurati di eseguire i backup durante l'operazione.
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, gestione temporanea e di produzione con microservizi in App Engine.
- Scopri le best practice per progettare API per la comunicazione tra microservizi.
- Scopri le best practice per il rendimento dei microservizi.