La backend de ce site (API) est actuellement un projet Play Framework fait à l'arranche et dispo ici:
C'est moche.
Play est vraiment bien pour rapidement créer une application web, un peu comme avec Silex ou le-micro-framework-de-Laravel mais sans PHP quoi.
Justement c'est quoi les autres technos et ce que j'en pense? Je vais essayer de me limiter à une phrase:
Node
J'aime bien Express.js et Node en lui-même est très performant, de sorte que si on en croit les Tweets de gens qui bossent sur le projet, aurait un pré-compilateur tellement efficace que le code approche les performances de code compilé.
Le problème c'est que c'est Node, et Javascript. Les trucs les plus Hype de Github, le théâtre de batailles subtiles entre géants cotés en bourse qui payent très cher de grandes équipes de brillants jeunes ingénieurs plein d'étoiles dans les yeux pour réaliser le prochain truc-qui-brille dont on parle tout le temps en convention.
Je préfère quelque chose de stable qui ne demande pas 1000000 de dépendances dont certaines ne fonctionnent plus ou re-fonctionnent trois versions de npm plus tard (même npm est possiblement en train de se faire remplacer d'ailleurs).
J'ai plein d'exemples d'aberrence de gestion de dépendance sauvage avec Node, et j'aime pas ça.
Finalement, il y a aussi le soucis de la boucle évènementielle. Ce truc n'est pas prévu pour être facilement scalable horizontalement. Pas impossible, mais pas confortable.
Python
Honnêtement je serais parti sur Django ou Flask si Spring Boot n'était pas si simple à utiliser (j'avais juste le souvenir de Spring MVC, qui était rude à l'apprentissage).
Python peut compiler en bytecode et a l'air moins foireux que Java pour tout ce qui est optimisations de JVM.
De plus, je trouve le langage élégant si on met de côté son usage d'underscores plutôt que la CamelCase.
En fait c'est nul mais ça me trouble à mort. Et accessoirement mes connaissances en Python sont vraiment proches de 0.
.NET
lol
Je pense que le C# est un bien meilleur langage que Java avant la version 8. Mais... Microsoft n'était pas encore dans le fameux combat Github des titans du Javascript et des jeunes développeurs sur des Mac plein de stickers quand .NET aurait dû garder toute sa traction.
Comme ils ont de l'argent infini j'imagine qu'ils nous sortirons un truc un jour ou l'autre.
PHP
La popularité de PHP est toujours énorme. Et même si le langage est très permissif et ressemble davantage à du Perl avec des poils pubiens collés qu'à du beau marbre bien poli, il est simple à prendre en main et très efficace.
Le pré-compilateur se débrouille pas mal aussi depuis la version 7, et les frameworks Laravel et Symfony sont matures et très puissants.
Outre le langage en lui-même, PHP souffre de son modèle on-efface-tout-et-on-recommence à chaque requête, qui l'empêche de pouvoir facilement utiliser des pools de connexion de DB, par exemple, et a pour conséquence que tous les gros projets PHP utilisent Redis pour trimballer des données entre les sessions.
Ces reconstructions constantes de contexte à chaque requête ont un coût en performance, et l'isolation relative que cela offre est loin de compenser ce coût, même si le scaling horizontal de PHP est très bien maitrisé.
Cela étant, pour torcher un petit service Rest rapidement, je préfère largement utiliser un des frameworks PHP que Express.js et Node.
GO / Rust / C
J'y ai pensé, simplement utiliser un package serveur HTTP dans un de ces langages et compiler un bidule.
De toutes façons pour Java il faut compiler aussi. Alors pourquoi pas? Parce que personne ne le fait. J'imagine que ça manque de trucs qui brillent et d'étoiles sur des répositoires.
Play
Play est vraiment bien à part qu'il faut installer le bidule d'activator et que j'ose pas mettre à jour la super vieille version que j'utilise.
L'autre problème c'est que Play est prévu pour Scala et pas Java et ses performances avec Java sont en deçà de celles de Scala. Euh... Ouais.
J'ai aussi mon backend qui plante de temps en temps, mais je pense que c'est la faute à mon driver DB. C'est ce que je dis toujours quand un truc Java plante de toutes façons.
Spring Boot
Je suis encore en train d'apprendre, mais Spring Boot est extrêmement prometteur.
Utiliser Maven fait un peu vieux type qui code sous Windows ou Ubuntu (lol la loose) et qui roule probablement en Prius et travaille pour une banque.
Cela dit le projet est mature et fonctionne bien (j'aime bien son intégration à Eclipse) et existe depuis tellement longtemps qu'il me fait moins peur que tous les autres systèmes de gestion de dépendance au monde.
Le but de Spring Boot et de créer des apps Spring MVC avec beaucoup moins de code BOILERPLATE remplacé par de nouvelles annotations, et des dépendances Maven particulières qui collent des bouts ensembles d'une manière bien pratique et facile à installer.
Je suis vendu.
Prochaine étape: récupérer la majorité des classes du backend, les bourrer dans un projet Spring Boot, ajouter un rendering serveur pour les moteurs de recherche (mais ça c'est une autre histoire).
Le code sera toujours moche je vous rassure.
Commentaires
Il faut JavaScript activé pour écrire des commentaires ici