Migrazione a microservizi da un'app monolitica

Quando inizi con un'applicazione monolitica legacy, devi trovare parti che possono essere intagliate e spostate in microservizi separati. Spesso un'app monolitica ben strutturata ha divisioni molto naturali e una classe di servizio funziona già come interfaccia a un livello di logica di archiviazione e business. Queste classi sono il luogo ideale per connettere le chiamate client al microservizio.

Separazione delle funzionalità in un'app monolitica

Potresti adottare un paio di approcci per tenere separata la tua app:

  • Cerca la logica di business nella tua applicazione che può essere separata.
  • Trova il codice naturale e isolato, ad esempio utilizzando strumenti di analisi del codice statico per identificare le sezioni.
  • Esamina la tua applicazione per verificare che la tua logica possa trarre vantaggio da impostazioni di configurazione o requisiti di memoria diversi rispetto al resto della tua applicazione. Ciò potrebbe comportare un risparmio sui costi che potrebbe comportare un migliore utilizzo delle risorse.

Potrebbe essere necessario eseguire il refactoring del codice per rimuovere le dipendenze non naturali. Ti consigliamo di eseguire il refactoring all'interno del codice precedente e di eseguirne il deployment in produzione prima di tentare di separare l'app in servizi separati.

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 notifica e comunicazione
  • Foto e contenuti multimediali, in particolare i metadati
  • Worker coda attività

Passaggi per la migrazione di un'app

Dopo che un insieme di classi è stato identificato come candidato a diventare microservizio, i passaggi successivi includono:

  • Mantenere il codice esistente e utilizzarlo nell'applicazione precedente per facilitare il rollback.
  • Creazione di un nuovo repository di codice o almeno di una sottodirectory nel repository esistente.
  • Copia dei corsi nella nuova posizione.
  • Scrivere un livello di visualizzazione che fornisca i hook dell'API HTTP e formattare i documenti di risposta nel modo corretto.
  • Formulazione del nuovo codice come applicazione separata (crea un app.yaml).
  • Deployment del nuovo microservizio come servizio o progetto separato.
  • Testa il codice per assicurarti che funzioni correttamente.
  • Migrazione dei dati dall'app precedente al nuovo microservizio. Di seguito è riportata una discussione.
  • Modifica dell'applicazione legacy esistente per utilizzare la nuova applicazione microservizi.
  • Deployment dell'applicazione legacy modificata
  • Verifica che tutto funzioni come previsto e che non sia necessario eseguire il rollback all'applicazione precedente.
  • Rimozione di codice non valido dall'applicazione precedente.

Migrazione dei dati in un'applicazione live

La migrazione dei dati su un'applicazione dal vivo può essere complessa e fortemente dipendente dalla tua situazione. Spesso, per facilitare il rollback e il rollback, è necessario scrivere il codice che completa le entità Cloud Datastore nuove e precedenti, eventualmente utilizzando un'API temporanea sul microservizio, quindi scrivere il codice che esegue la migrazione del set di dati esistente, ad esempio come MapReduce. Questo processo di solito comporta una piccola quantità di codice temporaneo e dati ridondanti. A seconda delle specifiche della situazione, potrebbe essere necessario eseguire una migrazione dei dati dopo il rilascio. Fai attenzione a non sovrascrivere i dati più recenti con i dati meno recenti.

Sembrerebbe che ci sia molto lavoro, ma è un evento comune ed è importante consentire il rollback e il rollback degli eventi 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 tutto sia stato eseguito correttamente e che tutto funzioni correttamente. Assicurati di eseguire il backup lungo il percorso.

Passaggi successivi