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. Git ou double
    Une aventure vers les micro-services avec git

    View Slide

  2. En route pour la coke
    Atlantique !

    View Slide

  3. Fabien Lamarque
    Velvet Lemons consulting
    yaml Engineer
    T: @Fabinout
    Association Okiwi

    View Slide

  4. 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

    View Slide

  5. 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

    View Slide

  6. UI
    Data
    Access
    Service
    Layer
    API

    View Slide

  7. Architecture microservice
    UI
    Data
    Access
    Service
    Layer
    Validation
    service
    Backend For Frontend

    View Slide

  8. Qu’est-ce qu’une application ?
    ● Une unité de code compilée, qui peut se déployer sans coordination avec
    d’autres équipes

    View Slide

  9. UI
    Data
    Access
    Service
    Layer
    Validation
    service
    Backend For Frontend

    View Slide

  10. View Slide

  11. Est-ce que je dois utiliser docker pour faire des
    microservices ?

    View Slide

  12. Build Once, Run Everywhere
    -> unified delivery flow
    Stateless App
    -> ready to scale architecture

    View Slide

  13. Est-ce que dans mon projet, je devrais faire des
    microservices ?
    Probablement pas

    View Slide

  14. Cette migration
    micro-service, comment ça
    se passe ?
    On réécrit tout
    On extrait des microservices

    View Slide

  15. View Slide

  16. Solution 1 :
    Abandonner le build once, run everywhere
    une branche par environnement…. par application
    Utiliser des tags pour le code et les images

    View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. Le coeur du problème, c’est le couplage
    UI
    Data
    Access
    Service
    Layer
    Validation
    service
    Backend For Frontend

    View Slide

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

    View Slide

  22. 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

    View Slide

  23. En pratique deux manières de le faire
    Git submodule : un repository de repositories

    View Slide

  24. 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

    View Slide

  25. 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

    View Slide

  26. 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

    View Slide

  27. Je vous remercie
    poule-request

    View Slide