IMVU revient sur la supplantation partielle du langage PHP par Haskell
Une année après, l’équipe semble satisfaite de ce choix
Depuis 2013, IMVU le célèbre chat/jeu 3D qui vous plonge dans un monde virtuel a entamé un processus pour supplanter partiellement le langage de programmation utilisé pour coder le backend de son application (le langage PHP), par un autre plus adapté en terme de performance et de passage à l’échelle, vu le succès d’IMVU. C’est ainsi que les développeurs ont étudié longuement la question pour conclure à l’utilisation du langage fonctionnel Haskell.
Une année après, l’équipe de développement revient sur ce passage du langage PHP vers Haskell en livrant des détails basés sur cette expérience et sur certains critères comme : le passage à l’échelle, la fiabilité, l’apprentissage, les tests, le déploiement et certains enseignements conclus suite à tout cela.
Passage à l’échelle :
La première expérience au sein de l’équipe d’IMVU fut le remplacement d’un service non critique brassant une quantité importante de données, par une implémentation en Haskell. Le résultat fut alors assez éloquent. En effet sans aucune optimisation du service, l’implémentation Haskell a été en mesure de traiter 20 fois plus de requêtes, tout en tournant sur des serveurs moins performants (serveurs de secours en voie d’être retirés) que ceux de l’implémentation PHP.
Fiabilité :
Par la suite et dans la continuité de la première expérience, l’équipe d’IMVU a décidé de faire tourner l’implémentation Haskell sans aucune intervention, jusqu’au plantage du service, résultat des courses : aucune intervention pendant plusieurs mois.
Apprentissage :
L’expérience suivante fut le développement d’un nouveau projet avec deux équipes, une pour la partie frontend en PHP et la seconde pour la partie backend en Haskell. Ainsi au cours des premiers jours, ce fut laborieux pour cette dernière équipe de développer une implémentation équivalente à tant d’autres réalisées par le passé en PHP. Toutefois, après avoir jeté les bases, le développement était devenu plus facile et l’unique facteur limitant la livraison du projet fut la partie frontend.
Aujourd’hui, pour les développeurs d’IMVU, être productif avec le langage Haskell ne diffère pas vraiment d’être productif en PHP. De plus, les développeurs habitués aux concepts de la programmation fonctionnelle ont un certain avantage, ce qui leur permet une prise en main rapide en quelques jours seulement.
Tests :
Une des conséquences de l’utilisation d’un langage fonctionnel comme Haskell est la suppression des effets de bord, qui nuisent tant aux applications développées. De ce fait, au sein de l’éditeur d’IMVU, les tests unitaires et le Test Driven Development (TDD) ont été facilités avec Haskell. D'ailleurs, les développeurs ont conclu que « Haskell est meilleur avec le TDD, mais aussi le TDD est meilleur avec Haskell. Cela ne prend que quelques tests pour atteindre le même degré de fiabilité avec Haskell. La vérification statique prend soin de vérifier l’existence d’erreur, ce qui doit être implémenté manuellement (ou oublié) en PHP. L’outil QuickCheck est d’une grande aide pour les développeurs ».
Au final, le recours à Haskell a permis aux développeurs de supprimer des classes dédiées aux tests et d’écrire moins de code. De plus, ce langage se veut plus rigoureux, ce qui ne laisse pas de place aux échecs intermittents des tests.
Déploiement :
En termes de déploiement, les développeurs n’ont pas rencontré de difficultés. En outre, il a été nécessaire d’utiliser un client Memcached pour le code Haskell. Toutefois, au lieu d’utiliser un client écrit en C, ils ont développé leur propre client en Haskell, avec quelques effets secondaires insoupçonnés. Quant à la refactorisation, l’équipe d’IMVU estime que cette tâche est devenue un jeu d’enfant.
Quelques enseignements tirés :
L’un des plus gros soucis des développeurs d’IMVU est le manque de ressources, de documentations vu que ce langage est rarement utilisé dans le monde professionnel, de ce fait certains bugs sont plus difficiles à résoudre, ce qui en fait l’un des inconvénients majeurs du langage.
L’autre inquiétude était le recrutement d’un développeur Haskell. Néanmoins, cela se révéla un faux débat, car l’utilisation de ce langage a agi à double sens. Les développeurs en Haskell ne sont pas nombreux, mais lorsqu’un développeur maitrise le langage, celui-ci souhaite le plus souvent développer avec.
Mis à part cela, l’équipe d’IMVU semble être satisfaite de ce choix, qui offre de meilleures performances, améliore la productivité et facilite la refactorisation, ce qui permet de mesurer en toute objectivité le changement apporté.
Source : Blog d’IMVU
Et vous ?
Qu’en pensez-vous ?
Est-ce que vous envisagez de remplacer certains codes par du code écrit en Haskell ? Pourquoi ?
Partager