L'intégration Continue
Pour quels besoins?
Des exigences en amont
Capacité de reporting
Pour de gros projets, il est essentiel d'avoir un certain nombre d'éléments permettant d'indiquer l'avancement concret du développement, afin de rassurer le client et de détecter les retards précocément. Lorsqu'un client ou votre manager souhaite connaître l'avancement de vos travaux sans avoir la moindre idée de ce que vous faites exactement, il ne sait généralement vous poser que 2 questions:
- A quel pourcentage d'avancement est-on?
- Combien de temps reste-t-il avant de terminer?
Capacité de release
Un gros client souhaite une version adaptée? Une faille de sécurité à corriger en urgence? L'intégration de nouvelles fonctionnalités anticipée? Ces situations entrainant des déploiements imprévues est souvent l'occasion d'un branle-bas de combat. L'intégration de continue a cette spécificité qui permet d'avoir une capacité de release en continu. Plus simplement, les développeurs sont capables de mettre en place une version stable de release en un temps record.
Pourquoi cela? Car un référentiel versionné, associé à une batterie de tests de validation, permet d'assurer que l'application est conforme aux attentes et n'a pas subit de régression. La phase de recettage est ainsi réduite au minimum. Bien entendu, il est possible en cas de développement spécifique à un client de créer une branche de développement dédiée, pour ne pas impacter le reste de l'application.
Réactivité face au changement
Cette capacité de release, comme on l'a vu, nous permet également de gérer efficacement tout changement imprévu dans la phase de développement. Une fois l'environnement mis en place, il est simple de créer de nouveaux projets, d'en modifier des précédents et de contrôler l'avancement des actuels.
Une maitrise d'oeuvre contrôlée
Coordination des équipes de développement
Un projet piloté par intégration continue permet d'avoir à sa disposition un ensemble de graphes et d'éléments chiffrés. Ils sont de précieux atouts pour le chef de projet, qui peut ainsi, sans même consulter son équipe, voir tout écart de planning en temps réel et ré-adapter les charges et les délais en conséquence.
Abstraction de la technique
La productivité d'un développeur est fortement impacté par tout élément susceptible d'atténuer sa concentration sur le code. Or au-delà du développement pur, un développeur doit bien souvent se préoccuper de bien d'autres chose. Voici un exemple classique:
- Test du code
- Commit son code
- Update sur le serveur de test
- Compilation sur le serveur de test
- Lancement des tests de non-régression
- Déploiement sur le serveur d'application
- Test de l'application
- Etc.