Aruncă lumină asupra strategiilor de depozit de coduri

Mono-repo și Multi-repo sunt două strategii principale pentru găzduirea și gestionarea codului prin Git. Discutăm în detaliu atât strategiile, cât și avantajele și dezavantajele acestora.

Introducere

Majoritatea proiectelor moderne sunt gestionate și găzduite pe Git. Git a devenit platforma standard pentru gestionarea codului sursă distribuit, controlul versiunilor și colaborarea de oriunde în lume. Git este rapid și eficient. Există două abordări principale pentru a găzdui și gestiona codul Git:

Înainte de a explora aceste abordări, să înțelegem cum funcționează repo.

Ce sunt Repos?

Un depozit (Repo) conține toate folderele și fișierele proiectului dumneavoastră. De asemenea, conține informații despre utilizatori, oameni și computere.

Datele din depozit sunt controlate de versiune. Un repo poate fi deținut de o persoană sau de un grup de membri ai echipei.

Git este un depozit. Poate fi public, privat sau intern. GitHub este un serviciu de găzduire al depozitului Git și are o interfață cu utilizatorul.

Git oferă control versiuni și funcții de partajare a codului, totuși, ceea ce îl face diferit pe Git este că, dacă dezvoltatorii doresc să facă unele modificări la fișierele lor, pot copia întregul depozit în sistemul lor local. Astfel, chiar dacă un dezvoltator nu are acces de scriere la un anumit proiect, acesta poate copia conținutul local și le poate modifica (numit forking).

În plus, dacă dezvoltatorul dorește să partajeze modificările efectuate la nivel local, poate trimite o „cerere de tragere” proprietarului proiectului.

Un proiect poate avea un singur serviciu. Dacă proiectul dvs. are mai multe fluxuri de lucru, puteți crea mai multe servicii pentru fiecare flux de lucru. Majoritatea dezvoltatorilor preferă împărțirea proiectelor mai mari în servicii independente mai mici, având una sau mai multe funcții. Fiecare serviciu poate rezolva diverse probleme de afaceri. Odată cu popularitatea cadrelor fără server, utilizatorii pot accesa funcții ca servicii.

  Cele mai bune 10 instrumente de informații despre vânzări pentru companii în 2023

Odată ce creați aceste funcții ca servicii și le implementați, următorul pas este să le structurați și să le controlați versiunile – puteți avea toate serviciile într-un singur depozit (mono-repo) – sau aveți un depozit separat pentru fiecare serviciu pe care îl aveți ( multi-repo)!

Ce este un Mono-repo?

Într-o abordare mono-repo, vă puteți păstra toate serviciile într-un singur depozit (mono). Puteți încă implementa și gestiona fiecare serviciu în mod independent. Serviciile pot partaja biblioteci și coduri comune.

Companii precum Facebook, Google și Dropbox folosesc mono-repo.

Avantajele Mono-repo

Abordarea mono-repo are multe avantaje:

  • Un singur loc pentru a stoca tot codul de proiect și poate fi accesat de toată lumea din echipă
  • Ușor de reutilizat și partajat cod, colaborați cu echipa
  • Ușor de înțeles impactul schimbării dumneavoastră asupra întregului proiect
  • Cea mai bună opțiune pentru refactorizarea codului și modificările mari ale codului
  • Membrii echipei pot avea o vedere de ansamblu asupra întregului proiect
  • Ușor de gestionat dependențe

Dezavantajele Mono-repo

Desigur, mono-repo are unele dezavantaje, principalul fiind performanța. Dacă proiectul dvs. crește și se adaugă mai multe fișiere o dată la două zile, operațiunile de extragere, extragere și alte operațiuni pot deveni lente și căutările de fișiere pot dura mai mult.

De asemenea, dacă angajați o mulțime de contractori independenți pentru proiectul dvs., oferindu-le acces la întreaga bază de coduri poate să nu fie atât de sigur.

În plus, este dificil să implementați implementări continue (CD), deoarece mulți oameni își pot verifica modificările, iar sistemul dvs. de integrare continuă (CI) poate fi nevoit să facă mai multe reconstruiri.

  Încărcați rapid până la cinci dispozitive simultan cu încărcătorul de birou UGREEN Nexode 300W GaN

