DEV Community

Sergey Shinder
Sergey Shinder

Posted on

Le pipeline le plus rapide n'est pas toujours le meilleur

On m'a demandé un jour de faire passer un pipeline de dix-huit minutes sous les cinq minutes. J'ai réussi. Trois semaines plus tard, on a livré un bug en production qui aurait été attrapé par les tests d'intégration que j'avais justement coupés pour gagner du temps. Leçon retenue à la dure.

Depuis, j'ai une règle simple : avant d'accélérer un pipeline, je me demande ce que chaque étape protège. La compilation protège contre le code qui ne construit pas. Les tests unitaires protègent contre les régressions logiques. Les tests d'intégration protègent contre les mauvaises surprises entre services. Le scan de sécurité protège contre les dépendances trouées. Couper une étape, ce n'est pas gagner du temps, c'est déplacer le risque plus loin dans la chaîne, là où il coûte dix fois plus cher.

La vraie optimisation, ce n'est pas de supprimer, c'est de paralléliser et de mettre en cache intelligemment. Nos dépendances Maven ne changent pas à chaque commit, alors pourquoi les retélécharger à chaque fois ? Un cache bien pensé m'a fait gagner quatre minutes sans toucher à une seule garantie. Les tests lents, je les ai découpés en shards qui tournent en parallèle. Le résultat : sept minutes, et toutes les protections encore en place.

Il y a aussi une question de jugement que personne ne veut aborder. Faut-il vraiment tout faire tourner à chaque commit sur une branche de fonctionnalité ? Chez nous, non. Sur les branches de travail, on fait le strict nécessaire pour un retour rapide. La suite complète, longue et rigoureuse, se déclenche à la fusion vers la branche principale. Ce n'est pas de la paresse, c'est reconnaître que le contexte détermine le niveau de rigueur.

Le piège de la vitesse, c'est qu'elle est visible et flatteuse sur un tableau de bord. La sécurité d'un pipeline, elle, est invisible jusqu'au jour où elle manque. Mon métier consiste souvent à défendre l'invisible contre le séduisant. Un pipeline rapide qui laisse passer des incidents n'est pas rapide, il est juste pressé de vous faire mal.

– Sergey Shinder

Top comments (0)