Versionamento di Discourse con Autoscaling

So che la raccomandazione predefinita per il versionamento di Discourse è tests-passed, ma finora il nostro team ha specificato la versione di Discourse nel file app.yml, ad esempio version: 2.7.0.beta1. Lo facciamo perché vogliamo poter controllare esplicitamente quale versione è presente in produzione.

Tuttavia, abbiamo visto da questo argomento che esiste un bug che ci impedisce di farlo come abbiamo sempre fatto. Questo è un problema a causa di come gestiamo l’autoscaling del nostro forum. Ad esempio, supponiamo che la versione 2.7.0.beta1 sia attualmente in produzione. Ma poi riceviamo un picco di traffico sul forum e dobbiamo avviare un’altra istanza per scalare. Se nel file app.yml abbiamo tests-passed e da allora è stata rilasciata un’altra versione di Discourse, verrà avviata una nuova istanza (2.7.0.beta2) che entra in conflitto con quella esistente. Di conseguenza, avremo due versioni diverse, possibilmente con modifiche al database e altri problemi di compatibilità, il che comporta un malfunzionamento della produzione.

Ci sono anche altri motivi per cui potremmo non voler aggiornare automaticamente in questo modo, come problemi di compatibilità dei plugin e la necessità generale di testare completamente tutto in staging prima di rilasciare in produzione.

A titolo di nota, abbiamo cercato di far funzionare questa soluzione per poter specificare la versione di Discourse, ma attualmente fallisce con la versione 2.7.0.beta3. Riceviamo un errore di bundler simile a quello visto qui, e so che la soluzione di quella persona era tornare a usare tests-passed.

Quindi la mia domanda è: come possiamo controllare efficacemente il versionamento di Discourse, dato il nostro setup di autoscaling e la necessità generale di specificare quale versione di Discourse viene distribuita in produzione? Mi farebbe piacere sapere cosa hanno fatto altri in questa situazione.

Se desideri utilizzare il ridimensionamento automatico, devi caricare l’immagine avviata in un registro container e utilizzarla per eseguire Discourse su tutte le istanze con ridimensionamento automatico.