Sommaire
Maitrise Orthopédique est une revue mensuelle (disponible en format papier et numérique) destinée aux chirurgiens orthopédistes. Il permet aux chirurgiens de se tenir au courant des dernières nouvelles (techniques, méthodes…) concernant leur profession. Des vidéos sont également disponibles (de congrès, d’opérations…).
Je ne suis pas le développeur originel de Maitrise-Orthopédique, j’ai commencé à travailler sur ce projet en septembre 2017, il y avait un cahier des charges sur ce qu’il fallait modifier sur le site.
La version que j’ai prise en main fonctionnait sous PHP 5.1, version à cette époque qui devenait obsolète et plus maintenue, j’ai donc du migrer PHP vers une version qui tiendra sur le long terme a savoir PHP 7.*, il a fallu allez dans le code modifier toutes les parties qui utilisaient des fonctions supprimée ou modifiée en profondeur de PHP, un travail qui a pris du temps afin d’assurer la pérennité du site.
Le site utilisait « MYSQL » pour faire des recherches, hors MYSQL est un système de base de données relationnel, ce n’est pas un système de base de données indexée, de ce fait il n’est pas conçu pour la recherche, d’autres outils sont plus adaptés à la recherche, dans le cas de Maitrise-Orthopédique mon choix s’est porté sur Algolia, en effet un moteur de recherche en SAAS « Software as a service » permet d’avoir d’excellente performance de recherche sans avoir a s’occuper de la maintenance d’un cluster de serveur d’indexation (tel qu'Elasticsearch)
À l’époque le système de paiement par carte bancaire ne permettait pas le paiement récurrent, hors les clients de Maitrise-Orthopédique souhaitait un tel système, afin de ne pas manquer un numéro (le journal est aussi envoyé au format papier, si un client n’est pas abonné il ne recevra pas le numéro du mois), J’ai utilisé Stripe et leurs systèmes d’abonnement pour mettre en place un système d’abonnement avec renouvellement automatique, que le client peu bien sûr annuler à tout moment.
Je ne parle pas ici de routage informatique, mais de routage postal, le site s’est doté d’une fonction permettant de sortir un CSV avec les adresses des abonnés, afin de le transmettre au routeur postal pour la bonne livraison des journaux aux abonnés. Pour ce faire le composant de « Serialisation » de l’équipe Symfony fait parfaitement l’affaire.
Comme tous les commerces, Maitrise-Orthopedique met en place des promos à l’occasion de certains événements, il faut donc proposer une réduction lors du paiement et mettre en avant la promo sur le site via des bannières responsive, un système de « régie publicitaire » interne a donc été développé ainsi qu’un système permettant la réduction du prix sur la première année d’abonnement.
C’est un fait le matériel informatique tombe en panne, les disques durs peuvent devenir hors service, une coupure d’alimentation peut subvenir, etc.
En fin d’année 2017 OVH a eu une grosse panne sur son réseau ce qui a mis le site en mode hors ligne pendant une longue période, j’ai donc commencé réfléchir a une solution a ce problème.
Afin de garder un « uptime » de 100 % une infrastructure utilisant plusieurs serveurs a été mise en place, pour les bases de données un cluster Galera a été déployé, ce cluster passe par un VPN (réseau privé virtuel) afin que les serveurs puissent être dans des centres de données et chez des hébergeurs différents en toute sécurité.
Pour la partie Web le problème est que de base le code (CodeIgniter) du projet avait besoin que les requêtes soient toujours envoyées au même serveur pour maintenir la session (requête « statefull »), les données de session étaient enregistrées sur le disque (comme la plupart des applications PHP), il a fallut modifier la méthode de sauvegarde de la session afin que celle-ci soit indépendante du serveur web qui répond à la requête, pour cela j’ai déplacé les données de session en base de données, c’était le plus simple, car le cluster « Galera » était déjà parfaitement opérationnel.
Enfin, le frontal qui redistribue les requêtes aux différents serveurs web n’est autre que Cloudflare, ayant travaillé avec leurs services des années avant je savais que ça ferait parfaitement l’affaire.
Ce sont globalement les plus gros travaux que j’ai apportés au site de Maitrise-Orthopédique, il y a eu bien sûr également les taches quotidiennes telles que la maintenance, mise à jour des dépendances logicielles afin d’éviter les trous de sécurité, etc.
D'autres projets ?