• Ce blog — désormais archivé — est en lecture seule.

Programmation web : comment choisir entre le confort et les performances ?

Aujourd’hui la programmation web est avancée, bien avancée même. Plusieurs langages se démarquent, les concepts et les design patterns deviennent presque des standards et les frameworks sont à la mode.

Cependant, des problèmes apparaissent et des questions se posent :

  • Quel langage choisir pour la programmation web d’aujourd’hui ?
  • Un framework ou pas ?
  • Comment pallier les montées en charge ?

Je donnerai mon point de vue en restant ouvert, j’aimerai avoir d’autres avis pour connaître le courant de pensée du développement web de ces derniers temps.

Quel langage de programmation web choisir aujourd’hui ?

C’est une question difficile puisque d’abord je ne connais pas tous les langages et tout dépend de ce que l’on veut faire.

Pour une application à forte audience avec des montées en charge fréquente, il est nécessaire d’avoir une forte stabilité. Java permet d’obtenir une stabilité indéniable mais reste plus difficile à programmer. PHP, Python ou Ruby restent des langages de script ce qui amoindrit leurs performances. Bien sûr, je ne parle ici que du langage, j’exclue les caches, memcaches, serveurs scalables…

Par ailleurs, développer une application Java est un peu plus long que d’utiliser PHP. Il faut donc être certain de cibler beaucoup de personnes pour se lancer dans un projet Java. Ce qui m’amène à cette théorie : utiliser une application PHP dans un premier temps puis changer le code métier par du Java si le projet marche bien et que l’on a besoin d’une stabilité à long terme.

Selon moi, les deux langages de programmation web sont aujourd’hui Java et PHP, à choisir selon son projet, ses coûts, son temps et ses ressources.

Un framework ou pas ?

Sujet délicat qu’est l’utilisation d’un framework entre pro-frameworks et développement RAD et les conservateurs d’un langage en particulier.

Aujourd’hui utiliser un framework n’est pas négligeable et offre beaucoup d’avantages  : gain de temps, maintenabilité, aisance de développement. Mais les performances deviennent plus faible (ce qui peut-être compensé par un système de cache par exemple).

Le cas Java

En Java, on peut utiliser Struts ou encore JSF (qui n’est pas un framework mais que l’on peut utiliser en tant que tel). Struts et JSF peuvent être complémentaire. JSF apportant une couche Présentation très avancée. Ces frameworks sont prédominant dans le développement Java et restent une valeur sûre.

Alors utiliser JSP et un MVC maison ou JSF/Struts ? Un MVC maison reprend le concept de Struts mais pas forcément sa robustesse. Pour avoir commencer par développer un site en JSP + MVC perso, JSF a été la révolution : c’est plus simple. Néanmoins JSF passe par une longue série d’étapes qui rendent les traitements plus long.

Et PHP alors ?

En PHP, on a Symfony ou Zend. Symfony est l’unique que je connaisse. Selon des benchs (plus ou moins fiable), il est plus performant que Zend.

Mais PHP est un langage de script, un code procédural brute de décoffrage restera le plus performant. Il faut donc choisir entre performance et confort, c’est plus démarqué qu’en Java.

Symfony et Zend reprennent l’architecture Model View Controller, une architecture connue et reconnue par tous, tout comme la Programmation Orientée Objet. En PHP on se laisse facilement avoir et très vite on peut ne pas programmer en objet. Aujourd’hui j’entend encore qu’utiliser un MVC ou que programmer en objet est une erreur… Ce qui me fait sourir et je me rappelle le siècle dernier ou commencer le PHP, procédural certe.

Les concepts ont évolués, pas certains. Ce qui est dommage. Ainsi, pour moi utiliser un MVC reste obligatoire en PHP. Ce n’est pas un confort de développement, c’est plus que ça, et l’impact sur les performances peut être rapidement pallié.

Alors utiliser un framework ou non ? Oui ça reste un confort mais aujourd’hui c’est plus que ça : gain de temps, robustesse, stabilité, extensions, communautés… Pour les performances des solutions existent.

Pour les autres ?

Ruby On Rails pour Ruby et Django pour Python sont conseillés.

Comment pallier les montées en charge ?

Beaucoup plus d’utilisateurs qu’auparavant, plus d’intérêts, plus d’addictions provoquent de fortes montées en charge. Les solutions d’aujourd’hui à ma connaissance sont :

  • Un système scalable chez Amazon : Amazon met en place des architectures matériel scalables, ce qui veut dire que le nombre de serveurs sont adaptés réel selon la demande.
  • Cache applicatif et matériel : memcache, proxy, cache dans les frameworks.
  • Virtualisation
  • Load balancing : plusieurs serveurs mettent à disposition un frontal
  • Clustering de base de données
  • Serveurs de média : des serveurs mettent à disposition les images, vidéos, javascripts, css..

Le cache est une solution à intégrer, ce n’est pas coûteux et jouer sur le cache peut grandement améliorer les performances.

En résumé ?

Ceci reste mon point de vue construit à partir de mes études, de mes expériences professionnelles, de mes recherches personnelles ou encore de mes discussions. Ce n’est en rien un axiome.

J’aimerai, comme je l’ai dit plus haut, des réactions, des avis sur ces questions afin d’en tirer un avis plus global sur ce qui se décide aujourd’hui.

  • Print
  • Digg
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Twitter
  • Google Bookmarks
  • FriendFeed
  • LinkedIn
  • MySpace
  • Netvibes
  • PDF
  • Ping.fm
  • RSS
  • Technorati
  • viadeo FR
  • Wikio
  • Yahoo! Buzz

Related Posts

Cet article a été publié dans Ancien blog avec les mots-clefs : , , , , , , , , , , . Bookmarker le permalien. Les commentaires et les trackbacks sont fermés.