Personnellement, je n'ai jamais fait ça. Je ne comprends pas pourquoi tant de sites le font. Si vous développez sur un serveur de développement, pourquoi auriez-vous besoin de fermer votre site de production?
Je me suis toujours demandé à ce sujet.
Que font-ils pendant ce temps, qu'est-ce qui nécessite de faire ça?
web-development
maintenance
JD Isaacks
la source
la source
Réponses:
Le plus gros avantage pour tout ce qui a une grande échelle est que, si l’on modifie les schémas de base de données d’une manière ou d’une autre, on doit généralement exécuter de gros scripts de maintenance désagréables.
À présent, ils peuvent prendre une seconde ou deux pour s'exécuter avec votre jeu de données de développement. Mais lorsque vous commencez à mesurer des données en téraoctets et en pétaoctets, même l'ajout d'une colonne à une table peut prendre des heures.
Ainsi, peu importe la rapidité et l'automatisation du déploiement, vous avez toujours des problèmes de maintenance des données à résoudre. Si vous planifiez vraiment bien, vous pouvez placer un miroir en lecture seule du site pendant que vous suivez le processus, mais pour de nombreux sites, la lecture seule est inutile et ne vaut donc pas la peine.
la source
Il existe un certain nombre de raisons pour lesquelles vous pourriez vouloir retirer un site pour la maintenance. Pour en nommer quelques uns:
Fondamentalement, si votre site n'est pas statique, vous souhaitez le supprimer lorsque vous effectuez une mise à jour logique, sinon les personnes qui consultent votre site risquent de recevoir des erreurs ou un comportement inattendu.
De plus, si vous voulez toucher le fichier web.config (en ASP.NET) de votre site, vous devez d'abord le désactiver pour maintenance, car la session des utilisateurs sera supprimée. Ainsi, s'ils étaient au milieu de quelque chose, ce serait perdu.
la source
Eh bien, c’est une question quelque peu abstraite - j’ai même vu des sites qui utilisaient "Down for Maintenance" au lieu de HTTP 500.
Pour les sites Web, vous devez parfois effectuer des mises à niveau. Par exemple, si vous changez de base de données, vous ne voulez pas qu'un autre utilisateur touche à la base de données pendant cette période. Si la base de données est hors ligne, le site doit également être désactivé car l'affichage de SqlException n'est pas très agréable. Une autre raison est une défaillance matérielle ou une défaillance du système (comme une fuite de ressources) qui nécessite le redémarrage de l'application ou même du système.
Une fois, j’ai participé à la modernisation du système bancaire Internet dans l’une des plus grandes banques de mon pays. L'ensemble du processus de mise à niveau des sites Web, du niveau intermédiaire et des bases de données a pris trois jours lorsque le système était hors ligne pour les clients. Il incluait également une sauvegarde complète de tout, afin qu'en cas de panne, le système puisse revenir à l'ancienne version.
la source
Les serveurs ont besoin de correctifs pour s'exécuter et, sur de nombreux systèmes d'exploitation, ces correctifs nécessitent un redémarrage. C'est donc une catégorie de temps d'arrêt. De nombreuses entreprises planifient des redémarrages à partir de correctifs pour des durées d'utilisation faibles, telles que le dimanche matin. S'il n'y a pas de correctifs, ils redémarrent quand même les serveurs à l'heure de maintenance programmée (c'est la gueule de bois des jours NT4 où certains compteurs débordaient toutes les semaines et demie, donc le redémarrage hebdomadaire évitait d'autres bugs).
Une entreprise pour laquelle je travaillais avait un site de commerce électronique à la fin des années 90 qui rapportait plus de 1 000 000 $ de ventes par mois. Quelqu'un a promu la mauvaise table de taxe sur le serveur de base de données de production. La solution consistait à restaurer le serveur de base de données à partir d'une sauvegarde et à appliquer les transactions depuis la dernière sauvegarde. Cela a pris plusieurs heures, pendant lesquelles le site Web n'était pas disponible pour prendre des commandes. Étant donné que la partie commandes et les brochures de vente statiques fonctionnaient sur le même site et étaient inséparables, les deux ont dû être supprimées.
Une entreprise pour laquelle je travaillais avait un texte erroné inséré au mauvais endroit et le PDG a basculé et le site Web a été mis hors service "pour maintenance", tandis que la mise en page et le texte étaient "corrigés" et la victime appropriée blâmée et renvoyée.
la source
Tandis que les autres réponses sont correctes, vous pouvez presque toujours éviter les temps d'arrêt en utilisant les bonnes architectures. Mais cela a un coût, et ce coût peut ne pas en valoir la peine: une heure d'indisponibilité coûte beaucoup à Amazone ou à l'infrastructure derrière NASDAQ. Stackoverflow? Probablement pas tellement.
Comment éviter les temps d'arrêt:
En règle générale, dans une architecture en couches, plus vous êtes proche du "sommet", plus il devient difficile d'éviter les temps morts, de même pour l'étatful (serveur Web / base de données).
la source
Un site peut planifier des temps d'arrêt réguliers même s'il n'y a rien à faire à chaque fois que le temps d'arrêt planifié arrive. Ce faisant, ils habituent les utilisateurs à l’idée que le site sera hors service pendant un certain temps de temps en temps, de sorte que les utilisateurs ne se plaindront pas beaucoup quand il leur faudra travailler .
la source
Il y a aussi un côté psychologique et marketing à cela. Dans certains cas (j'ose dire la plupart des cas, mais je ne suis pas si audacieux * g *), lire "Arrêt pour maintenance" peut également signifier "Le serveur est tombé en panne ou est hors service pour une autre raison".
J'ai vu cela assez souvent. Normalement, en tant que développeur, vous voudrez un "vrai" message d'erreur disant "Oups, nous subissons actuellement une charge énorme et toutes les demandes ne peuvent pas être traitées", mais certaines personnes du marketing vous diront que "mec, vous ne pouvez pas Dites au client que nous avons un problème. Dites-lui que nous sommes en maintenance programmée - cela aura l'air beaucoup mieux ".
Donc, "Down for maintenance" n'est souvent qu'un autre terme pour "hors service".
la source
Aucun serveur NE DOIT être arrêté pour maintenance. Vous pouvez éviter de le faire pour n'importe quoi, à n'importe quelle échelle, modification de base de données, mises à jour de serveur, etc.
Le problème est qu’un système sans temps d’arrêt, à une certaine échelle, est très coûteux à créer et à maintenir. Vous avez besoin de redondance partout, d'équilibrage de charge partout, de réplication de données, de synchronisation. Ce sont des problèmes difficiles.
Pour être sûr que cela fonctionne même si une partie de votre système est occupée par la mise à jour, ou juste désynchronisée, vous devez être capable de libérer le monstre Netflix Chaos Monkey. C'est certainement faisable. C'est également très coûteux, cela prend beaucoup de temps et de nombreux experts pour travailler sur le problème.
Placer un site en mode de maintenance peut être un moyen terme que vous choisissez, car vous ne voulez pas investir autant, vous éviterez de détruire votre site pendant un certain temps de temps en temps.
Économie.
Bien sûr, si vous choisissez la route du zéro, votre site gagnera bien plus que la disponibilité, il gagnera également en fiabilité, puisque ces meilleures pratiques servent les deux objectifs.
la source
Merde arrive. Merde, à moins que vous ne fassiez une vérification mathématique de vos livrables ( et que vos spécifications soient valides ), quelle que soit votre prudence.
En outre, il peut arriver que vous deviez modifier un élément clé de votre infrastructure (par exemple, une modification des structures de votre base de données) qui nécessite un temps d'arrêt.
Sauf si vous développez un système critique (disons un système à cinq ou neuf ou neuf ), la chose responsable et rentable à faire est de construire un système avec l'acceptation des temps d'arrêt comme faisant partie de la réalité.
En outre, vous allez plus loin dans ce principe en rendant les temps d'arrêt gérables et faciles à programmer (ou au moins détectables) avec une compréhension et une procédure claires pour une récupération efficace.
la source
Une fois que notre site Web a été piraté (ancien serveur IIS6 et Windows 2003 il y a quelques années). pendant que nous travaillions sur la restauration, nous avons mis la page "sous maintenance" pendant quelques heures ...
la source