Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Git ou double - bdx.io

Git ou double - bdx.io

L'utilisation de Git dans des microservices

Fabien Lamarque

November 15, 2019
Tweet

More Decks by Fabien Lamarque

Other Decks in Technology

Transcript

  1. Le vieux monde se meurt, le nouveau monde tarde à

    apparaître et dans ce clair-obscur surgissent les monstres. Antonio Gramsci Francisco Goya - Saturno devorando a su hijo
  2. Qu’est-ce que c’est qu’un microservice ? Ce n’est pas un

    monolithe Une tentative de s’écarter de la grosse pile de bouse, autrement appelé, le monolithe
  3. Qu’est-ce qu’une application ? • Une unité de code compilée,

    qui peut se déployer sans coordination avec d’autres équipes
  4. Solution 1 : Abandonner le build once, run everywhere une

    branche par environnement…. par application Utiliser des tags pour le code et les images
  5. Le coeur du problème, c’est le couplage UI Data Access

    Service Layer Validation service Backend For Frontend
  6. Solution 2 : le mono repo UI Data Access Service

    Layer Validation service Backend For Frontend
  7. Qui a un mono repo Facebook, Google(?), Twitter: With thousands

    of commits a week across hundreds of thousands of files, Facebook’s main source repository is enormous—many times larger than even the Linux kernel, which checked in at 17 million lines of code and 44,000 files in 2013. And while conducting performance tests, the test repository Facebook used were as follows: • 4 million commits • Linear history • ~1.3 million files • The size of the .git directory was roughly 15GB • The size of the index file was 191MB https://www.atlassian.com/git/tutorials/monorepos
  8. des nouvelles commandes git clone -> git clone --recursive git

    pull -> git submodule update --init --recursive ajout d’un nouveau repository -> git submodule add Git push -> foreach(service in mainRepo) : git push service git diff -> git diff --submodule=diff
  9. Résumé de git submodule Complexe Nécessite un niveau avancé de

    Git Gestion par référence de SHA sur le repository Parent des submodules Le merge hell devient insoutenable Puissant Permet d’avoir une feature qui spanne sur différentes applications Permet de gérer des droits sur des submodules Hyper efficace si bien outillé à l’échelle d’une entreprise
  10. Deuxième manière de faire : 1 repository & x folders

    Simple à utiliser Gestion des tags facile Revue de code plus lisible/facile Plus facile d’embarquer des nouveaux collaborateurs Tout le monde a la même hiérarchie de dossiers Les hooks de CI/CD sont sur des dossiers Scale mal impossibilité de gérer les droits