Limites et incohérences des CMS classiques
Bearstech a aquis depuis 2004 une expertise reconnue sur plusieurs systèmes de gestion de contenu, que ce soit en PHP, en Python, en Ruby ou d'autres langages plus exotiques. Les systèmes de gestion de contenu sont pour nos clients comme pour nous des outils à la fois simples et efficaces pour construire des services web.
En faisant un peu d’archéologie de nos usages, nous avons utilisé au cours des années et refontes pour Bearstech.com des CMS tels Typo3, Drupal, Django ou Plone. Nous avons aussi effectué des missions de développement, d’optimisation, de sécurisation et de TMA de CMS pour nos clients qui nous permettent de maîtriser aussi bien les avantages de ces outils que leurs limites dans le cadre de notre refonte :
- ils nécessitent une attention particulière en terme de correctifs de sécurité
- ils n'offrent pas toujours la flexibilité que l'on souhaiterait d'eux, ils sont souvent enfermés dans une logique contraignante qui impacte les publications ou le design des applications
- ils fournissent souvent des fonctionnalités dont nous n'avons pas besoin et alourdissent inutilement l’application
- ils rendent plus complexe la maintenance.
- pour des raisons éthiques, nous souhaitions limiter l'usage des cookies et des divers codes de tracking inhérents à certains services que l'on retrouve régulièrement livré par défaut avec le code de certains CMS.
- pour des raisons de sécurité, nous souhaitions éviter les connexions directes d'utilisateurs/éditeurs de contenus sur une interface d'administration en ligne.
Le choix d'un générateur de site statique
Etant donné le contexte fonctionnel de notre refonte (site de présentation, formulaires, publication de news, affichage de données de réseaux sociaux, interface visuelle de gestion des contenus), nous avons décidé de nous orienter vers un système de gestion statique, au sens où il n’y a pas besoin de base de données, cette caractéristique en moins devenant dans notre cas un plus.
L’offre de CMS statiques est extrêmement riche et dense, https://www.staticgen.com/ recense ainsi pas moins de 198 « top static CMS » ( https://staticsitegenerators.net/ en compte 459). Nous avons pour notre projet choisi Lektor qui embarque les services d'un système de gestion de contenu classique avec une interface d'administration offline permettant d'éditer les contenus en utilisant la syntaxe Markdown. Ecrit en Python et extensible, Lektor offre une flexibilité sans faille.
Frameworks légers, microservices et isolation
Pour aller au bout de la démarche :
- nous avons utilisé des frameworks très légers : Vue.js et Bulma
- nous avons eu recours à des microservices Python Flask pour la gestion des formulaires de prise de contact
- les données des réseaux sociaux ne sont pas affichées directement mais servies via un cache intermédiaire stable et sécurisé permettant d’éviter toute dégradation de performance qui serait due à des services externes
- l’analyse des usages, statistiques de fréquentation sont obtenus via Piwik sans tracker js, exclusivement via l’analyse des logs
Des résultats directs en terme de performance et de sécurité
- pas de base de données, pas d’administration en ligne, pas de services tiers directs, la surface d’attaque est réduite à sa portion congrue construisant par conception un niveau de sécurité extrêmement élevé
- 398.7 kB : le poids total de la homepage, sans sacrifier aucunement en terme de qualité visuelle (selon nos goûts:) ou d’affichage de données de réseaux sociaux
- seulement 22 requêtes, 1 à 2 secondes pour charger l’intégralité de la homepage : la structure efficace et minimaliste assure des temps de chargement et une qualité de service exceptionnels
- pas de tracker, pas de cookie : nous respectons absolument les données de nos visiteurs
- du fait de son architecture (pas de base de données, etc.), la plateforme est plus économe en utilisation de ressources matérielles et présente une empreinte écologique réduite comparée à un CMS standard.
Avec la refonte de bearstech.com, nous avons mis en oeuvre dès la conception et dans tous les choix, les meilleures pratiques que nous avons identifiées pour assurer des gains de sécurité et de performance les plus importants possibles. Nous avons aussi pu dans le même temps tenir nos engagements de respect des données des visiteurs et de recours exclusif à des logiciels libres.
En plus de ces aspects stratégiques pour nous, nous avons créé un workflow de déploiement continu qui inclut dev + ops mais aussi utilisateurs / rédacteurs en respectant et intégrant les cultures, connaissances et besoin de chacun, un article sera bientôt disponible sur ce sujet.