Vers quelle Technologie aller pour réussir votre projet web (1ère partie)

Dans le merveilleux monde du web, lors du démarrage d’un projet, le choix des technologies est crucial. Lors d’une refonte totale, le choix est moins difficile… mais ne veut pas dire simple 🙂
Dans le cadre d’une refonte, on peut s’appuyer sur l’expérience acquise auparavant pour repenser l’application. On peut aussi mettre en place une nouvelle expérience plus saine pour le développeur (Developper eXperience) afin de fluidifier la réécriture des fonctionnalités existantes et d’améliorer la production de nouvelles fonctionnalités.
En effet, le fait d’avoir des fonctionnalités déjà en place en environnement de production permet une analyse simplifiée du code et de l’UX.
De plus, contrairement à un nouveau projet, le besoins est clair dans une solution déjà en place. D’autant que le projet a parfois connu de nombreuses modifications de la part des demandeurs.
Si lors d’une refonte le besoin n’est pas clair pour les développeurs et le Chef de projet, c’est qu’il y a un autre problème 😉
Il faut donc correctement comprendre le besoin pour faire les bons choix. Dans le cadre d’un nouveau projet, le besoin n’est pas évident à cerner, aussi bien pour le demandeur (qui a souvent une idée floue de la solution), que pour le chef de projet ou PO qui va devoir s’approprier ce besoin et piloter le projet. Cette solution va être ensuite créée par un ou plusieurs développeurs.
En tant que développeur, on a le choix entre le confort d’un langage et/ou framework qu’on connaît, et l’aventure avec un nouveau langage et/ou framework.
Je suis partisan de l’adage qui pour un projet dit, , “la bonne technologie est la technologie que l’équipe connaît la mieux”. Mais parfois on est amené à faire un choix en fonction des contraintes. Ainsi, pour aider les développeurs, aventureux et moins aventureux, mais aussi les Chef de projets curieux, je vous propose un petit guide pour orienter votre recherche. Ce guide n’a pas vocation à vous donner une réponse toute faite mais à vous donner des pistes de réflexion autour des différents outils (tout cela n’est évidemment mon humble avis).
Nous allons donc commencer par les trois CMS PHP les plus en vue : WordPress, Drupal, Joomla. Dans les parties qui vont suivre, nous aborderons les frameworks. Ainsi, nous verrons leur utilisation dans le cadre d’un rendu fait côté serveur puis nous terminerons par le rendu fait côté client.
Cette comparaison prendra en compte les points suivants :

  • Communauté : Plus le nombre d’utilisateurs est important, plus les solutions aux problèmes rencontrées sont nombreuses.
  • Documentation : un bonne documentation peut faire gagner beaucoup de temps.
  • Infrastructure : Beaucoup de points sont communs à PHP et JS …et pour toutes les applications web en général. Ainsi le système d’exploitation des ordinateurs servant a héberger l’application sont généralement tous sous Linux. L’application web a besoin d’un serveur HTTP pour envoyer et recevoir des requêtes, en général Apache, ou eNginX. Pour sauvegarder les données, il lui faut une base de donnée, là encore, en général on retrouve des systèmes base de données relationnelles comme MySQL, mais l’utilisation de bases de donnée NoSQL augmente d’année en année. Le point de divergence vient des moyens nécessaires au traitement de la requête : avec PHP on passera par un binaire, avec Javascript, on utilisera NodeJS.
  • Concepts : Certain outils demandent la maîtrise de concepts assez avancés par les développeurs.
  • Avantages et Inconvénients d’un point de vue développeur et Chef de projet.

Les kits prêts à l’emploi : les CMS

Un CMS est une solution clé en mains pour créer un site, nécessitant simplement du contenu dynamique structuré. Autrement dit, c’est une pâte à gâteau prête à être mise au four 😉
Quand on compare les parts de marché des CMS dans le trafic web, on s’aperçoit vite qu’un CMS dépasse tous les autres : WordPress. La part exacte de WordPress n’est pas vraiment déterminée mais il se situe entre un tiers et deux tiers ( 1 , 2 , 3 ). WordPress est un CMS très ( trop ? ) généraliste au même titre que les deux autres CMS qui le suivent ( difficilement ) Joomla et Drupal.

Communauté

WordPress dispose d’une très large communauté car orienté très grand public contrairement au deux autres. Drupal et Joomla ont des communautés moins larges mais ont un public beaucoup plus technique car leur prise en main est plus compliquée.

Documentation

Très bonne documentation. Les concepts avancés sont bien expliqués mais parfois un peu abstrait. Néanmoins, vous pouvez aisément trouver des articles sur des utilisations avancées appliqués à des cas plus réels.

Infrastructure

Une infrastructure classique LAMP ou LeMP ( Linux, Apache/eNginX, Mysql/MariaDB, PHP ) suffit amplement pour faire fonctionner ces CMS. Beaucoup d’hébergeurs comme OVH ou 1&1 proposent des offres sur des serveurs mutualisés. Ces derniers ont l’avantage d’être pré-configurés, ce qui permet un déploiement rapidet. Mais si vous décidez de passer par un serveur dédié, les configurations nécessaires ne sont pas très difficiles. Sur des sites à fort trafic, il est vivement conseillé de mettre en place des serveurs de cache pour accélérer la navigation de l’utilisateur.

Concepts à maîtriser

WordPress ne requiert pas de concepts avancés à maîtriser et la prise en main est très rapide. Drupal et Joomla, dans leur dernière version, ont des organisations plus complexes que WordPress. Mais leur utilisation au jour le jour est plutôt simple après une petite période d’adaptation.

Avantage

La solution de prendre un CMS est idéale lorsque le besoin est simple ( vous avez un exemple devant vos yeux 🙂 ).

Chef de projet

Le SEO est facile à mettre en place grâce aux plugins. Il y a énormément de templates disponibles.

Développeur

Peut de choses à maîtriser. Facile de faire une template soi-même. Facile de faire un plugin soi-même.

Inconvénient

Étant très répandus, les CMS sont très exposés aux attaques : lorsqu’une faille est trouvée sur un site ayant l’un des CMS , il peut être exploité sur tous les autres sites ayant le même CMS. Les performances du site peuvent aussi s’effondrer si un plugin et/ou un serveur pour faire du Cache n’est pas installé.

Chef de projet

Il faut mettre en place un certain nombre de plugins pour pouvoir bénéficier d’un SEO efficace. La gestion du contenu personnalisé peut vite devenir contraignant si le plugin n’est pas assez bien adapté.
Implémenter des fonctionnalités non prévues par le CMS peut être long. Les templates téléchargeables ne seront pas rapidement adaptables (voir pas du tout parfois) pour certains besoins particuliers. En effet, les CMS on chacun leur façon de surcharger les modules fournis dans les templates.

Développeur

Difficiles à maintenir lorsqu’ils sont utilisés pour autre chose que du contenu simple (Application SAAS ou Ecommerce ). Les templates téléchargeables deviennent parfois… non en fait très souvent :), un cauchemar à modifier et maintenir. Et parfois, avec le même CMS, vous aurez des manières très différentes de surcharger les templates. En effet, même s’il existe des bonnes pratiques, il ne s’applique qu’à des templates simples; les templates plus complexes s’organisent de manière très différente en fonction des personnes qui les réalisent.
Les plugins peuvent être longs et contraignants à créer ou à adapter.
Les cas pratiques disponibles sur le web ne sont pas très diversifiés et obligent à utiliser des plugins peu ou pas maintenus.