|
6Friends.com est un ancien site de rencontre aujourd'hui fermé qui a vécu ses heures de gloire avant l'éclattement de la bulle internet.
Outre l'objectif de fournir un service simple et rapide d'utilisation, le budget était aussi à limiter au maximum, or, à cette époque, la bande passante internet coutaît encore très cher et les serveurs étaient peu puissant comparé à aujourd'hui. Deux points principaux ont étés optimisés au maximum : l'accès à la base de donnée et la qualité du code html et des images délivrées au client.
Optimisation de la base de donnée.
La structure des données de base était bonne mais le grand nombre d'utilisateurs, les quelques millions de message et les centaines d'utilisateurs en ligne faisaient que les requêtes SQL incessantes étaient trop gourmandes pour le CPU disponible. La solution la plus simple était d'ajouter encore plus de serveurs et de répartir la charge mais c'était économiquement impossible.
Dans un premier temps nous avons monitoré toutes les transactions afin de donner à chacune d'elle un "indice de responsabilité" dans la charge du processeur.
Plusieurs changements ont alors eu lieu :
- Création de tables de "travail" reprenant des données fréquement demandées d'utilisateur actifs que nous alimentions de manière dynamique au login de l'utilisateur et pour la durée de sa session.
- Mise en place d'un système d'interrogation des tables inspiré du Raid 0. Ceci nous a permi de diviser la taille de certaines table par 20 et d'augmenter significativement les performances des tables les plus grandes.
- Mise en place d'un système d'archivage invisible des messages (Privés et Forum). Les messages "anciens" étaient basulés dans une table secondaire et n'étaient consultés que lorsque la première table étaient totalement parcourue.
Tout ceci et d'autres améliorations encore nous on permi de calculer chaque page dans un délai moyen en dessous des 50 millisecondes, une réelle performance, la majorité des sites de discussion/rencontre affichent fréquement des temps de réponse dépassant les 2 à 3 secondes.
Optimisation du code html et des images délivrées au clients.
La bande passante allouée au serveur par l'hébergeur était dépassée quotidiennement ce qui occasionait des surcoût importants. Nous avons donc travaillé sur deux points :
- Les images, un assistant de recompression des photos nous permettait lors de l'acceptation de celle-ci de valider de manière quasi automatique une meilleure compression tout en conservant une qualité acceptable. Une photo optimisée était fréquemment de 2 à 10 fois plus petite que l'originale fournie par l'utilisateur.
- Le code HTML. 6friends étant déjà disponible en plusieurs langues, nous avons intégré dans notre traducteur une fonction d'optimisation de page, suppression de blanc, passage à la ligne inutile etc qui tournait de manière totalement invisble pour nous. Ainsi à la génération d'une nouvelle version, tout le superflu était automatiquement enlevé sans disparaitre du code original.
Ces changements anodins nous ont permi de diminuer de manière sensible la bande passante utlisée par le service et réduire ainsi la facture mensuelle. |