2008-12-09 9 views
2

Je fais des recherches sur certaines techniques de processus de publication non fragiles dans un environnement de service Web 24 h/24, 7 j/7. Quelles sont vos méthodes préférées pour libérer du code d'un environnement de développement vers un environnement de production critique? Cela inclut non seulement les modifications de code, mais également les modifications de schéma de base de données. Supposons que tout a été testé et donné le coup de pouce dans l'écosystème d'un environnement de développement.Processus de mise à jour, de déploiement et de maintenance d'un service Web

Quelles mesures prenez-vous pour le rationaliser en production? Rediriger le trafic vers un cluster d'indisponibilité et exécuter des scripts automatisés? Si oui, que font vos scripts? Si ce n'est pas des scripts, quel genre de routine aimez-vous?

Vous cherchez uniquement un aperçu technique. S'il vous plaît ne pas "donner aux clients amplement d'avertissement" des réponses de type.

Merci!

Répondre

1

Il y a quelques principes que je pense sont importants pour assurer:

  1. Relâchez seulement du système de contrôle de code source (soit une branche dédiée ou une étiquette sur ligne principale). Pas de possibilité de libérer directement du répertoire de travail.
  2. Rendre les processus push-to-production et push-to-staging totalement automatisés (y compris les mises à jour de schéma)
  3. Avoir un script de rollback automatisé à portée de main, et ne pas avoir peur de l'utiliser si quelque chose semble faux.
  4. Toutes les modifications de schéma de base de données sont effectuées avec un outil incrémental d'anticipation/d'annulation (comme ActiveRecord ou Liquibase). Exiger des restaurations DB complètes devrait être rare.
  5. (pour les très grosses grappes) utiliser deux équilibreurs de charge, un pour la version N et l'autre pour la version N + 1. Testez en continu lorsque des nœuds supplémentaires rejoignent le groupe N + 1.
0

Denis Hennessy a écrit un bon résumé. En ce qui concerne les outils, jetez un oeil à Capistrano.