Sto lavorando alla creazione di un set di microservizi in Docker (utilizzando .net core e AWS RDS come backbone, ma non è rilevante).
Come parte della distribuzione, il vecchio contenitore e il nuovo contenitore coesistono per un breve periodo di tempo (in genere meno di 30 secondi) per garantire che non vi siano tempi di inattività.
Tuttavia, questo significa che se il mio schema non è compatibile con la versione precedente del microservice (o il vecchio schema non è compatibile con la nuova versione), un set di contenitori non funzionerà correttamente.
I miei pensieri sono:
-
Solo migrazioni compatibili con le versioni precedenti. Significa che non ci sono% di migrazioni% co_de. Non sono impressionato da questo approccio in quanto porterebbe ad accumulare un po 'di confusione (garantito, con la dimensione del microservizio non sarà troppo male, ma sarà uno schema sgradevole in un paio di anni)
-
Obsoleto: rimuove le distribuzioni in due passaggi. Il significato in v2 rimuove il codice che consuma lo schema, ma non lo schema stesso e in v3 rimuoviamo lo schema. Il problema qui è che dobbiamo eseguire due distribuzioni consecutivi di fila, il che sembra stupido, o assicurarci che gli sviluppatori ricordino di effettuare il check-in di quelle rimozioni nella prossima versione, che è potenzialmente soggetta ad errori umani e si ripercuoterà in altro modo
- Sono disponibili due tipi di distribuzione: interruzione e interruzione; con la rottura dello schieramento facendo il vecchio servizio di stop della scuola, migrare, portare un nuovo servizio. Il problema qui è che ci sono tempi di inattività per gli utenti finali.
Con cosa andresti e perché? (o, se hai già qualcos'altro, per favore dillo).