Companiile mari care folosesc mono-repo au instrumente personalizate pentru a gestiona problemele de extindere. De exemplu, Facebook folosește un sistem de fișiere personalizat și un control al sursei.

Ce este un Multi-repo?

Într-o abordare multi-repo, există mai multe depozite care găzduiesc mai multe biblioteci și servicii ale unui proiect. Dacă un serviciu se modifică, dezvoltatorii trebuie să reconstruiască doar acel serviciu și nu întregul proiect. Indivizii și echipele pot lucra la serviciile lor specifice și au acces doar la serviciile necesare.

Companii precum Netflix și Amazon folosesc multi-repos.

Avantajele Multi-repo

Numărul de companii care adoptă multi-repo este mult mai mare decât cele care optează pentru mono-repo, din următoarele motive:

  • Fiecare serviciu și bibliotecă are propria sa versiune
  • Înregistrările și extragerile codului sunt mici și separate, astfel încât nu există probleme de performanță chiar dacă dimensiunea proiectului crește
  • Echipele pot lucra independent și nu trebuie să aibă acces la întreaga bază de cod
  • Dezvoltare mai rapidă și flexibilitate
  • Fiecare serviciu poate fi lansat separat și are propriul ciclu de implementare, făcând astfel CI și CD mai ușor de implementat
  • Control mai bun al accesului – toate echipele nu trebuie să aibă acces complet la toate bibliotecile – dar pot obține acces de citire dacă au nevoie

Dezavantajele Multi-repo

  • Dependențele și bibliotecile utilizate în cadrul serviciilor și proiectelor trebuie sincronizate în mod regulat pentru a obține cea mai recentă versiune
  • Încurajează o cultură separată la un moment dat, ceea ce duce la coduri duplicate și la echipe individuale care încearcă să rezolve aceeași problemă
  • Fiecare echipă poate urma un set diferit de bune practici pentru codul său, ceea ce provoacă dificultăți în urma celor mai bune practici comune
  Cum să digitizați fotografiile vechi de film

Diferențele dintre Mono și Multi Repo

Să recapitulăm diferențele dintre mono-repo și multi-repo:

Mono-repo
Multi-repo
Întregul cod al tuturor proiectelor unei organizații rezidă într-un depozit central
Fiecare serviciu și proiect au un depozit separat
Echipele pot colabora și lucra împreună; pot vedea schimbările reciproce
Echipele pot lucra autonom; modificările individuale nu afectează modificările altor echipe sau proiecte
Fiecare persoană are acces la întreaga structură a proiectului
Administratorii pot limita controlul accesului la proiectul sau serviciul la care dezvoltatorul are nevoie de acces
Pot apărea probleme de extindere dacă dimensiunea proiectului continuă să crească
Performanță bună, din cauza codului limitat și a unităților de serviciu mai mici
Dificil de implementat Implementarea continuă (CD) și Integrarea continuă (CI)
Dezvoltatorii pot realiza cu ușurință CD și CI, deoarece pot construi servicii în mod independent
Dezvoltatorii pot partaja cu ușurință biblioteci, API-uri și alt cod comun pe măsură ce sunt actualizate în depozitul central
Orice modificare a bibliotecilor și a altor coduri comune ar trebui sincronizate periodic pentru a evita problemele mai târziu

Concluzie

Atât mono-repo, cât și multi-repo sunt la fel de populare și care dintre ele este mai bună depinde de dimensiunea proiectului, de cerințele proiectului și de nivelul de control al versiunilor și al accesului de care aveți nevoie.

Mono-repo favorizează consistența, în timp ce multi-repo se concentrează pe decuplare. În timp ce într-un mono-repo, întreaga echipă poate vedea modificările făcute de o persoană, multi-repo creează un repo separat pentru fiecare echipă, care are acces doar la serviciile necesare. Dacă doriți să utilizați o combinație de mono-repo și multi-repo pentru proiectele dvs., puteți alege metaun instrument pentru gestionarea mai multor proiecte și biblioteci.

Ați putea fi, de asemenea, interesat de Resurse gratuite pentru a învăța Git.