1. Apporter des modifications au code
Comme je l’ai déjà dit, le développement logiciel se résume à apporter de petits changements au code. Ce processus mobilise des millions de programmeurs depuis des décennies, ce qui a conduit à son affinage minutieux, sa standardisation et sa formalisation par tous les moyens possibles.
Pour stocker le code, il existe un programme dédié – Git. Git est un système de gestion de versions distribué. Il ne se contente pas de stocker le code : il suit toutes les modifications et aide les programmeurs à travailler ensemble sur des projets sans se gêner 🤝.
Avec Git, les développeurs peuvent créer différentes versions du projet (branches), conserver l’historique complet des modifications et même revenir à n’importe quel point dans le passé. C’est comme une machine à remonter le temps pour le code ! Git aide à fusionner les changements et à résoudre les conflits, c’est pourquoi il est devenu l’outil principal du travail en équipe dans le développement moderne. 👩💻
2. Construire le projet
Avant de tester le projet ou de le charger sur le serveur, il faut le construire.
🏗️ La construction (build) d’un projet est le processus de compilation du code source en programmes exécutables ou autres formats lançables, incluant souvent les tests et le déploiement. C’est un aspect clé du développement logiciel qui garantit que le programme est prêt à être utilisé.
La construction n’est pas qu’une simple compilation, bien que la compilation fasse souvent partie du processus. Une fois le build terminé, vous pouvez vous retrouver avec des dizaines, voire des centaines de fichiers à envoyer vers différents serveurs.
Les outils de build peuvent être de bas niveau, tels que :
- ☕ Maven et Gradle – largement utilisés dans les projets Java pour la gestion des dépendances et la construction des projets.
- 🐜 Apache Ant – un autre outil de build pour les projets Java, offrant une grande flexibilité dans l’écriture de scripts de construction.
- 🖥️ MSBuild – utilisé pour construire les projets créés avec Microsoft Visual Studio.
- ⚙️ Make – un outil de build classique utilisant un Makefile pour définir les règles de construction, particulièrement populaire dans les projets C et C++.
- 🌐 Webpack – souvent utilisé pour la construction d’applications JavaScript, en gérant dépendances et modules.
- 📜 Gulp et Grunt – des outils qui aident à automatiser les tâches fréquemment exécutées dans le développement web, comme la minification des fichiers et la compilation du SCSS en CSS.
Il existe aussi des outils de build de plus haut niveau. Nous en parlerons ci‑dessous.
3. CI/CD
🔄 CI/CD (Continuous Integration/Continuous Delivery) est une méthodologie qui suppose la fusion continue des changements de toutes les branches de développement vers la branche principale, ainsi que des tests et un déploiement automatisés. Cela permet de détecter et corriger rapidement les erreurs, augmentant l’efficacité et la vitesse de développement.
L’un des systèmes CI/CD les plus répandus, quoique un peu vieillissant, est Jenkins. Si vous travaillez dans une petite entreprise, il y a 80 % de chances que ce soit justement celui‑là qui soit utilisé.
🤖 Jenkins est une plateforme d’automatisation populaire utilisée pour l’intégration et la livraison continues (CI/CD). Jenkins permet d’automatiser différentes étapes du développement logiciel, y compris la construction, les tests et le déploiement, ce qui améliore la qualité du code et accélère le processus de développement.
Dans une grande entreprise, vous aurez souvent le choix entre encore 5 options :
- 🚦 TeamCity – une puissante solution commerciale de JetBrains. Propose une intégration approfondie avec divers environnements de développement et de test.
- 📝 GitLab CI – partie intégrante de GitLab, assure l’intégration et la livraison continues avec une configuration via des fichiers YAML.
- ☁️ CircleCI – un service CI/CD dans le cloud, prenant en charge l’automatisation des tests et du déploiement pour de nombreux projets.
- 🦑 Travis CI – l’un des premiers services CI cloud, utilisé dans de nombreux projets open source. Bien intégré avec GitHub.
- 🎍 Bamboo – un produit Atlassian, étroitement intégré avec d’autres outils de la société tels que Jira et Bitbucket.
Vous n’avez pas besoin de tous les connaître ni de savoir les utiliser — en général, il y a des spécialistes DevOps dans l’entreprise qui mettent en place tous ces processus. Il vous suffit de savoir qu’ils existent et de comprendre de quoi il est question si, dans une conversation, on mentionne Jenkins, le CI/CD ou « intégration continue ».
4. Livrer le projet sur un serveur
Écrire un projet ne suffit pas — il doit encore se retrouver sur votre serveur. En général, le déploiement (deploy) d’un projet sur un serveur est le processus de mise en place et d’activation d’une application web sur un serveur afin qu’elle soit accessible aux utilisateurs via Internet 🚚.
Ce processus inclut le transfert des fichiers du projet sur le serveur, la configuration de l’environnement serveur, des bases de données et des dépendances, ainsi que la configuration réseau et la sécurité 😅.
Et comment, selon vous, votre code arrive‑t‑il sur le serveur ? Quelqu’un va‑t‑il l’y téléverser ? Ou allez‑vous vous connecter en SSH à un serveur distant, y déposer quelques fichiers et tout configurer ? Détendez‑vous : personne ne fait plus ça. Désormais, il y a Docker.
🐳 Docker est une plateforme pour développer, livrer et exécuter des applications au moyen de conteneurs. Docker simplifie la création, le déploiement et l’exécution des applications en les empaquetant avec toutes leurs dépendances et leur environnement dans un objet compact unique. Cela garantit la cohérence de l’environnement à toutes les étapes : du développement aux tests et à la production.
Docker permet d’empaqueter votre projet, ou plusieurs projets, dans un conteneur Docker. C’est une sorte de machine virtuelle.
Et même si, sur n’importe quel forum Docker, on vous tombera dessus si vous l’appelez « machine virtuelle », vous pouvez considérer un conteneur Docker comme une machine virtuelle — simplement beaucoup plus légère.
En substance, un conteneur Docker est une « machine virtuelle » d’un genre particulier. Les machines virtuelles incluent une copie complète du système d’exploitation, du noyau de l’OS et du matériel virtuel, tandis que les conteneurs Docker partagent le noyau de l’hôte et peuvent être plus légers et plus rapides ⚡.
Le déploiement d’un projet avec Docker simplifie fortement le processus, en offrant rapidité et fiabilité. Le projet est empaqueté dans des conteneurs Docker qu’il est facile de déplacer et d’exécuter sur tout système prenant en charge Docker 🚢.
Cela élimine les problèmes liés aux différences entre environnements serveur et permet de faire évoluer facilement l’application en ajoutant ou en supprimant des conteneurs selon la charge. Tout le monde est passé à Docker – c’est très pratique et très simple.
GO TO FULL VERSION