BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités PayPal remplace Java par JavaScript

PayPal remplace Java par JavaScript

PayPal a décidé d'utiliser le JavaScript du serveur au navigateur pour les applications web, abandonnant par la même occasion tout le code historique en JSP/Java.

Jeff Harrell, Directeur Technique chez PayPal s'est expliqué dans 2 articles de blog (Libérer mon UI, Part 1: Templating JavaScript Dust, Open Source et plus encore, Node.js chez PayPal) sur ce choix et partage ses conclusions sur la transition du monde Java/JSP vers JavaScript/Node.js pour les applications web.

Selon Harrell, les sites internet de PayPal avaient accumulé pas mal de dette technique et il voulait un “ensemble de technologies indépendantes de tout cela pour permettre une meilleure agilité et accroître l'innovation.” Précédemment, il y avait une division significative entre les développeurs d'interfaces travaillant sur les technologies web et les ingénieurs développant la partie serveur des applications, en Java. Lorsque quelqu'un chez les designers d'interface (UX) voulait esquisser quelques pages, il était obligé de demander aux développeurs Java d'écrire une partie du code serveur pour réaliser les maquettes. Cela ne correspondait pas du tout à leur mode de développement UX Lean :

À l'époque, nos interfaces graphiques étaient basées sur une solution propriétaire à base de Java et JSP qui était trop rigide, fortement couplée et difficile à prendre en main. Nos équipes ne trouvaient pas cela adapté à notre mode de développement Lean d'UX et ne pouvaient pas aller assez vite pour développer leurs prototypes dans un langage de scripting, les tester avec les utilisateurs puis porter le code sur nos environnements de production.

Il fallait une “solution [de templating] pouvant être découplée de la technologie serveur utilisée et permettant de faire évoluer les interfaces graphiques indépendamment du langage utilisé dans l'application” et qui fonctionnerait sur de multiples environnements. Le choix s'est porté sur Dust.js – un framework de templates supporté par LinkedIn –, Twitter Bootstrap et Bower – un gestionnaire de paquets pour le web. Les pièces supplémentaires ajoutées plus tard sont LESS, RequireJS, Backbone.js, Grunt, et Mocha.

Certaines pages de PayPal ont été re-designées mais elles portent encore les traces d'une partie de la précédente stack technique :

… Nous avons du code historique en C++/XSL et en Java/JSP, et nous ne voulions pas abandonner derrière toutes nos UI. Les templates JavaScript sont parfaits pour cela. Pour la partie C++, nous avons créé une bibliothèque utilisant V8 pour générer un rendu Dust natif – c'était extrêmement rapide ! Côté Java, nous avons intégré Dust grâce au ViewResolver de Spring associé à Rhino pour faire générer le rendu des vues.

À ce stade, l'équipe a commencé à prototyper les nouvelles pages en utilisant Node.js, concluant que c'était “extrêmement efficace” et qu'elle allait l'essayer en production. Pour cela, elle a également créé Kraken.js, une “couche de convention” par-dessus Express qui est un framework web basé sur Node.js (PayPal a récemment open sourcé Kraken.js.). La première application réalisée avec Node.js a été la page récapitulative du compte, qui est une des pages les plus souvent accédées sur PayPal selon Harrell. Craignant que l'application ne tienne pas la charge, l'équipe a également mis en place une application Java de secours au cas où celle en Node.js serait dépassée. Ci-dessous, quelques chiffres résumant l'effort de développement de ces deux applications :

  **Java/Spring** **JavaScript/Node.js**
Temps d'installation 0 2 mois
Développement ~5 mois ~3 mois
Ingénieurs 5 2
Lignes de code non spécifié 66% non spécifié

L'équipe JavaScript a pris deux mois pour l'installation initiale de l'infrastructure mais a réussi à créer une application ayant les mêmes fonctionnalités avec moins de personnes et en moins de temps. En réalisant les tests sur les environnements de production, elle a constaté que Node.js avait de meilleures performances que l'application Java, servant par exemple :

Deux fois plus de requêtes par seconde par rapport à l'application Java. Cela est d'autant plus intéressant que nos tests initiaux utilisaient un seul coeur pour l'application Node.js comparé à 5 coeurs pour celle en Java. Nous nous attendons à un accroissement de cet écart.

et ayant

35% de réduction sur les temps de réponse pour une page donnée, donnant des pages servies 200ms plus rapidement, ce que les utilisateurs ne manqueront pas de remarquer.

Résultat, Paypal a commencé à utiliser l'application Node.js en production et a décidé que “toutes leurs futures interfaces web seront construites sur Node.js” alors que certaines des existantes vont être portées vers Node.js.

Un gros avantage à utiliser JavaScript de bout en bout selon Harrell est la suppression de ce fossé entre les développeurs front et back en les réunissant en une seule équipe, “permettant ainsi de mieux répondre aux besoins des utilisateurs, quel que soit le segment de l'éventail technique concerné.”

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT