Développement de sites : Homemade, Framework ou CMS ?

L’objectif de ce document n’est pas d’essayer de démontrer qu’une méthode de développement de sites est meilleure qu’une autre mais de présenter les avantages et inconvénients de chaque méthode (= type de conception de sites).

Avec les 3 méthodes vous pourrez tout faire sur votre site. Il faudra avant tout se donner les moyens de bien connaître l’outils utilisé, Votre choix va s’orienter en fonction du projet, de l’évolution de celui-ci, des personnes travaillant avec vous sur le projet, des points forts et des points faibles de l’outils, de votre personnalité, …

1 – Petits descriptifs des 3 méthodes

Homemade (descriptif)

L’homemade ou «le fait maison» en français est une méthode qui consiste à utiliser un langage web comme PHP, Python, Ruby, … pour développer son site de A à Z. Vous partez de rien et vous vous constituerez petit à petit vos librairies de fonctions, vos modules et plugins, … Vous devrez aussi organiser l’architecture du site (fichiers, répertoires), …

Frameworks (descriptif)

Un framework est un cadre de travail qui vous permettra de développer plus rapidement. En effet le framework possède déjà des fonctionnalités de bases très utiles (par exemple : le code gérant l’authentification est en natif dans la plupart des frameworks).

Il possède aussi une structure MVC (modèles, vues, controlleurs) permettant de séparer les couches logique de l’applications afin d’avoir plus de clareté dans le code.

La plupart des frameworks (Cakephp, Symfony, Laravel, …) sont développés en PHP mais il existe aussi des frameworks Python (Django par exemple).

CMS (descriptif)

Un cms est un outils complet qui permet de faire un site très rapidement même sans maîtriser le langage avec lequel il a été conçu. L’installation est simple; il faudra copier les fichiers sur votre hébergement; vous pourrez la faire par ftp. Il faudra aussi créer une base de données puis lancer l’installateur qui vous guidera jusqu’à la fin du processus.

Une fois le CMS installé vous disposerez d’une zone pour gérer vos articles, pages, menus, templates, … Vous pourrez aussi personnaliser votre site : nom du site, slogan, …

La plupart des CMS proposent sur leurs sites officiels des modules à télécharger pour compléter les fonctionnalités du site. Ils sont en général développés en PHP.

Parmi les plus connus :

  • WordPress
  • Joomla
  • Drupal

2 – Quelles sont les exigences au niveau de l’apprentissage du langage web ?

Homemade (exigences apprentissage)

Vous devez bien entendu très bien connaître le langage utilisé mais pas forcement toutes les fonctions du langage par coeur. Il faudra surtout bien connaître les principes du langage comme le nommage des variables, les classes, … et établir une organisation logique (emplacement et nommage des fichiers, définition des variables, fichiers de configurations, dossiers publics, structure MVC ou autre, …).

Framework (exigences apprentissage)

Il est fortement conseillé de connaître le langage utilisé par le framework (par exemple PHP pour le Framework Synfony) mais vous ne serez pas obligé de tout connaître du langage. L’un des objectifs du framework c’est justement de faire abstraction le plus du développement bas niveau (dans le sens proche ) pour gagner du temps et de la lisibilité. Cependant vous serez p-e amené à développer des traitements plus complexes dans le cas ou ils ne seront pas implantés dans le framework. Vous pourrez aussi devoir comprendre une partie de l’API. Pour cela une bonne connaissance du langage est fortement recommandée.

Il faudra connaître la façon de fonctionner du Framework. Ce dernier étant capable de faire déjà beaucoup de choses (authentification d’un visiteur par exemple) sans avoir à coder des tonnes de lignes de codes. Vous pourrez par exemple appelez une méthode d’une classe et envoyer le résultat en 2 ou 3 lignes PHP.

CMS (exigences apprentissage)

L’utilisation d’un cms ne nécessite pas la connaissance du langage dans lequel il a été développé. Le backoffice et les plugins pouvant déjà faire énormément de choses sans avoir à coder la moindre ligne. Tout est gérable via le backoffice…

Cependant dans certains cas vous serez obligé de connaître un minimum le langage utilisé par le CMS. Par exemple pour éditer un thème, modifier un plugin, … Certains CMS comme Drupal sont beaucoup plus orientés développement. Une bonne connaissance du langage est dans ce cas est très recommandé.

3 – Le temps d’apprentissage

Homemade (temps d’apprentissage)

Il vous faudra connaître le langage que vous aurez choisi. Cela peut prendre du temps pour apprendre les conventions, la structure, les principales fonctions, … mais vous n’êtes pas obligé dans un 1er temps de connaître toutes les classes et les fonctions du langage.

Pour faire un site complet il vous faudra maitriser tous les aspects du langage.

Framework (temps d’apprentissage)

Il vous faudra connaître le langage utilisé par le framework mais aussi les bibliothèques de fonctions, plugins, modules ainsi que les principes de bases du framework (MVC, routage, fichiers de configurations, …).

Vous y passerez du temps mais une fois les connaissances acquises vous gagnerez du temps car vous aurez une bonne méthode de travail avec des fonctionnalités (authentification, traduction, gestion du cache, gestion des templates, …) déjà développées et régulièrement mises à jour (correction de bugs, ajout de possibilités, nouvelles fonctionnalités, …) par un équipe de développeurs confirmés.

CMS (temps d’apprentissage)

Vous pourrez rapidement avoir un site de contenu, vitrine ou ecommerce avec énormément de fonctionnalités. Par contre il vous faudra passer du temps pour développer des fonctionnalités bien spécifiques si elles ne sont pas disponibles dans des modules additionnels.

4 – Mise en place du site

Homemade (mise en place du site)

Il vous faudra tout développer. Cela vous prendra du temps mais vous aurez la totale maîtrise de ce que vous faîtes. L’inconvénient c’est que si vous vous rendez compte un peu tard de mauvaises pratiques de votre part il vous faudra peut être redévelopper à un moment donné une grosse partie du site.

Framework (mise en place du site)

Une fois le framework copié (par ftp par exemple). Il vous faudra créer une base de données (vous pouvez la laisser vide au départ). Quelques minutes suffisent pour avoir une page «hello world». Ensuite vous devrez aborder les différents aspects du site (sécurité, authentification, template, …). Il vous faudra tout de même comprendre le fonctionnement du framework et de l’API, ses conventions, sa philosophie, … mais le framework vous fera gagner du temps sur des fonctionnalités déjà développées pour des personnes compétentes et certifiées par la communauté.

CMS (mise en place du site)

En quelques minutes vous pourrez avoir un site opérationnel et complet. Si vous souhaitez ensuite avoir des fonctionnalités plus poussées ou personnaliser certaines rubriques du site il faudra alors apprendre à développer avec le cms choisi ce qui n’est pas toujours simples et rapides à mettre en place.

5 – Améliorations du site (sécurité, fonctionnalités, corrections de bugs)

Homemade (upgrade du site)

En mettant à jour votre langage (PHP par exemple) vous aurez régulièrement de nouveaux ajouts et corrections de bugs. Mais pour corriger les failles de sécurités liées à votre code il faudra déjà se rendre compte qu’il y a une faille puis identifier le problème et ensuite le corriger. C’est la même chose pour les bugs. Vous serez seul à le faire et cela ne sera pas toujours simple. L’avantage c’est que votre code n’étant pas public (open source par exemple) vous serez moins exposé aux piratages.

Lorsque vous ajouterez de nouvelles fonctionnalités il faudra tout développer de A à Z. Cependant vous pourrez vous aider de morceaux de codes déjà présents sur le net (sur Github par exemple).

Framework (upgrade du site)

L’avantage du framework c’est que beaucoup de fonctionnalités sont déjà développées et régulièrement mises à jour. Le code étant public vous serez un peu plus exposés aux tentatives que sur du Homemade mais les développeurs du framework vont régulièrement renforcer la sécurité de celui-ci. Ca sera la même chose pour les corrections de bugs. Le gros avantage c’est que le core sera dissocié de votre code (logique métier). En général le core se situe dans un dossier spécifique et ou dans le dossier vendor qui sera facilement mise à jour avec la commande composer.

CMS (upgrade du site)

Avec un cms vous pourrez facilement ajouter des fonctionnalités classiques grâce aux modules et aux mises à jour du cms. Concernant la sécurité, les cms sont beaucoup exposés aux tentatives de hack. Le code source étant connu les hackeurs peuvent trouver les failles de sécurité.

