Qu’est-ce que le déploiement de logiciels ?
- 3 minutes
Le déploiement de logiciels inclut toutes les activités qui rendent un système logiciel disponible pour une utilisation. Le processus de déploiement général se compose de plusieurs activités liées, avec des transitions possibles entre elles. Chaque système logiciel est unique. Le déploiement est donc un processus général qui doit être personnalisé en fonction des exigences ou caractéristiques spécifiques.
Certains utilisent les termes « déploiement » et « installation » de manière interchangeable, mais l’installation de logiciel n’est qu’une partie du processus de déploiement. Le déploiement implique davantage. Les activités de déploiement peuvent inclure les aspects suivants :
- « Mise en rack et empilement » d’un serveur.
- Déploiement d’un logiciel mis à jour sur ce serveur.
- Utilisation d’éléments tels que les scripts et l’IAC (Infrastructure as Code).
- Même marcher dans un bureau avec un lecteur USB, installer manuellement des logiciels sur les ordinateurs.
Le déploiement manuel de logiciels est gourmand en main-d’œuvre et n’est pas bien mis à l’échelle. Grâce à l’automatisation, il est plus rentable et plus facile de garantir la cohérence quand vous déployez de nouveaux logiciels ou mettez à jour des logiciels existants dans une organisation.
Ce parcours d’apprentissage se concentre sur la façon de déployer le meilleur logiciel pour la fiabilité. Ce module traite non seulement du déploiement de logiciels mais également du déploiement de l’infrastructure cloud. Les références au déploiement d’un service ou d’une solution peuvent signifier le déploiement de logiciels, d’une infrastructure cloud, d’une configuration et de tout ce qui est nécessaire à la mise à disposition d’un système logiciel de manière fiable.
Scénario : Déploiement de type épopée
Le mot épopée renvoie à quelque chose de « grand, monumental ou vaste », mais dans le contexte de cette discussion, ce n’est pas une bonne chose. Jez Humble et David Farley utilisent le terme dans leur livre Continuous Delivery : Reliable Software Releases through Build, Test, and Deployment Automation, car il représente un projet ambitieux (et massivement perturbateur). Voici un exemple de la façon dont elle se produit généralement :
- Une organisation développe une application commerciale. Cette application est mise à jour deux fois par an précisément.
- Au cours de ces mises à jour, toutes les nouvelles fonctionnalités, les résolutions de bogues (quelle que soit leur importance) et les mises à jour de dépendances sont déployées.
- Le premier déploiement de l’année est prévu pour le week-end de la fête du Travail, et le second a lieu le week-end après la fête du Thanksgiving.
- Chaque mise à jour est une situation de « toutes les mains sur le pont ». L’équipe d’application, l’équipe de support technique, l’équipe d’infrastructure et la gestion sont toutes impliquées dans le déploiement.
- Les services sont temporairement hors connexion pendant le déploiement.
- L’expérience montre que le déploiement comporte toujours un certain nombre de difficultés. De plus, il est souvent l’objet de changements liés à l’ingénierie à la demande, à la résolution des problèmes et à la gestion de la configuration.
- Ça se passe rarement bien, et quand c'est terminé, cela semble généralement être rafistolé d’une manière non reproductible.
Ce n’est pas une bonne situation de déploiement. La méthode de déploiement de type épopée est une tâche manuelle intense qui présente un certain nombre de problèmes :
- Elle est complexe.
- Elle est stressante.
- Elle est risquée.
- Elle est lente.
- Elle n’est pas reproductible en raison de toutes les étapes complexes qu’elle comprend.
- Plusieurs experts individuels sont souvent nécessaires pour effectuer le déploiement.
Étant donné que ce processus est long et ardu, il doit être planifié à des moments qui provoquent la moindre interruption de la productivité des utilisateurs, ce qui signifie que les temps susceptibles d’être gênants pour l’équipe de déploiement, comme les week-ends et les jours fériés.
Les membres de l’équipe peuvent être tentés de bâcler cette opération titanesque pour qu’elle soit effectuée dans les délais impartis, ce qui entraîne des erreurs de configuration. De plus, les longues périodes qui séparent les déploiements peuvent vous faire oublier la façon exacte dont les choses fonctionnent.
Dilemme du déploiement
Le déploiement de logiciels est une tâche complexe. Quand vous « accumulez » plusieurs changements majeurs, correctifs et ajouts de fonctionnalités pour les déployer en une seule fois, vous augmentez le degré de complexité ainsi que la probabilité que quelque chose se passe mal. De plus, en cas de problème, cette complexité rend plus difficile la recherche de la cause exacte du problème.
La complexité peut également créer des problèmes pour les utilisateurs finaux. En effet, ils risquent de devoir apprendre un grand nombre de nouvelles fonctionnalités tout en étant confrontés à un grand nombre de changements, sans parler des bogues introduits par la complexité du déploiement de type épopée.
Il devrait y avoir une meilleure façon, et il y a. La bonne nouvelle est que la stratégie de déploiement épique traditionnelle n’est pas la seule option. Vous découvrirez une meilleure façon d’effectuer ce processus dans l’unité suivante.