Il y a beaucoup de choses que vous pourriez faire pour améliorer votre processus de déploiement. Certains d'entre eux sont:
Assurez-vous que votre code est bien testé.
Idéalement, vous devriez avoir une couverture de test unitaire à 100%, ainsi que des tests d'intégration pour chaque scénario envisageable.
Si vous ne l'avez pas, vous devriez probablement tout laisser tomber et vous en occuper.
Regardez dans le développement axé sur le comportement.
Avoir une suite de tests complète vous permettra de ...
Exécutez une intégration continue.
Chaque fois que quelqu'un valide une modification, CI peut alors exécuter automatiquement la suite de tests dessus. Si la suite de tests réussit, elle peut alors se déployer immédiatement (ou planifier un déploiement). Pour les changements qui ne nécessitent aucune modification importante de vos bases de données, cela vous fera économiser beaucoup de temps et de maux de tête.
En cas de problème, CI peut également vous fournir un retour en un clic.
CI est beaucoup moins utile si votre suite de tests n'est pas complète et correcte, car la prémisse entière repose sur la possibilité de valider votre code de manière automatisée.
Faites des mises à jour atomiques.
Idéalement, vous ne devriez pas simplement copier de nouveaux fichiers sur les anciens sur le serveur de production. Utilisez plutôt un outil tel que capistrano, qui copie chaque fichier vers un nouvel emplacement, puis utilise un lien symbolique pour pointer vers le déploiement souhaité. La restauration est instantanée car elle implique simplement de modifier le lien symbolique pour pointer vers le déploiement précédent. (Bien que cela ne couvre pas nécessairement la migration de votre base de données.)
Vérifiez également si des conteneurs tels que Docker peuvent vous aider.
Faites des changements plus petits et plus fréquents.
Que vous ayez des tests, un IC ou rien, cela seul peut vous aider de manière significative. Chaque changement doit avoir sa propre branche git, et un déploiement doit avoir le moins de changements possible. Étant donné que les modifications sont plus petites, il y a moins de problèmes potentiels lors d'un déploiement.
Sur cette note, apportez des modifications plus isolées chaque fois que possible. Si vous avez modifié le jeu Omaha et que cela n'affecte pas le Texas Hold'em, le stud à 5 cartes ou autre chose, alors c'est le seul jeu qui doit être suspendu pour une maintenance.
Analysez tout ce qui dure longtemps.
Vous avez mentionné que certaines parties de vos déploiements prenaient beaucoup de temps. Il s'agit probablement de modifications du schéma de la base de données. Il vaut la peine d'avoir un regard DBA sur votre base de données, avec chaque changement de schéma, pour voir ce qui peut être plus performant.
Demandez à un expert en la matière d'examiner toute autre partie d'un déploiement qui prend de gros blocs de temps.
Travailler des heures impaires.
Vous le faites peut-être déjà, mais cela mérite d'être mentionné. Les développeurs (et les administrateurs système!) Ne devraient plus travailler "9 à 5", en particulier pour une opération 24h / 24 et 7j / 7. Si quelqu'un doit passer la nuit à surveiller un déploiement, à résoudre des problèmes, puis à respecter un horaire de jour, vos attentes sont irréalistes et vous configurez cette personne pour l'épuisement professionnel.