Il est fortement recommandé de mettre à jour votre cms lorsqu’un nouveau patch est mise à disposition. Les hacks peuvent venir des modules. Il est très important de choisir des modules populaires et de les mettre à jour dès qu’une nouvelle version est disponible.

6- Lisibilité du code

Homemade (lisibilité du code)

Cela va dépendre de votre façon de coder et d’organiser votre code, vos fichiers, classes, … Il est important de bien définir tout cela avant de commencer à coder. Penser aussi lorsque vous codez à la réutilisation possible de votre code dans d’autres projets.

Framework (lisibilité du code)

Les frameworks imposent en général leurs organisations (nommage des fichiers, variables, classes, structure MVC, …). Cette rigueur présente un gros avantage pour la clarté du code.

Il est parfois possible de ne pas respecter totalement les conventions du Framework. De ce fait la lisibilité du code et son interprétation par d’autres personnes peuvent être amoindris. Si vous êtes seul à coder sur le projet la maintenance du code peut devenir plus complexe dans le cas ou vous ne respecterez pas les consignes du framework. Votre code sera simplifié car les fichiers sources de l’API seront placées dans un autre dossier (en général). Votre code contiendra donc les appels à l’API et les traitements que vous souhaitez faire tout cela dans une structure MVC (en général).

CMS (lisibilité du code)

Suivant le projet vous n’aurez p-e pas besoin de coder si le CMS et ses modules suffisent. L’essentiel se jouera dans le back-office qui vous permettra de paramétrer le cms et les modules. Si vous souhaitez modifier un module ou en créer un il faudra alors coder. Le code sur lequel vous allez travaillez ne sera pas forcement très simple à modifier ou à créer. Il peut devenir complexe vu que le CMS l’est déjà (beaucoup de fichiers, énormément de lignes de codes, développeurs différents suivants les modules, complexité de la base de données, …).

7- Performances (ressources serveurs , affichages)

Homemade (performance)

Si vous avez bien fait le travail le code s’exécutera très rapidement. Vous n’aurez pas ou peu de surcouches. Votre code sera plus léger qu’avec un framework ou un CMS.

Bien entendu les performances dépendent aussi du nombre de visiteurs et de la performance du serveur qui héberge votre site.

Framework (performance)

Un «gros» framework peut demander plus de ressources qu’un développement homemade. Il va contenir beaucoup de fichiers (même si vous n’utilisez pas toutes les fonctionnalités), de variables, des surcouches, etc …

Cependant vous ne devriez pas avoir de problèmes de performances si vous avez utilisé le framework comme il faut, De plus vous pourrez paramétrer le cache du framework pour les requêtes sql les plus gourmandes (par exemple).

CMS (performance)

Les cms peuvent être très gourmand. Il est quasi indispensable d’utiliser un système de cache pour limiter les ressources utilisées. Les CMS en proposent plusieurs; vous aurez donc le choix. Les gains de performances peuvent être considérables si vous utilisez bien le cache. Il faut y penser avant même de songer à changer d’hébergement ou d’hébergeur.

8 – Développements spécifiques

Sur un site on veut parfois développer une fonctionnalité très spécifique. On attache parfois aussi beaucoup d’importance à des petits détails qui peuvent faire la différence (au niveau SEO, sur l’UI, … par exemple). Suivant le produit utilisé l’approche ne sera pas la même :

Homemade (développements spécifiques)

Vous n’aurez pas de limites dans les développements très spécifiques. Cependant il faudra être bien organisé pour ne pas que ca devienne le foutoir 😉

Framework (développements spécifiques)

Vous serez parfois bloqué sur des détails. Il y aura toujours une possibilité (ajout d’une surchouche : méthode, classe, … par exemple). Cela vous fera parfois perdre un peu de temps. Mais une fois que vous aurez l’astuce vous pourrez la réutiliser lorsque le cas se reproduira.

CMS (développements spécifiques)

Cela sera parfois très compliqué. Il faudra modifier le plugin ou le code source du CMS pour arriver à ses fins. Il faudra refaire les modifications lors des mises à jour du produit. Ce qui peut être très contraignant. Vous pourrez aussi développer votre propre plugin ou module mais cela implique d’avoir les connaissances nécessaires pour cela (= temps d’apprentissage).

Laisser un commentaire