3.1 Apportons des modifications au code
Comme je l'ai déjà mentionné, le développement logiciel consiste à apporter de petits changements au code. Ce processus est utilisé par des millions de programmeurs depuis des décennies, ce qui a conduit à son affinage, sa standardisation et sa formalisation de toutes les manières possibles.
Pour stocker le code, il y a un programme spécial – Git. Git – c'est un système de gestion de versions distribué. Il ne se contente pas de stocker le code, mais suit également toutes les modifications et aide les programmeurs à travailler ensemble sur des projets sans se gêner mutuellement.
Avec Git, les développeurs peuvent créer différentes versions du projet (branches), conserver un historique complet des modifications et même revenir à n'importe quel moment dans le passé. C'est comme une machine à remonter le temps pour le code ! Git aide à fusionner les modifications et à résoudre les conflits, c'est pourquoi il est devenu l'outil principal pour le travail en équipe dans le développement moderne.
3.2 Assemblage du projet
Avant de tester ou de charger le projet sur le serveur, il faut l'assembler.
Assemblage de projets – c'est le processus de compilation du code source du projet en programmes exécutables ou d'autres formats exécutables, souvent avec des tests et déploiements intégrés. C'est un aspect clé du développement logiciel, garantissant que le programme est prêt à être utilisé.
L'assemblage n'est pas simplement une compilation, bien que la compilation en soit souvent une partie. Après l'assemblage, vous pouvez vous retrouver avec des dizaines ou même des centaines de fichiers à télécharger sur divers serveurs.
Les assembleurs peuvent être de bas niveau, tels que :
Maven et Gradle – largement utilisés dans les projets Java pour gérer les dépendances et l'assemblage des projets.
Apache Ant – un autre outil pour l'assemblage de projets Java, offrant une grande flexibilité dans l'écriture des scripts d'assemblage.
MSBuild – utilisé pour l'assemblage des projets créés avec Microsoft Visual Studio.
Make – un outil d'assemblage classique utilisant Makefile pour définir des règles d'assemblage, particulièrement populaire dans les projets C et C++.
Webpack – souvent utilisé pour assembler des applications JavaScript, gérant les dépendances et les modules.
Gulp et Grunt – des outils qui aident à automatiser les tâches fréquentes dans le développement d'applications web, comme la minification des fichiers et la compilation SCSS en CSS.
Il existe également des assembleurs de haut niveau. À ce propos – ci-dessous.
3.3 CI/CD
CI/CD (Continuous Integration/Continuous Delivery) – une méthodologie qui implique une fusion continue des modifications de toutes les branches de développement dans la branche principale, ainsi que des tests et déploiements automatiques de ces modifications. Cela permet de détecter et corriger rapidement les erreurs, augmentant l'efficacité et la vitesse du développement.
L'une des plus répandues, bien qu'un peu dépassée, des systèmes CI/CD – est Jenkins. Si tu travailles dans une petite entreprise, il y a 80 % de chances qu'ils utilisent précisément cela.
Jenkins – un système automatisé populaire utilisé pour l'intégration continue et la livraison (CI/CD). Jenkins permet d'automatiser diverses étapes du développement logiciel, y compris l'assemblage, les tests et le déploiement, ce qui améliore la qualité du code et accélère le processus de développement.
Si tu te retrouves dans une grande entreprise, il pourrait y avoir jusqu'à 5 autres options :
TeamCity – un puissant système commercial de JetBrains. Offre une intégration profonde avec divers environnements de développement et de test.
GitLab CI – partie intégrée de GitLab, offrant une intégration continue et une livraison avec la possibilité de configuration via des fichiers YAML.
CircleCI – un service cloud CI/CD, supporte 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 d'Atlassian, fortement intégré avec d'autres outils de cette entreprise, tels que Jira et Bitbucket.
Pas besoin de les connaître et de savoir travailler avec – généralement, les entreprises ont des spécialistes DevOps qui configurent tous ces processus. Il suffit de savoir qu'ils existent et de comprendre de quoi il s'agit si dans une conversation on mentionne Jenkins, CI/CD ou "continuous integration".
3.4 Livraison du projet sur le serveur
Écrire le projet c'est une chose – il faut qu'il se retrouve sur ton serveur. En gros, déployer un projet sur le serveur – c'est le processus de placement et d'activation d'une application web sur un serveur de manière à ce qu'elle soit accessible aux utilisateurs via Internet.
Ce processus comprend le transfert des fichiers du projet sur le serveur, la configuration de l'environnement serveur, des bases de données, des dépendances, ainsi que la configuration des paramètres réseau et de sécurité.
Comment penses-tu que ton code parviendra au serveur ? Quelqu'un va-t-il le télécharger là-bas ? Ou peut-être vas-tu te connecter en SSH à un serveur distant, y télécharger quelques fichiers et tout configurer ? Relax : plus personne ne fait ça. Maintenant, il y a Docker.
Docker – c'est une plateforme pour développer, livrer et exécuter des applications avec des conteneurs. Docker simplifie la création, le déploiement et l'exécution d'applications en les empaquetant avec toutes les dépendances et l'environnement dans un seul objet compact. Cela assure la cohérence de l'environnement à toutes les étapes : du développement au test et à la production.
Docker permet d'empaqueter ton projet ou tes projets dans un conteneur Docker. C'est un peu comme une machine virtuelle.
Et bien que sur n'importe quel forum Docker, on te lancera des tomates si tu l'appelles "machine virtuelle", tu peux penser au conteneur Docker comme une machine virtuelle. Mais beaucoup plus léger.
En essence, un conteneur Docker est une "machine virtuelle virtuelle". Les machines virtuelles incluent une copie complète du système d'exploitation, du noyau 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 rapides.
Déployer un projet avec Docker simplifie grandement le processus, offrant rapidité et fiabilité. Le projet est empaqueté dans des conteneurs Docker qui peuvent être facilement déplacés et exécutés sur n'importe quel système supportant Docker.
Cela élimine les problèmes liés aux différences dans les environnements serveurs et permet de facilement mettre à l'échelle l'application en ajoutant ou supprimant des conteneurs selon la charge. Tout le monde est passé à Docker – c'est tellement pratique et simple.
GO TO FULL VERSION