Kaster lys over strategier for kodeopbevaring

Mono-repo og Multi-repo er to hovedstrategier til hosting og styring af kode gennem Git. Vi diskuterer både strategierne og deres fordele og ulemper i detaljer.

Introduktion

De fleste af de moderne projekter administreres og hostes på Git. Git er blevet standardplatformen for distribueret kildekodestyring, versionskontrol og samarbejde fra hvor som helst i verden. Git er hurtigt og effektivt. Der er to hovedtilgange til at hoste og administrere din Git-kode:

Før vi graver ind i disse tilgange, lad os forstå, hvordan repo fungerer.

Hvad er Repos?

Et arkiv (Repo) indeholder alle mapper og filer i dit projekt. Den indeholder også oplysninger om brugere, personer og computere.

Depotdataene er versionsstyret. En repo kan ejes af en enkeltperson eller en gruppe af teammedlemmer.

Git er et depot. Det kan være offentligt, privat eller internt. GitHub er en hostingtjeneste for Git repository og har en brugergrænseflade.

Git giver versionskontrol og kodedelingsfunktioner, men det, der gør Git anderledes, er, at hvis udviklere vil lave nogle ændringer i deres filer, kan de kopiere hele lageret til deres lokale system. Således, selvom en udvikler ikke har skriveadgang til et bestemt projekt, kan de kopiere indholdet lokalt og ændre det (kaldet forking).

Yderligere, hvis udvikleren ønsker at dele lokalt lavede ændringer, kan de sende en “pull request” til ejeren af ​​projektet.

Et projekt kan have en enkelt service. Hvis dit projekt har flere arbejdsgange, kan du oprette flere tjenester for hver arbejdsgang. De fleste udviklere foretrækker at opdele større projekter i mindre uafhængige tjenester, der har en eller flere funktioner. Hver tjeneste kan løse forskellige forretningsproblemer. Med populariteten af ​​serverløse rammer kan brugere få adgang til funktioner som tjenester.

  Alt du behøver at vide om co-authoring i Excel

Når du først har oprettet disse funktioner-som-tjenester og implementeret dem, er næste trin at strukturere og versionskontrollere dem – du kan have alle dine tjenester i ét lager (mono-repo) – eller have et separat lager for hver service du har ( multi-repo)!

Hvad er en Mono-repo?

I en mono-repo tilgang kan du opbevare alle dine tjenester i et enkelt (mono) lager. Du kan stadig implementere og administrere hver tjeneste uafhængigt. Tjenesterne kan dele fælles biblioteker og kode.

Virksomheder som Facebook, Google og Dropbox bruger mono-repo.

Fordele ved Mono-repo

Mono-repo tilgang har mange fordele:

  • Et enkelt sted at gemme al projektkoden og kan tilgås af alle i teamet
  • Nem at genbruge og dele kode, samarbejde med teamet
  • Let at forstå effekten af ​​din ændring på hele projektet
  • Bedste mulighed for kode-refaktorering og store ændringer i kode
  • Teammedlemmer kan få et overblik over hele projektet
  • Nem at håndtere afhængigheder

Ulemper ved Mono-repo

Selvfølgelig har mono-repo nogle ulemper, den vigtigste er ydelsen. Hvis dit projekt vokser, og flere filer tilføjes hver anden dag, kan udtjekning, pull og andre handlinger blive langsomme, og filsøgninger kan tage længere tid.

Desuden, hvis du hyrer en masse uafhængige entreprenører til dit projekt, er det måske ikke så sikkert at give dem adgang til hele kodebasen.

Desuden er det vanskeligt at implementere Continuous Deployments (CD), fordi mange mennesker kan tjekke deres ændringer ind, og dit Continuous Integration (CI)-system skal muligvis lave flere genopbygninger.

  21 bedste Pastebin-alternativer til at dele kode og tekst

Store virksomheder, der bruger mono-repos, har skræddersyede værktøjer til at håndtere opskaleringsproblemerne. For eksempel bruger Facebook et brugerdefineret filsystem og kildekontrol.

Hvad er en Multi-repo?

I en multi-repo-tilgang er der flere repositories, der er vært for flere biblioteker og tjenester i et projekt. Hvis en tjeneste ændres, skal udviklere kun genopbygge denne tjeneste og ikke hele projektet. Enkeltpersoner og teams kan arbejde på deres specifikke tjenester, og de får kun adgang til de nødvendige tjenester.

Virksomheder som Netflix og Amazon bruger multi-repos.

Fordele ved Multi-repo

Antallet af virksomheder, der anvender multi-repo, er langt flere end dem, der går efter mono-repo, på grund af følgende årsager:

  • Hver tjeneste og bibliotek har sin egen versionering
  • Kodeudtjekning og -udtræk er små og separate, så der er ingen præstationsproblemer, selvom projektstørrelsen vokser
  • Teams kan arbejde selvstændigt og behøver ikke at have adgang til hele kodebasen
  • Hurtigere udvikling og fleksibilitet
  • Hver tjeneste kan frigives separat og have sin egen implementeringscyklus, hvilket gør CI og CD nemmere at implementere
  • Bedre adgangskontrol – alle hold behøver ikke have fuld adgang til alle bibliotekerne – men kan få læseadgang, hvis de har brug for

Ulemper ved Multi-repo

  • De afhængigheder og biblioteker, der bruges på tværs af tjenester og projekter, skal jævnligt synkroniseres for at få den nyeste version
  • Opmuntrer til en fortyndet kultur på et tidspunkt, hvilket fører til duplikatkode og individuelle teams, der forsøger at løse det samme problem
  • Hvert team kan følge et andet sæt bedste praksis for deres kode, hvilket forårsager vanskeligheder med at følge almindelige bedste praksis
  Sådan gemmer du en e-mail på din harddisk

Forskelle mellem Mono og Multi Repo

Lad os rekapitulere forskellene mellem mono-repo og multi-repo:

Mono-repo
Multi-repo
Al koden for alle en organisations projekter ligger i et centralt lager
Hver tjeneste og projekt har et separat lager
Teams kan samarbejde og arbejde sammen; de kan se hinandens ændringer
Teams kan arbejde selvstændigt; individuelle ændringer påvirker ikke ændringer fra andre teams eller projekter
Hver person får adgang til hele projektstrukturen
Administratorer kan begrænse adgangskontrol til det projekt eller den tjeneste, som udvikleren har brug for adgang til
Opskaleringsproblemer kan opstå, hvis projektstørrelsen bliver ved med at vokse
God ydeevne på grund af den begrænsede kode og mindre serviceenheder
Svært at implementere Continuous Deployment (CD) og Continuous Integration (CI)
Udviklere kan nemt opnå CD og CI, fordi de kan bygge tjenester uafhængigt
Udviklere kan nemt dele biblioteker, API’er og anden almindelig kode, når de opdateres i det centrale lager
Eventuelle ændringer af biblioteker og anden almindelig kode bør periodisk synkroniseres for at undgå problemer senere

Konklusion

Både mono-repo og multi-repo er lige populære, og hvilken der er bedst afhænger af dit projektstørrelse, projektkrav og niveauet af versionering og adgangskontrol, du har brug for.

Mono-repo favoriserer konsistens, hvorimod multi-repo fokuserer på afkobling. Mens i en mono-repo kan hele teamet se ændringer udført af én person, opretter multi-repo en separat repo for hvert team, som kun har adgang til de nødvendige tjenester. Hvis du vil bruge en kombination af mono-repo og multi-repo til dine projekter, kan du gå efter metaet værktøj til at administrere flere projekter og biblioteker.

Du kan også være interesseret i Gratis ressourcer til at lære Git.