Sur les sites tels que Doctolib gérant les prises de rendez-vous pour la vaccination contre le Covid-19, les communications du gouvernement ou du président de la République annonçant de nouvelles mesures peuvent entraîner des pics de montée en charge tout à fait exceptionnels. Ce fut le cas le 12 juillet dernier à la suite de l’intervention du président Emmanuel Macron détaillant les dispositions prises pour lutter contre le variant Delta.
Peu après 20 h 15 ce jour-là, sur le site Doctolib, le nombre de connexions sur la partie vaccination augmente très fortement, passant en un quart d’heure de 500 000 visiteurs environ à 2,1 millions, explique dans un billet sur son blog technique Touilleur-Express, Nicolas Martignole, principal engineer chez Doctolib. Le site utilise des outils d’observation tels que NewRelic et Datadog pour analyser le trafic. Il apparaît que la majorité des visites se font à partir de téléphones mobiles. Ce soir-là, une cellule de crise se met donc en place pour faire face à l’afflux de visites.
Un système de cache pour soulager les bases en lecture
Le billet de Nicolas Martignole relate la façon dont les équipes techniques réunies dans cette cellule sont intervenues au cours de la soirée : augmentation du nombre de serveurs, activation d’une salle d’attente sur le CDN, puis suivi de la plateforme d’envoi des SMS. Le service offert par Doctolib, qui permet de choisir le créneau horaire pour la vaccination, entraîne une complexité dans son architecture, explique-t-il. Le système recourt à une base de données relationnelle, PostgreSQL, répliquée dans le cloud et s’appuie sur la technologie Aurora du fournisseur de cloud AWS. Par la suite, les équipes installeront un système de cache sur les disponibilités des rendez-vous pour soulager les bases en lecture. Le dispositif permettra d’alléger la facture d’hébergement en cas de nouveau pic.
Selon les chiffres publiés par Doctolib, en deux heures trente, 926 000 rendez-vous ont été pris ce lundi soir 12 juillet, puis 1,4 million sur la journée du mardi.