A kódtári stratégiák megvilágítása

A Mono-repo és a Multi-repo két fő stratégia a kód tárolására és kezelésére a Giten keresztül. Részletesen tárgyaljuk a stratégiákat és azok előnyeit és hátrányait.

Bevezetés

A legtöbb modern projektet a Git-en kezelik és tárolják. A Git az elosztott forráskód-kezelés, a verziókezelés és az együttműködés szabványos platformjává vált a világ bármely pontjáról. A Git gyors és hatékony. Két fő megközelítés létezik a Git-kód tárolására és kezelésére:

Mielőtt belemélyednénk ezekbe a megközelítésekbe, ismerjük meg a repo működését.

Mik azok a repók?

A Repository (Repo) tartalmazza a projekt összes mappáját és fájlját. Ezenkívül információkat tartalmaz a felhasználókról, személyekről és számítógépekről.

A lerakat adatai verziófüggő. A repo tulajdonosa lehet egy személy vagy a csapattagok egy csoportja.

A Git egy adattár. Lehet nyilvános, privát vagy belső. A GitHub a Git repository hosting szolgáltatása, és felhasználói felülettel rendelkezik.

A Git verziókezelési és kódmegosztási funkciókat kínál, azonban a Git abban különbözik, hogy ha a fejlesztők módosítani szeretnének a fájljaikon, átmásolhatják a teljes tárolót a helyi rendszerükre. Így még akkor is, ha a fejlesztőnek nincs írási hozzáférése egy adott projekthez, helyileg másolhatja a tartalmat, és módosíthatja azokat (ezt nevezzük forkingnek).

Továbbá, ha a fejlesztő meg akarja osztani a helyben végzett változtatásokat, akkor küldhet egy „lehívási kérelmet” a projekt tulajdonosának.

Egy projektnek egyetlen szolgáltatása lehet. Ha a projektje több munkafolyamattal rendelkezik, akkor mindegyik munkafolyamathoz több szolgáltatást is létrehozhat. A legtöbb fejlesztő jobban szereti a nagyobb projekteket kisebb független szolgáltatásokra bontani, amelyek egy vagy több funkcióval rendelkeznek. Mindegyik szolgáltatás különféle üzleti problémákat tud megoldani. A szerver nélküli keretrendszerek elterjedésével a felhasználók szolgáltatásként érhetik el a funkciókat.

  A Microsoft Outlook új keresőmezőjének használata

Miután létrehozta ezeket a funkciókat szolgáltatásként és telepítette őket, a következő lépés a strukturálásuk és a verziószabályozásuk – minden szolgáltatást egyetlen tárolóban tárolhat (mono-repo) – vagy külön tárolóval rendelkezhet minden egyes szolgáltatáshoz ( több repo)!

Mi az a Mono-repo?

A mono-repo megközelítésben az összes szolgáltatást egyetlen (mono) tárolóban tarthatja. Az egyes szolgáltatásokat továbbra is önállóan telepítheti és kezelheti. A szolgáltatások megoszthatnak közös könyvtárakat és kódokat.

Az olyan cégek, mint a Facebook, a Google és a Dropbox mono-repot használnak.

A Mono-repo előnyei

A mono-repo megközelítésnek számos előnye van:

  • Egyetlen helyen tárolhatja az összes projektkódot, és a csapat minden tagja hozzáférhet
  • Könnyen újrafelhasználható és megosztható kód, együttműködhet a csapattal
  • Könnyen megérthető, hogy a változtatás milyen hatással van az egész projektre
  • A legjobb lehetőség kód-újrafaktoráláshoz és nagy kódmódosításokhoz
  • A csapat tagjai átfogó képet kaphatnak a teljes projektről
  • Könnyen kezelhető függőségek

A Mono-repo hátrányai

Természetesen a mono-repónak van néhány hátránya, amelyek közül a fő a teljesítmény. Ha a projekt növekszik, és minden második nap újabb fájlokat adnak hozzá, a kijelentkezés, lehívás és egyéb műveletek lelassulhatnak, és a fájlkeresés tovább tarthat.

Továbbá, ha sok független vállalkozót vesz fel a projektjéhez, előfordulhat, hogy a teljes kódbázishoz való hozzáférés megadása nem olyan biztonságos.

Ezenkívül nehéz a folyamatos üzembe helyezéseket (CD) megvalósítani, mivel sokan bejelentkezhetnek a változtatásokba, és előfordulhat, hogy a folyamatos integrációs (CI) rendszert többször kell újraépíteni.

  Google Fotók kontra Amazon Photos

