Versionnement de Discourse avec Autoscaling

Je sais que la recommandation par défaut pour la gestion des versions de Discourse est d’utiliser tests-passed, mais jusqu’à présent, notre équipe a spécifié la version de Discourse dans le fichier app.yml, par exemple version: 2.7.0.beta1. Nous faisons cela car nous souhaitons pouvoir contrôler explicitement quelle version est déployée en production.

Cependant, nous avons constaté, grâce à ce sujet, qu’un bug nous empêche de procéder ainsi comme nous l’avons toujours fait. Cela pose problème en raison de notre méthode de mise à l’échelle automatique (autoscaling) pour notre forum. Par exemple, supposons que la version 2.7.0.beta1 soit actuellement déployée en production. Si nous subissons ensuite une augmentation soudaine du trafic sur le forum, nous devons lancer une nouvelle instance pour y faire face. Si nous avons tests-passed dans le fichier app.yml et qu’une nouvelle version de Discourse est sortie depuis notre dernière mise à jour en production, une nouvelle instance (2.7.0.beta2) sera lancée, ce qui entraînera un conflit avec l’instance existante. Nous nous retrouverons donc avec deux versions différentes, potentiellement accompagnées de modifications de base de données et d’autres problèmes de compatibilité, ce qui empêchera la production de fonctionner correctement.

Il existe d’autres raisons pour lesquelles nous ne souhaitons pas de mises à jour automatiques de ce type, comme des problèmes de compatibilité des plugins, et le souhait général de tester complètement les choses sur l’environnement de staging avant de les déployer en production.

À titre d’information, nous avons essayé de faire fonctionner cette solution afin de pouvoir spécifier la version de Discourse, mais elle échoue actuellement avec la version 2.7.0.beta3. Nous obtenons une erreur Bundler similaire à celle signalée ici, et je sais que la solution de cette personne a été de revenir à l’utilisation de tests-passed.

Ma question est donc : comment pouvons-nous contrôler efficacement nos versions de Discourse, compte tenu de notre configuration de mise à l’échelle automatique et de notre besoin général de spécifier quelle version de Discourse est déployée en production ? J’aimerais beaucoup savoir ce que d’autres ont fait dans une telle situation.

Si vous souhaitez utiliser la mise à l’échelle automatique, vous devez pousser l’image amorcée vers un registre de conteneurs et l’utiliser pour exécuter Discourse sur toutes les instances de mise à l’échelle automatique.