Migrazione ai microservizi da un'app monolitica

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 l'applicazione per individuare la logica che potrebbe trarre vantaggio da impostazioni di configurazione o requisiti di memoria 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 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. 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 per recuperare quelli mancanti 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 rollforward e il rollback nel caso in cui il passaggio al nuovo microservice 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