A mono-repot használó nagyvállalatok testreszabott eszközökkel rendelkeznek a méretezési problémák kezelésére. Például a Facebook egyéni fájlrendszert és forrásvezérlést használ.

Mi az a Multi-repo?

A többtárolásos megközelítésben több adattár létezik, amelyek egy projekt több könyvtárát és szolgáltatását tárolják. Ha egy szolgáltatás megváltozik, a fejlesztőknek csak azt a szolgáltatást kell újraépíteniük, nem a teljes projektet. Egyének és csapatok dolgozhatnak saját szolgáltatásaikon, és csak a szükséges szolgáltatásokhoz jutnak hozzá.

Az olyan cégek, mint a Netflix és az Amazon, több repot használnak.

A Multi-repo előnyei

A több repót alkalmazó cégek száma jóval több, mint a mono repót alkalmazó cégek száma, a következő okok miatt:

  • Minden szolgáltatásnak és könyvtárnak saját verziója van
  • A kódok ki- és lehívásai kicsik és különállóak, így nincs teljesítményprobléma akkor sem, ha a projekt mérete nő
  • A csapatok önállóan dolgozhatnak, és nem kell hozzáférniük a teljes kódbázishoz
  • Gyorsabb fejlesztés és rugalmasság
  • Mindegyik szolgáltatás külön-külön kiadható, és saját telepítési ciklussal rendelkezik, így a CI és a CD könnyebben megvalósítható
  • Jobb hozzáférés-szabályozás – nem kell minden csapatnak teljes hozzáféréssel rendelkeznie az összes könyvtárhoz – de olvasási hozzáférést kaphat, ha szükséges

A Multi-repo hátrányai

  • A szolgáltatások és projektek között használt függőségeket és könyvtárakat rendszeresen szinkronizálni kell a legújabb verzió beszerzéséhez
  • Elősegíti egy bizonyos ponton elzárt kultúra kialakulását, ami duplikált kódhoz, és az egyes csapatok ugyanazt a problémát próbálják megoldani.
  • Az egyes csapatok különböző bevált módszereket követhetnek a kódjukhoz, ami nehézségeket okoz az általános bevált gyakorlatok követésében
  Virtuális asztalok használata Chrome OS rendszeren

A Mono és a Multi Repo közötti különbségek

Foglaljuk össze a mono-repo és a multirepo közötti különbségeket:

Mono-repo
Több repo
Egy szervezet összes projektjének összes kódja egy központi adattárban található
Minden szolgáltatásnak és projektnek külön tárháza van
A csapatok együttműködhetnek és együtt dolgozhatnak; láthatják egymás változásait
A csapatok önállóan dolgozhatnak; Az egyéni változtatások nem érintik más csapatok vagy projektek módosításait
Mindenki hozzáfér a teljes projektstruktúrához
A rendszergazdák korlátozhatják a hozzáférés-szabályozást arra a projektre vagy szolgáltatásra, amelyhez a fejlesztőnek hozzá kell férnie
Nagyítási problémák léphetnek fel, ha a projekt mérete folyamatosan növekszik
Jó teljesítmény a korlátozott kód és a kisebb szolgáltatási egységek miatt
Nehéz megvalósítani a folyamatos telepítést (CD) és a folyamatos integrációt (CI)
A fejlesztők könnyen elérhetik a CD-t és a CI-t, mert önállóan tudnak szolgáltatásokat felépíteni
A fejlesztők egyszerűen megoszthatják a könyvtárakat, API-kat és más gyakori kódokat, amint azok frissülnek a központi adattárban
A programkönyvtárak és más általános kódok módosításait rendszeresen szinkronizálni kell a későbbi problémák elkerülése érdekében

Következtetés

Mind a mono-repo, mind a multi-repo egyformán népszerű, és melyik a jobb, az a projekt méretétől, a projekt követelményeitől, valamint a verziókezelés és hozzáférés-szabályozás szintjétől függ.

A mono-repo a konzisztenciát részesíti előnyben, míg a több repo a szétválasztásra összpontosít. Míg a mono-repo esetén az egész csapat láthatja az egy személy által végrehajtott változtatásokat, a multirepo külön repót hoz létre minden csapat számára, akik csak a szükséges szolgáltatásokhoz férnek hozzá. Ha a mono-repo és a multi-repo kombinációját szeretné használni projektjeihez, akkor nyugodtan metaegy eszköz több projekt és könyvtár kezeléséhez.

Érdekelheti a Git elsajátítására szolgáló ingyenes források is.