Comment déployer des modifications sur un site Web de production tout en ne prenant pas le site Web en baisse d'une fraction de seconde?

J'utilise Git pour gérer le cycle de développement de mon application Web, et pour les changements où une git pull est suffisante et aucun changement n'est nécessaire, j'observe naturellement le site et git pull les changements.

Mais je pense, dis que j'ai 100 files changés et dis qu'il y avait une charge inattendue sur le disque, que se passe-t-il si quelqu'un fait une request au moment où git commettait des modifications sur le disque? Est-ce que cela ne risquerait pas de rendre mon application vulnérable à une corruption de données ou à des réponses mal formées?

Je veux dire que cela est très, très peu probable pour un site Web à faible trafic, mais si vous obtenez un trafic très élevé et que l'on trouve une charge de server de pointe, il y a des risques.


J'ai réellement pensé à une solution, mais ce n'est probablement pas le meilleur si je lance ma propre mise en œuvre et je ne suis pas sûr si c'est pratique. Je me souviens d'avoir lu un article sur la façon dont nous ne voyons pas d'artefacts sur nos écrans, essentiellement en écrivant de nouveldatatables dans un bloc entièrement différent de la memory GPU, puis on change le pointeur vers le jour nouveau bloc, et éventuellement rejeter ou réutiliser l'ancien bloc à la fin. De cette façon, si un GPU ne dépasse pas datatables à demi écrites,

Est-ce que cela serait pratique si l'on pouvait mettre en œuvre une telle chose similaire?

2 Solutions collect form web for “Comment déployer des modifications sur un site Web de production tout en ne prenant pas le site Web en baisse d'une fraction de seconde?”

Vous voudrez un équilibreur de charge. Il peut fournir des améliorations progressives, une disponibilité élevée et une mise à l'échelle.

Large, non sortingvial, mais de façon toujours toujours, les sites Web changent tellement légèrement constamment. Peut-être qu'ils déploient une mise à jour quotidienne, ou certaines fonctionnalités ont échoué, mais les choses continuent. Ils ont décidé qu'une expérience user légèrement différente ne vaut pas la peine d'être arrêtée. Vous devrez prendre votre propre décision si votre solution inclut les time d'arrêt planifiés.

Sur le server Web individuel, certaines methods de deployment permettent une transition plus marquée. Pré déployer le code, puis le déplacer en place est une coupe plus propre que la mise à jour de la copy de travail en direct. Bien que cela ne concerne pas les bases de données, les mises à jour du server Web et d'autres complications. Vous souhaitez toujours qu'un équilibreur de charge vous donne des options.

L'une des manières canoniques de faire cela, indépendamment du fait que vous utilisez git ou non (mais l'utiliser, vous pouvez implémenter ce schéma avec certains de ses crochets), est d'avoir un directory sur le site où vous installez chaque nouvelle version "dans son propre directory spécifique, par exemple avec une date / timestamp en son nom. Le véritable contenu actuellement utilisé par le server Web se trouve dans un autre path qui est un lien symbolique vers un directory "version".

Une fois votre transfert terminé, et après avoir vérifié que tout s'est bien passé (aucun file manquant, contenu plausible, droits Unix corrects, liens symboliques pendants, etc …), il vous suffit de changer le lien symbolique du path de production à votre nouveau "path de la version".

La modification du lien symbolique est presque atomique, de sorte qu'il ne causerait aucune interruption.

Cela vous permet également de revenir facilement: modifiez simplement le lien symbolique.

  • Quelle méthode puis-je utiliser pour automatiser DNS-failover avec surveillance?
  • Comment réduire le time mort parfait de Gluster FS en baisse / réduire l'impact par les pairs?
  • Comment devez-vous configurer UCARP dans CentOS?
  • Quelles sont les options pour un système HA?
  • Le cluster VMware HA à deux nœuds - la politique de contrôle d'admission?
  • Rôles Exchange 2010 sur plusieurs machines virtuelles
  • Site haute disponibilité sans équilibreur de charge?
  • Comment configurer STONITH dans un cluster de pacemaker linux / passif linux actif / passif 2 nœuds?
  • Problèmes DNS de Exchange DAG Failover Cluster 2010
  • Pacemaker ocf: heartbeat: IPaddr sur différents sous-réseaux
  • Logiciel DNS gratuit avec support de basculement?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.