Migrazione ai microservizi da un'applicazione monolitica

Quando inizi con un'applicazione legacy monolitica, devi trovare le parti possono essere suddivisi e spostati in microservizi separati. Spesso, un modello ben strutturato un'app monolitica avrà divisioni molto naturali, mentre una classe di servizio funzionano già come interfaccia su un livello di archiviazione dei dati e logica di business. 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. Me ti consigliamo di eseguire il refactoring all'interno del codice precedente e di eseguirne il deployment produzione prima di tentare di separare l'app in servizi separati.

Le aree comuni dei microservizi includono:

  • Informazioni sull'utente o sull'account
  • Autorizzazioni 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 corsi è stato identificato come candidato a diventare microservizi, i passaggi successivi includono:

  • Mantenere il codice esistente e renderlo operativo nell'applicazione legacy per facilitare il rollback.
  • Crea un nuovo repository di codice o almeno una sottodirectory nel repository esistente repository Git.
  • Copia dei corsi nella nuova posizione in corso.
  • Scrivere un livello di visualizzazione che fornisca gli hook dell'API HTTP e formatta 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.
  • Testare il codice per verificare 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
  • Verifica che tutto funzioni come previsto e che non sia necessario eseguire all'applicazione legacy.
  • Rimozione di eventuale codice non funzionante dall'applicazione legacy.

Migrazione dei dati su un'applicazione attiva

La migrazione dei dati su un'applicazione live può essere complicata e dipende molto dal tuo la situazione. Spesso, per facilitare il rollback e il rollback, è necessario scrivere il codice che compila sia le entità nuove che quelle di Cloud Datastore, magari usando un'API temporanea sul microservizio, quindi scrivi il codice esegue la migrazione il set di dati esistente, ad esempio un MapReduce. Questa procedura 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 e i dati di Google Cloud.

Sebbene sembri un bel po' di lavoro, è un caso frequente ed è importante per consentire il rollback e il rollback nel caso in cui l'esecuzione del nuovo microservizio non riesce. 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