Développement de ce site : Étape 1 - Définition des besoins et choix technologiques

29/11/2019

J'ai décidé de commencer une série de billets pour expliquer comment j'ai réalisé ce site.
Je vais définir mes besoins, mes attentes et tenter de justifier les choix technologiques.

Les besoins

Ce site s'articule autour de quelques besoins classiques et est semblable à un site vitrine :

J'ai prévu d'écrire directement en HTML tous mes contenus sans passer par un éditeur wysiywg, je ne me sens jamais vraiment confort avec ce genre d'outils qui ne produit pas toujours du super code.
Je ne souhaite pas non plus utiliser de base de données pour sauvegarder les contenus, mais de me baser sur des fichiers et sur un système de gestion de version pour enregistrer et historiser mes contenus.
Cela veux dire que chaque correction ou ajout de contenus revient à modifier un fichier.

Bien entendu pour rendre tout ça fluide et simple, je pense mettre un place un processus de déploiement continu, ce qui peut paraître lourd, mais peut aller vite bien outillé.

Ensuite, je réfléchis à ce dont j'ai besoin pour développer et maintenir le tout :

Le choix des technos

Côté rendu

Je vais partir sur un classique Bootstrap comme Toolkit CSS pour gérer la partie adaptative et me fournir des classes pour la disposition flex qui sont très pratiques. J'ai voulu tenter la version 5 qui est sans dépendance à JQuery, mais le projet est clairement trop jeune à l'heure ou j'écris ces mots.

Du coup, je dois charger une dépendance à JQuery pour bénéficier des comportements Javascript de Bootstrap, j'utilise toutefois la version Slim qui est un peu plus light et qui semble suffisante.
J'ai également déjà en tête de faire un bandeau animé basé sur un document SVG animé par du CSS et la librarie Javascript d3.js mais sans JQuery.

Côté serveur

J'ai comme première impression que je vais devoir me servir d'un Framework, mais ce qui m'embête est de sortir l'artillerie lourde pour un petit projet, surtout que je n'ai ni besoin d'utiliser de base de données, ni la plupart des composants. J'ai toutefois besoin d'un système de templating et d'une mécanique de routing.

Après quelques tests et lectures sur le Web, mon choix s'est porté sur Plates PHP développé par la célèbre team thephpleague. C'est un micro Framework PHP qui propose des fonctionnalités intéressantes :

Justement, c'est ce dernier point qui est un peu déroutant, le micro-Framework est extrêmement ouvert, il n'y a pas de base de "controller" branché sur un système de route. Il est possible de l'implémenter, mais ne fait pas vraiment partie de mon objectif de refaire ce qu'un autre framework fait déjà. En effet, la mécanique principale se résume à simplement charger des fichiers de vues PHP à partir d'URL attendues.

Sans trop rentrer dans les détails technique car cela fera partie d'un prochain billet, voici le fonctionnement classique que j'imagine pour gérer une requête type :

Comme j'ai envie d'avoir une section Billets avec des sous-pages sur le site, il faut que je prenne en compte dès la conception cette caractéristique à la fois au niveau du système de routing et du choix de la structuration des fichiers.

Gestion de version, déploiement et hébergement.

J'ai comme à mon habitude décidé d'utiliser Git et d'héberger le dépôt sur mon Gitlab. J'utilise Docker en local pour le développement mais l'hébergement est quant à lui plus classique et se trouve sur un serveur Debian avec de vrais services non conteneurisés (apache, vhosts, php-fpm).

Ma stratégie de déploiement est basée sur l'outil Deployer qui à l'aide de recettes s'occupe de toutes les phases d'une mise en déploiement. Cela se résume principalement à :

J'en parlerai là aussi dans un autre billet spécifique.

Et le contenu dans tout ça!

Au final, je n'ai pas abordé le côté éditorial des pages, ce qui n'est pas le but de ce billet. Cependant, c'était clairement l'objectif principal du site, à savoir : décrire mon activité et mes services. Le choix des mots et la cohérence du discours ont donc été le travail le plus difficle pour moi. Toutefois, lier tout cela au développement d'un mini-système a rendu cette création bien plus sympathique.

Retour aux billets