Bonjour tout le monde,
Image utilisateur
Avant de partir en vacances pour une quinzaine de jours, je souhaiterais faire un petit point avec vous sur le site dans son ensemble, pour que tout le monde situe bien où en est et ce à quoi il faut s'attendre dans les prochaines semaines.
Je vous préviens, j'ai vraiment peu de temps à moi en ce moment, donc il faudra m'excuser si cette news est un peu rapide et directe, il faut que j'aille droit au but car j'ai encore beaucoup à faire ^^
Vous allez voir en effet que, si les nouveaux tutos n'ont pas vraiment afflué ces derniers temps, nous ne nous sommes pas pour autant reposés, loin de là !
Lisa ?
Lisa, notre serveur gérant la base de données MySQL du site, est toujours dans les vapes. Notre hébergeur s'occupera de sa réinstallation dans les jours ou semaines à venir (normalement avant la fin du mois quoiqu'il arrive).
En attendant, c'est un serveur prêté par l'hébergeur, que nous surnommons Lisa 2, qui fait office de remplacement. Ce serveur est de puissance sensiblement inférieure, mais correct pour assurer le bon fonctionnement du site.
Plantages du serveur SQL ?
Ces derniers temps, surtout depuis le passage à Lisa 2, nous avons expérimenté un grand nombre de problèmes avec la base de données. Il arrive en effet que MySQL s'emballe et fasse littéralement exploser la charge du serveur de temps en temps.
Nous n'avons, à l'heure actuelle, pas pu déterminer encore la source de ces problèmes (source qui peut être multiple soit dit en passant). Nous avons néanmoins fait notre maximum pour décharger le serveur SQL des tâches lourdes, et de nombreuses optimisations seront effectuées par karamilo dans environ une semaine sur les forums. Notre but est bien entendu d'améliorer le temps de chargement des pages du site au maximum, et nous ne nous reposerons pas tant que nous ne trouverons pas cela acceptable.
Réplication
Notre tout premier serveur (d'assez faible puissance), le bien nommé Bart, a désormais un travail bien à lui : il effectue la réplication de la base de données du site en temps réel.
En clair, il surveille l'activité de Lisa 2 en continu et copie les nouvelles données insérées dans la base au fur et à mesure qu'elles arrivent. Cette opération, dite de réplication, est peu gourmande en ressources. En effet, le plus gourmand pour un serveur SQL, ce sont les opérations de lecture (tout ce qui correspond aux requêtes SELECT, les plus nombreuses), et cela Bart n'a pas à le faire.
L'intérêt évident de ce système est que nous possédons toujours un backup à jour de la base de données. Si le serveur SQL (Lisa ou Lisa 2) venait à crasher, nous pourrions immédiatement récupérer une version saine et à jour de la base de données. Nous pourrions même, en théorie, rediriger les visiteurs vers Bart temporairement (qui se chargerait alors aussi des requêtes de lecture SELECT) bien qu'en pratique nous avons pu vérifier que celui-ci pouvait difficilement tenir la charge bien longtemps. Le principal, c'est au moins qu'on perde le minimum de données en cas de plantage, ce qui peut toujours arriver (rien n'est infaillible). Avec un tel système, rien ne devrait être perdu.
Backups
Malgré tout, une protection ne suffit pas, et il vaut mieux avoir des tendances paranoïaques quand on doit gérer autant de données que sur le
SdZ (près de 2 Go de texte rien que pour la base de données).
Ainsi, les bases sont aussi archivées dans des fichiers sur Bart quotidiennement. Si une erreur d'écriture ou une fausse manipulation intervient, on possèderait au pire les données telles qu'elles étaient il y a 24h (ce qui est mieux que de tout perdre vous en conviendrez :-° ).
Cela ne s'arrête pas là, puisque les données sont aussi envoyés à ces mêmes intervalles de temps sur des serveurs d'un autre fournisseur de services spécialisé dans les sauvegardes, dont les serveurs sont situés dans un autre datacenter. Deux Trois protections valent mieux qu'une.
Tout cela concerne aussi bien les fichiers présents sur le FTP du site que la base de données MySQL.
Monitoring
Les backups sont un processus automatique déclenché quotidiennement, et la réplication un processus temps réel. Néanmoins, nous ne pouvons pas vérifier tout le temps que tout fonctionne parfaitement
C'est pourquoi j'ai développé plusieurs petits outils de monitoring (surveillance) ces derniers jours qui nous avertissent par e-mail, nous et l'hébergeur, si un élément semble mal fonctionner.
Ainsi, si le système s'aperçoit que la réplication est trop "en retard" par rapport au serveur maître, c'est-à-dire Lisa 2, nous recevons un e-mail avec le détail de l'erreur éventuelle pour nous aider à la résoudre.
En couplant réplication + backups + backups distants + monitoring, on devrait déjà pouvoir dormir un peu plus sur nos deux oreilles ^^
La recherche
J'ai récemment cru que le module de recherche était la cause d'un certain nombre de plantages du serveur MySQL.
Hélas ! S'il pouvait causer quelques surcharges, nous avons pu constater que ce n'était en tout cas pas la seule cause.
Qu'importe, il y avait en tout cas des problèmes avec la recherche depuis le passage de tout le site à l'encodage UTF-8 (qui permet de gérer à peu près tous les types de caractères qui existent sur la planète :p ). Cela date de l'époque où vous avez pu voir quelques jours des bugs avec les accents, bugs heureusement résolus depuis (ce n'était pas une mince affaire cependant).
Bref, pour en revenir à la recherche, l'indexation se faisait mal car elle ne prenait pas en compte UTF-8 visiblement, et le lourd processus d'indexation de la base avait tendance à mettre à genoux Lisa 2 qui devait toujours pendant ce temps répondre à plus de 4000 requêtes par minute.
Nous nous sommes dits : l'idéal serait de placer le module de recherche sur un autre serveur, moins occupé, qui devrait posséder une copie à jour de la base de données. Vous avez compris de qui je voulais parler : il s'agit de Bart ! En effet, malgré la réplication Bart reste très peu chargé, il peut donc sans problème se charger du processus assez lourd d'indexation et répondre aux requêtes des visiteurs qui font des recherches sur le site.
J'ai installé et configuré la recherche sur Bart samedi, ce qui n'était pas une mince affaire. Depuis néanmoins, la recherche fonctionne sur l'ensemble du site, et ça c'est vraiment bien : ça signifie que c'est Bart qui répond quand vous faites une recherche et non Lisa (2), ce qui permet de lui éviter une part non négligeable de travail :)
Je rappelle, pour ceux qui ne le sauraient pas, que la recherche dans les tutos n'est pas possible techniquement pour le moment. Elle sera rendue possible dès la sortie de la nouvelle version du système de gestion de tutoriels du site du zéro ("Vos tutos") dont le développement, longtemps mis en pause, devrait reprendre dans les semaines à venir dans les bureaux de Simple IT.
Tutos
Avec tout ça, vous vous doutez bien que je n'ai pas pu trouver le temps de rédiger de nouveaux tutos. Il faut dire que le crash de Lisa ne nous aura vraiment pas aidé, avec tous les soucis qui se sont ensuivis.
Heureusement, c'était un mal pour un bien car nous avons vraiment mis le paquet sur la sécurité des données du site depuis, et nous avons un plan très précis des optimisations du code des forums en vue, consistant en règle générale en une réduction de la complexité des requêtes SQL (et une augmentation éventuelle du nombre d'éléments mis en cache sur le site, bien qu'il y en ait déjà beaucoup). Comme je vous l'ai dit plus tôt, c'est karamilo qui s'en chargera dans une semaine (ça lui prendra un peu de temps bien sûr, vous pouvez vous en douter).
Bref, je ne peux pas tout faire donc, et c'est à mon grand regret que je n'ai pas pu encore rédiger de nouveaux chapitres des tutos Linux et C++, ni m'occuper des "bons plans" promis. Comme je serai absent pour une quinzaine de jours, vous pouvez deviner à partir de quelle date je pourrai m'y remettre, si tant est que je n'ai pas trop à faire ailleurs sur le site (et c'est qu'il y en a des choses à faire !).
Suivre le développement du site en temps réel
L'annonce a été faite il y a peu, je la réitère pour ceux qui l'auraient manquée : vous pouvez suivre le développement du Site du Zéro en temps réel en consultant
ce topic. C'est un topic en lecture seule alimenté principalement par karamilo et moi-même quand nous avons le temps, même si en pratique on se débrouille pour prendre le temps de l'alimenter régulièrement.
Ceux qui sont donc intéressés de près par ce que nous faisons sur le site, que ça concerne le code ou l'administration des serveurs, peuvent consulter ce topic fréquemment.
Pour être sûr de ne rien manquer, je peux vous conseiller de
vous abonner au topic (vous recevrez un email dès que nous y postons un nouveau message), ou encore de le
mettre dans vos favoris. Ces fonctionnalités ne marchent bien évidemment que pour les membres inscrits au site (sinon on ne connaît pas votre e-mail :p ).
Résumé de l'organisation des serveurs
Puisqu'un bon schéma vaudra toujours mieux qu'un long discours ^^
Pendant mon absence, c'est karamilo qui assurera l'administration de l'ensemble du site et, comme d'habitude, les développements et les corrections de bugs. En cas d'urgence, et en cas d'urgence seulement, c'est lui qu'il faudra contacter.
Prenez soin du forum Rapports de bugs en mon absence et veillez à respecter le
format de rapport de bugs avant d'en poster un ;)
Merci et à très bientôt :)