CodeGym /Cours /Frontend SELF FR /Déploiement du code sur le serveur

Déploiement du code sur le serveur

Frontend SELF FR
Niveau 48 , Leçon 2
Disponible

12.1 Apporter des modifications au code

Comme je l'ai déjà mentionné ci-dessus, tout le développement moderne consiste à apporter de petites modifications au code. Des millions de programmeurs s'en sont occupés pendant des décennies, donc ce processus est déjà rodé, standardisé et formalisé de toutes les manières possibles.

Tout d'abord, il existe un programme spécial pour stocker le code - Git. Git est un système de gestion de versions distribué, utilisé pour suivre les modifications du code et coordonner le travail des programmeurs sur des projets communs.

Git permet aux développeurs de créer des branches dans le projet, tout en conservant un historique complet des modifications et la possibilité de revenir à n'importe quel état du fichier. Cela assure une fusion efficace des modifications et la résolution des conflits, faisant de Git l'outil principal pour le travail collectif sur le code dans le développement logiciel moderne.

Deuxièmement, le processus d'apport de modifications au code est également standardisé. Habituellement, pour chaque nouvelle fonctionnalité, vous créez une nouvelle branche dans git, vous y apportez vos modifications sous forme d'une série de commits, puis vous envoyez une Pull Request à votre chef d'équipe ou à un collègue pour qu'il fasse un Code Review et confirme vos changements.

Si tout s'est bien passé, vos modifications sont fusionnées dans la branche dev, une compilation automatique du projet est lancée ainsi que des tests. Beaucoup de tests.

12.2 Compilation du projet

Avant de tester le projet ou de le télécharger sur le serveur, il doit être compilé.

La compilation de projets est le processus de compilation du code source d'un projet en programmes exécutables ou autres formats exécutoirs, souvent avec inclusion de tests et de déploiement. C'est un aspect clé du développement logiciel, garantissant la préparation du programme à l'utilisation.

La compilation n'est pas la même chose que la simple compilation, mais la compilation est souvent une partie du processus de compilation. Après la compilation, vous pouvez souvent avoir des dizaines voire des centaines de fichiers à télécharger sur divers serveurs.

Les compilateurs peuvent être de bas niveau :

Maven et Gradle sont largement utilisés dans les projets Java pour la gestion des dépendances et la compilation des projets.

Apache Ant est un autre outil de compilation pour les projets Java, offrant une grande flexibilité dans l'écriture de scripts de compilation.

MSBuild est utilisé pour compiler des projets créés avec Microsoft Visual Studio.

Make est un outil de compilation classique utilisant un Makefile pour définir des règles de compilation, particulièrement populaire dans les projets en C et C++.

Webpack est souvent utilisé pour compiler des applications JavaScript, en gérant les dépendances et modules.

Gulp et Grunt sont des outils qui aident à automatiser les tâches fréquemment exécutées dans le développement d'applications web, comme la minification des fichiers et la compilation du SCSS en CSS.

Les compilateurs peuvent également être de haut niveau. Plus de détails ci-dessous.

12.3 CI/CD

CI/CD (Continuous Integration/Continuous Delivery) est une méthodologie qui implique une fusion continue des modifications de toutes les branches de développement dans la branche principale et des tests et déploiements automatiques de ces modifications. Cela permet d'identifier et de corriger rapidement les erreurs, augmentant ainsi l'efficacité et la rapidité du développement.

L'un des systèmes CI/CD les plus répandus, bien qu'un peu dépassé, est Jenkins. Si vous travaillez dans une petite entreprise, il y a 80% de chances qu'elle l'utilise.

Jenkins est un système automatisé populaire utilisé pour l'intégration et la livraison continues (CI/CD). Jenkins permet d'automatiser diverses étapes du développement logiciel, y compris la compilation, les tests et le déploiement, ce qui améliore la qualité du code et accélère le processus de développement.

Si vous entrez dans une grande entreprise, il peut y avoir 5 autres options au choix :

TeamCity est un système commercial puissant de JetBrains, offrant une intégration approfondie avec différents environnements de développement et de test.

GitLab CI est une partie intégrée de GitLab, assurant l'intégration continue et la livraison avec la possibilité de configuration via des fichiers YAML.

CircleCI est un service cloud CI/CD, supportant l'automatisation des tests et du déploiement pour de nombreux projets.

Travis CI est l'un des premiers services CI basés sur le cloud, utilisé dans de nombreux projets open-source, bien intégré avec GitHub.

Bamboo est un produit d'Atlassian, étroitement intégré avec d'autres outils de cette entreprise, tels que Jira et Bitbucket.

Vous n'avez pas besoin de les connaître ou de savoir comment travailler avec eux : en général, une entreprise dispose d'un spécialiste DevOps qui configure tous ces processus de compilation. Il vous suffit de savoir qu'ils existent et de comprendre de quoi il s'agit lorsque l'on mentionne Jenkins, CI/CD ou « continuous integration » dans une conversation.

12.4 Livraison du projet sur le serveur

Il ne suffit pas d'écrire le projet, il doit aussi être sur votre serveur. En réalité, le déploiement d'un projet sur le serveur est le processus de mise en place et d'activation d'une application web sur un serveur de manière à ce qu'elle soit accessible aux utilisateurs via Internet.

Cela inclut 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é.

Et comment pensez-vous que votre code va atterrir sur le serveur ? Quelqu'un va le télécharger là-bas ? Ou peut-être vous connecterez-vous par SSH à un serveur distant, téléchargerez quelques fichiers et configurerez tout ? Détendez-vous : personne ne fait ça comme ça maintenant. Maintenant, il y a Docker.

Docker est une plateforme pour le développement, la livraison et l'exécution d'applications grâce à la containerisation. Docker facilite la création, le déploiement et l'exécution d'applications en utilisant des conteneurs, qui permettent d'emballer une application avec tout son environnement et ses dépendances en un seul objet compact, assurant la cohérence de l'environnement à toutes les étapes du développement, des tests et de la production.

Docker permet d'emballer votre projet ou vos projets dans un conteneur Docker. C'est un peu comme une machine virtuelle, mais très légère.

Et bien que sur n'importe quel forum sur Docker, si vous l'appelez une machine virtuelle, on risque de vous jeter des tomates, mais si vous savez ce qu'est une machine virtuelle, vous pouvez penser à un conteneur Docker comme à une machine virtuelle. Seulement très légère.

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 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 rapides.

Et le déploiement d'un projet avec Docker simplifie grandement le processus de déploiement d'applications, assurant rapidité et fiabilité. Le projet est emballé 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 serveur et permet de facilement monter et descendre l'échelle de l'application en ajoutant ou en supprimant des conteneurs en fonction de la charge. Tout le monde est passé à Docker - c'est très pratique et très simple.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION