Quel est le meilleur environnement de développement pour un projet technique ou Web ?
Ma stack idéale pour lancer un projet web en 30 à 60 min : GitLab, Docker, DNS, Traefik, HTTPS, Ansible et CI/CD automatisé. Gagnez un temps précieux.
David Patiashvili 5 min de lecture 
Sommaire

Lorsque l’on se lance dans un nouveau projet technique, au bout d’un moment on prend pas mal d’habitudes pour économiser du temps. Et à force, nous mettons en place des systèmes automatisés pour n’avoir “plus que” le projet réel à gérer. Après presque 15 ans de développement technique, j’ai réussi à trouver la configuration optimale pour le développement de projets Web, intégrant généralement un serveur Web, et de projets plus techniques utilisant des infrastructures Serverless type lambda ou FaaS / CaaS.
J’ai décidé de partager toute cette configuration - m’étant moi-même basé sur des tutoriels de la communauté pour chacune des briques constituant celle-ci - afin que vous même, si vous considérez que cela est pertinent, les mettiez en place chez vous.
Je ne ferai pas, ici, de tutoriel détaillé sur l’installation des différentes briques, les resources nécessaires existant déjà sur la toile et étant constamment mises à jour. Toutefois, je prendrai, ultérieurement, le temps d’expliquer le principe et le fonctionnement de chaque partie dans des articles dédiés.
Sachez qu’à ce jour, le lancement d’un nouveau projet PHP, Python ou Node me prend en moyenne 30 à 60 minutes. Ce temps inclut :
- La configuration de l’environnement local avec base de données et tout le nécessaire,
- La mise en place de domaine sur les environnements de développement et surtout en
https://(très important pour être ISO avec la production), - La mise en place d’un CI/CD incluant le déploiement sur un environnement de test et de production,
- La mise en place d’un déploiement sans coupure avec la possibilité de re-déployer une ancienne version,
- La configuration du serveur et des credentials pour les différents environnements test/production.
Dans certains cas très particuliers, d’autres étapes viendront s’ajouter. Par exemple, s’il est nécessaire d’utiliser les API Google, il faudra créer le projet et le configurer. Mais, dans 90% des cas, la configuration de l’environnement se résume à peu de choses.
L’ensemble des process que j’aborderai part d’un principe simple : si je dois refaire toute la configuration une deuxième fois (par exemple en cas de changement de serveur ou de création d’un nouveau projet identique), je ne souhaite pas perdre autant de temps sur ce qui a été déjà fait. Si vous utilisez des serveurs pour mettre vos projets en ligne et que vous avez besoin d’ajouter un nouveau serveur identique, vous n’allez pas refaire toute l’installation avec la configuration en les copiant-collant.
On attaque le sujet ?
Attaquons donc les grandes lignes que je prendrai le temps de détailler dans de prochains articles :
-
Commençons par le début d’un projet : Git
De nos jours, il est impensable d’avoir un projet qui ne soit pas versionné. Même pour les petits projets, la première chose à faire est de créer un dossier de travail et d’initialiser un Git.
Dans mon cas, j’ai installé sur l’un de mes serveurs un GitLab dont je vais prendre le temps de détailler la configuration.
Voir l’article : Qu’est-ce Git et comment bien configurer un serveur GitLab pour la gestion de ses projets ?
-
Continuons avec Docker, Docker Compose
Dès le moment où le projet est versionné et stocké sur un repos GIT distant, commence la phase de configuration de son environnement de travail afin qu’il soit le plus ISO possible avec la production.
Au même titre que le versionnement, Docker devient un élément presque indispensable pour travailler sur des projets car il permet d’avoir plusieurs versions de PHP, Python, etc., sur votre machine, en cloisonnant les dépendances de chaque projet.
-
Ensuite automatisons nos routes avec un serveur DNS
Dès le moment où vous allez vouloir créer un domaine custom comme uneformation.patiashvili (qui est la version développeur de uneformation.fr) et que le trafic de ce domaine et de l’ensemble de ses sous-domaines doit arriver sur votre ordinateur, au bout d’un moment, mettre à jour
/etc/hostsfinira par vous agacer.La mise en place d’un serveur DNS local sera une première épine à enlever dans la phase d’automatisation des environnements de développement.
-
Peaufinons notre projet avec Traefik pour le routing automatique
Même si vous avez mis en place les DNS pour rediriger le trafic vers votre ordinateur, sans serveur Web qui écoute 80/443 et bien configuré pour tomber sur les bons projets - comme un serveur Apache ou Nginx -, il sera difficile d’orienter le trafic sur le bon dossier.
Traefik est là pour vous enlever la deuxième grosse épine en permettant d’automatiser le routing d’un projet.
-
HTTP c’est bien, mais HTTPs c’est mieux, grâce à Step-ca
Lorsque vous travaillez avec des sites Internet, il est désormais indispensable de le configurer en HTTPs. Sur les domaines publiques, c’est désormais quelque chose de simple à réaliser grâce à LetsEncrypt. Mais lorsque vous travaillez sur des domaines privés, il n’est pas possible d’utiliser cette solution. Il existe donc Step-ca qui jouera le rôle de LetsEncrypt et vous permettra, sans rien faire, d’avoir vos domaines privés en HTTPs.
Step-ca est là pour vous retirer une troisième grosse épine : la génération de certificats pour vos domaines privés.
À partir d’ici, tout votre environnement de développement est prêt et vous offre un gain de temps considérable dans la mise en place d’un nouveau projet. Ne reste plus que l’automatisation du déploiement de votre projet. Celle-ci passe par 2 grandes étapes, que je prendrai le temps de détailler :
-
La configuration de plusieurs serveurs en un clic grâce à Ansible
Qu’il s’agisse d’un serveur de production ou de test, il est primordial de pouvoir automatiser son installation. Cela vous permettra, si vous deviez changer de serveur pour quelque chose de plus gros ou pour faire du load balancing, de ne pas devoir refaire manuellement les différentes commandes sur chaque machine.
Ansible est là pour ça, il va vous permettre d’automatiser l’ensemble de la configuration des serveurs afin qu’ils soient tous ISO.
-
La configuration de vos credentials sur votre projet pour le CI/CD
Toujours grâce à Ansible, vous allez pouvoir automatiser la configuration des variables CI/CD de vos projets GitLab pour chaque serveur. Vous n’aurez ainsi plus qu’à référencer le projet dans votre configuration Ansible pour qu’il soit automatiquement configuré pour déployer sur un ou plusieurs serveurs.
Créer ses propres plugins sur Ansible est le dernier point qui permet d’automatiser la mise en place d’un projet.
À partir de là, je déploie, montre en main, en 2 minutes un nouveau site WordPress ou Ghost. Et c’est là la beauté de cette configuration : dès qu’un nouveau projet est à développer, le plus gros du temps de travail est consacré à la vraie valeur ajoutée du développement et non à sa configuration.
À très vite donc pour le premier point : Commençons par le début d’un projet : Git.


