Nombre de problèmes traversent la vie de votre startup : un mauvais choix technique ou opérationnel qui plombe la boîte, un bug qui résiste à l’étude, une mauvaise configuration qui vide une base de données ou un crash d’un prestataire1. Certains seront de votre fait, d’autres seront subis. Mais quand la boîte a fait faillite, à quoi bon faire la distinction ?
Alors que pouvez-vous faire pour que ça ne mette pas en danger la startup ? Comment vous industrialiser pour atténuer les conséquences des mauvais événements qui arriveront tôt ou tard ?
Vous pourriez vous y prendre de mille façons, mais s’il y a bien un outil qui vous y aidera, c’est git.
C’est quoi, git ?
Habituellement, les logiciels enregistrent les fichiers de façon destructive, c’est-à-dire que la version la plus récente du fichier écrase la précédente, cette dernière n’existe désormais plus.
Git redéfinit ce qu’est un enregistrement. C’est sa fonctionnalité maîtresse, comme tous les logiciels de la famille des VCS (pour Version Control System) : il n’enregistre plus un fichier entier, mais des transformations de lignes et cela sur autant de fichiers que l’on veut. Ces commits d’enregistrement ne sont alors plus destructifs mais historisés et tracés.
Ce changement de paradigme se prête très bien au développement logiciel. L’état d’un comportement logiciel peut impliquer un contrôleur, une entité, un DTO et un service de calcul. Tous ces fichiers forment un tout et doivent être enregistrés ensemble pour correctement représenter la totalité du comportement.
Et que change git pour l’industrialisation ? En fait ça change tout.
Git comme mémoire de la vie de la startup
L’importance de la sauvegarde des données est serinée dans notre métier, il y a même une journée de la sauvegarde2. C’est une bonne chose, mais malheureusement ce n’est pas suffisant puisque ça ne répond qu’à une partie de votre vrai besoin. Pourquoi ? Parce que l’activité de votre startup, ce n’est pas que ses données.
Après tout, quel est l’intérêt de la sauvegarde pour votre business ? Capitaliser vos connaissances pour pérenniser l’activité et éviter tout retour arrière. Or, la façon dont votre startup gère son business, les programmes que vous avez conçus et ses éléments différenciants sur le marché sont autant d’éléments aussi précieux que ses données. C’est là où se trouve votre actif financier et votre core business. Perdre des données signifie indéniablement perdre une part significative de l’activité, mais perdre le core business signifie, lui, la fin de l’essence même de la startup.
Vous avez donc besoin de faire persister ça et de vous souvenir de la raison de tel ou tel choix, autrement vous prenez le risque de les questionner en permanence et de revenir aux mêmes conclusions encore et encore, en perdant du temps et de l’argent au passage.
Par son historisation inaltérable, git mémorise la ligne de vie de tous les événements de la vie de votre startup afin de retrouver le cheminement intellectuel menant à la version actuelle à tout instant.
Git comme catalyseur de l’application du DevOps
Au cœur du mouvement DevOps se trouve un changement de fonctionnement : l’équipe applicative ne délègue plus à l’équipe opérationnelle la vie en production du produit, c’est désormais l’équipe DevOps qui planifie, développe, intègre, délivre et monitore. You build it, you run it. Un sondage d’Atlassian3 de 2020 établit d’ailleurs qu’à travers l’application des 5 fondamentaux CALMS (Culture, Automation, Lean, Measure and Share), le DevOps répond correctement aux besoins métiers :
- 61% des répondants ont vu leur produit s’améliorer,
- 49% ont réduit leur time to market,
- 49% ont augmenté leur fréquence de déploiement.
Ces performances n’arrivent pas par hasard : l’équipe satisfait son besoin de contrôler un périmètre plus grand en créant des normes, et la première d’entre elles est : tout est explicite. Expliciter est une condition sine qua non de la synchronisation entre l’applicatif et l’opérationnel. Pour les raisons que nous avons vu plus haut, git est le meilleur endroit possible pour stocker ce qui doit être explicitement tracé.
Mais l’apport de git dans ce contexte va bien au delà d’un simple stockage car des outils exploitent ces descriptions pour automatiser des pans toujours plus grands du cycle de vie. C’est ainsi que naissent les pratiques de l’intégration continue, le déploiement continu, la conteneurisation, l’infra as code et le gitops.
Git rend explicite tous les attendus techniques du produit. Comme évoqué dans l’article Méthode pour amorcer la transformation DevOps, l’outil promeut le DevOps en servant de socle commun à tous les outils qui mettent en œuvre cette méthode de travail. C’est par git que vous appliquerez le DevOps.
Git comme référentiel de traçabilité
Il y a deux secteurs d’activité que je connais bien dans l’informatique : le bancaire et la santé. Comme vous pouvez vous en douter, ces deux secteurs ont un besoin absolu de tracer les modifications de l’environnement de production : qui a changé quoi, quand et pour quelle raison sont des questions auxquelles toute entreprise de ces domaines doit pouvoir répondre à tout moment4,5.
Les différentes réglementations n’imposent pas de solution technique pour cela, mais git est l’outil tout trouvé. En effet, en branchant les outils de déploiement sur git, quelque chose d’important se produit : git devient une source unique de vérité6, autrement dit le référentiel de toutes les transformations. Ce faisant, l’entreprise profite directement des forces de git en fournissant à l’auditeur des preuves immuables, horodatées et attribuées à un auteur. Tout cela automatiquement.
Bien que tous les secteurs ne soient pas aussi réglementés et qu’il n’y ait pas toujours d’auditeur externe, la traçabilité reste un enjeu majeur pour la pérennité de votre startup : à tout instant, vous avez besoin de connaître l’état de la production et ce qui l’a produit, par exemple pour le suivi des tâches, la communication externe ou la correspondance d’un incident à un déploiement. La startup doit donc agir comme si elle était son propre auditeur.
Si vous souhaitez industrialiser votre startup et changer d’échelle, la récolte de cette information doit se faire par un processus automatisé. Git en tant que source unique de vérité vous garantit une traçabilité fiable tout en minimisant l’énergie nécessaire au suivi.
Git comme vecteur de flexibilité organisationnelle et d’amélioration de la qualité
Le terme ligne de vie évoqué plus haut représente correctement la sécurité apportée par le chaînage historisé d’une suite de commits. Cela dit, le singulier manque de précision : git propose en réalité autant de lignes de vie que l’on veut, que l’on appelle des branches.
En fonction de la façon dont vous souhaitez organiser le travail, votre startup peut choisir un modèle de branches qui servira à deux choses essentielles :
- organiser les tâches,
- protéger les lignes de vie sensibles (ex: celle à envoyer à la production).
Grâce aux branches, deux développeurs peuvent travailler sur des fonctionnalités en parallèle sans risquer la pollution mutuelle. Il n’y a aucune obligation de refusionner les branches dans l’ordre, chacune peut avoir son propre rythme. Pour la startup, cela signifie que vous pouvez prioriser, tester ou mettre en pause certaines tâches sans impacter les autres. Cette flexibilité vous donne la capacité d’être au plus proche des besoins clients et d’apporter un maximum de valeur.
Par convention, certaines branches sont des branches de travail, volatiles donc, tandis que d’autres persistantes sont le support des environnements d’exécutions. C’est à vous de définir les règles qui régissent la fusion de branches : cela peut être la bonne exécution des tests, la validation par un pair ou autre. De ce fait, un effet de cliquet7 apparaît naturellement : puisque que la qualité est garantie par le respect des règles, elle va majoritairement dans le sens de l’amélioration et la production de valeur aussi.
Avec git, vous construisez un produit sur un socle fiable. L’organisation est à la fois plus agile aux changements de situation tout en produisant plus rapidement de la qualité, tant d’un point de vue business que technique.
Pour conclure : git réduit vos dangers et vous industrialise
Par sa fonctionnalité maîtresse, git protège ce qui est important et est le socle de votre industrialisation technique. D’une certaine façon, il pose en permanence des points de sauvegarde et vous assure de satisfaire un Recovery Point Objective (ou RPO).
Rendre explicite l’historique et la totalité du contexte produit automatise naturellement les tâches techniques support. Cette industrialisation de vos processes fait scaler la startup et permet de délivrer plus de qualité, plus rapidement.
L’apport pour votre entreprise est multiple et net, et n’a qu’un faible coût d’usage : l’apprentissage est aisé et l’algorithme de stockage est très efficace (À titre d’exemple, les 1,3 millions de commits du noyau linux8 ne pèsent que 7Gio). Il n’y a donc aucune raison de s’en priver.
Mais ce qui change vraiment la donne avec git, c’est que tout ce que je viens d’évoquer au sujet du logiciel reste vrai pour le reste de la boîte. Vous pouvez utiliser git pour la compta, l’administration, la documentation ou le juridique9. Pour ma part, toute mon entreprise est tracée avec cet outil : les audits, les livrables, les contrats et les échanges partenaires.
https://fr.wikipedia.org/wiki/Incendie_du_centre_de_donn%C3%A9es_d%27OVHcloud_%C3%A0_Strasbourg ↩︎
https://www.babyloneconsulting.fr/nos-articles/blockchain-pour-la-tracabilite-bancaire-une-reponse-efficace-a-la-conformite/ ↩︎
https://www.qualineo.io/post/tracabilite-etablissements-sante-medico-sociaux ↩︎