Pages

IMVU revient sur la supplantation partielle du langage PHP par Haskell sujet

vendredi 28 mars 2014




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 le Haskell en livrant des détails basés sur cette expérience et sur la base de 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 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 temps ce fut laborieux pour cette dernière équipe de développer une implémentation équivalente à tant d’autres réalisées par le passé dans un langage autre que le 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, enfin les développeurs habitués aux concepts de la programmation fonctionnelle ont un certain avantage ce qui leur permet une prise en main rapide qui dure 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és, 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 à ce qui suit : « 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 terme de déploiement, les développeurs n’ont pas rencontré de difficultés, en outre il a été nécessaire d’utiliser un client Memchached 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 conclus :
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, voilà donc l’un des inconvénients majeurs.

L’autre inquiétude était le recrutement d’un développeur en 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 ces derniers souhaitent souvent développer avec (Pour rappel IMVU siège à Mountain View en Californie).

Mise à 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 ?
:fleche: Qu’en pensez-vous ?
:fleche: Est-ce que vous envisagez de remplacer certains codes par du code écrit en Haskell ? Pourquoi ?




Aucun commentaire:

Enregistrer un commentaire