Node.js : le guide pour convaincre son Boss
On parle souvent de la grande vélocité de Node.js et de son brillant avenir. Mais il n'est pas toujours judicieux de l'utiliser. Pour certains cas d'utilisations, c'est le meilleur choix à faire (application web temps réel). Pour d'autres cas, ça le deviendra mais c'est encore un peu tôt (CMS web). Et pour d'autre il ne sera jamais réellement adapté (intelligence artificielle). Voici l'adaptation française d'un article de Felix Geisendörfer, contributeur Node.js. Il nous explique de manière pragmatique comment raisonnablement et rationnellement il est possible d'utiliser Node.js pour son business.
« Maintenant que vous êtes au point sur l'utilisation de Node.js, il est temps de convaincre votre boss. Enfin peut-être. J'ai eu l'occasion de conseiller différente entreprise sur la question : Node.js est la bonne technologie ? Et parfois, la réponse est tout simplement non.
Ce guide est ma collection opiniâtre des conseils pour ceux d'entre vous qui veulent savoir si Node.js fait sens pour leur entreprise, et si oui, comment convaincre la direction.
Les mauvais cas d'utilisation
Des applications à forte charge CPU
Même si j'adore Node.js, il y a plusieurs cas d'utilisation où ça n'a pas de sens de l'utiliser. Les cas les plus évidents sont ceux des applications avec une importante utilisation du CPU avec peu de communication Entrée/Sortie. Donc, si vous avez l'intention d'écrire un logiciel d'encodage vidéo, d'intelligence artificielle ou un logiciel similaire gourmand en processeur, s'il vous plaît n'utiliser pas Node.js. Alors qu'en Node.js vous allez un peu galérer, vous aurez probablement de meilleurs résultats avec C ou C++.
Cela étant dit, Node.js vous permet d'écrire facilement des addons C++, de sorte que vous pourriez l'utiliser comme un moteur de script utilisant lui-même vos algorithmes ultra-secrets.
Des applications HTML simple (Créer, Lire, Mettre à jour et Effacer)
Alors que Node.js devient un outil amusant pour écrire toutes sortes d'applications web, ne vous attendez pas à ce qu'il vous fournisse plus que PHP, Ruby ou Python sur ces points. Oui, votre application sera probablement plus évolutive, mais cependant votre application ne vous permettra pas, magiquement, d'obtenir plus de trafic tout simplement parce que vous l'écrivez en Node.js.
La vérité est que si nous commençons à regarder du côté de bons frameworks Node.js, il n'y a rien de plus puissant que Rails, CakePHP ou Django sur la scène à l'heure actuelle. Si la plupart de vos applications se contente d'un simple rendu HTML basé sur une base de données précise, s'aider de Node.js ne vous fournira pas beaucoup d'avantages commerciaux tangibles.
NoSQL + Node.js + Truc qui fait classe mais c'est tout
Si l'architecture pour vos prochaines applications contient du NoSQL, arrêtez vous un instant, et lisez ceci :
Oui, Redis, CouchDB, MongoDB, Riak, Casandra, etc... ont tous l'air vraiment tentant, mais c'est peut-être la pomme rouge à laquelle Eve n'a pas pu résister. Si vous prenez déjà un risque technologique avec Node.js, vous ne devriez pas les multiplier avec plus de technologie que vous ne comprenez probablement pas encore complètement.
Bien sûr, il y a des cas d'utilisation légitimes pour choisir une base de données orientée document. Mais si vous essayez de créer une entreprise basée sur votre logiciel, s'en tenir à la technologie des bonnes vieilles base de données relationnelles (comme postgres ou mysql) pourrait bien être plus pertinent que satisfaire votre esprit de nerd et d'impressionner vos amis.
Les bons cas d'utilisation
Les APIs JSONP
Construire des APIs légère REST / JSON est quelque chose pour laquelle Node.js brille vraiment. Son modèle non-bloquant Entrée/Sortie combiné à JavaScript en font un excellent choix pour emballer d'autres sources de données telles que des bases de données ou des services Web et de les exposer via une interface JSON.
Applications simple d'une seule page
Si vous envisagez d'écrire une application avec une page lourde unique avec AJAX (pensez à Gmail), Node.js répond parfaitement au besoin. La capacité de traiter de nombreuses demandes à la secondes avec un temps de réponse faible, ainsi que le partage des tâches comme la validation d'informations entre le client et le serveur en font un excellent choix pour les applications web modernes qui font beaucoup de traitement sur le client.
Les lignes de commande des OS
Avec Node.js qui est encore jeune, c'est tentant de re-inventer toutes sorte de software pour lui. Cependant, une meilleure approche est de taper dans le vaste univers des lignes de commandes de vos OS. Les capacités de Node permettent de créer des milliers de processus fils et de traiter leurs retours comme un flux permettant de tirer partie des développements existants.
Flux de données
Généralement les traitements web se limitent aux requêtes et réponses http et aux évènements piochés dans une pile. La vérité est que ces informations font partie d'un flux et les applications Node.js peuvent tirer partie de cela. Le plus gros exemple est celui des uploads en temps réel et également des ponts entre les différentes couches de données.
Les applications en temps réel
Un autre grand aspect de Node.js est la facilité avec laquelle vous pouvez développer des systèmes temps réel souples. Par cela j'entends des trucs comme Twitter, des logiciels de chat, de paris sportifs ou des interfaces avec les réseaux de messageries instantanées.
Mais soyez prudent, bien que JavaScript soit un langage dynamique avec garbage collector, votre temps de réponse peut dépendre du temps que mets le garbage collector à faire son ménage (à ce moment votre programme est arrêté). Donc n'essayez pas de créer un system temps réel ultra-précis en Node, cela nécessite des temps de réponses cohérents. Erlang est probablement un meilleurs choix pour ce type d'application.
Convaincre le Boss
Une fois que vous avez déterminé que votre cas d'utilisation est parfait pour Node.js, il est temps pour convaincre votre patron ou votre hiérarchie qu'il faut l'utiliser.
Construction d'un prototype
La meilleure façon de mettre le pied dans la porte, est de suggérer de prendre une semaine pour construire un prototype simple d'une certaine partie de l'application que vous avez à l'esprit. Il est généralement facile d'obtenir le feu vert pour cela, car cela n'implique pas encore un engagement à long terme.
Trouver des développeurs
Pensez ce que vous voulez du JavaScript, mais il devient le langage commun à tout les appareils de programmation. Quasiment tous les ordinateurs personnels à un ou plusieurs interpréteurs JavaScript (navigateurs) installés, ce qui signifie qu'il est presque impossible à la plupart des développeurs web de ne pas l'apprendre à un moment donné dans leur carrière.
Cela signifie que vous avez un grand pannel de compétences dans vos rangs, et vous avez probablement déjà beaucoup de talent dans votre propre entreprise. Donc, si vous travaillez pour une entreprise en pleine croissance, c'est un solide argument favorisant Node.js.
Communauté dynamique
A ce stade, la communauté Node.js se développe à un rythme fou, attirant certains des développeurs les plus brillants de l'industrie. Cela signifie aussi que l'écosystème de Node augmente chaque jour, et il est également facile d'obtenir un support gratuit et commercial auprès de diverses sources.
Performance
Cet argument doit être soigneusement avancé, mais si la performance est un aspect essentiel de votre demande, Node.js a beaucoup à offrir. Avec cinq entreprises (Mozilla, Google, Apple, Microsoft, Opera) en compétition sur la meilleure mise en œuvre JavaScript, l'interprèteur sous-jacente de Node (V8 de Google) est devenu incroyablement rapide, et cela s'améliore de jour en jour.
En combinant cela avec le modèle non-bloquant de Node en Entrée/Sortie, vous pouvez toujours vous accrocher pour avoir un programme moux. La plupart des applications Node sont facilement capable de gérer des milliers de connexions simultanées, ce qui peut-être considéré comme un standard pour lui.
Risque pour l'entreprise
L'un des risques avec un jeune projet open source est le manque d'engagement à long terme par ses auteurs. Ce n'est pas le cas avec Node.js. Node est actuellement sponsorisé par Joyent, qui a embauché Ryan Dahl et plusieurs autres contributeurs de base, il y a donc une véritable force économique soutenant le développement futur du projet.
Entre autres choses, cela a déjà tenté des sociétés comme Yahoo! et HP (anciennement Palm) qui ont assez de confiance en Node.js pour construire leurs produits de prochaine génération dessus. Votre Boss peut certainement se détendre en lisant leurs témoignages rassurants.
Convaincre un client
Si vous êtes une société autonome ou un freelance, convaincre un client d'utiliser Node.js peut-être une autre histoire. Après tout, ils sont généralement très dépendant de votre avis, tout autant que du support continu que vous appportez à leur logiciels.
Mon conseil est d'être un peu plus conservateur, et vérifier tout de même si Node est un bon ajustement. Si c'est le cas, assurez-vous que vous avez les ressources et le temps pour soutenir la demande sur le long terme. L'équipe Node.js publie de nouvelles versions à un rythme rapide, et donc vous ne devez jamais attendre plus de 3 à 6 mois pour le mettre à jour vers la dernière version. »