Бацимо светло на стратегије за складиште кода

Моно-репо и Мулти-репо су две главне стратегије за хостовање и управљање кодом преко Гита. Разговарамо о стратегијама и њиховим предностима и недостацима детаљно.

Увод

Већина модерних пројеката се управља и хостује на Гиту. Гит је постао стандардна платформа за управљање дистрибуираним изворним кодом, контролу верзија и сарадњу са било ког места у свету. Гит је брз и ефикасан. Постоје два главна приступа за хостовање и управљање вашим Гит кодом:

Пре него што уђемо у ове приступе, хајде да разумемо како репо функционише.

Шта су Репос?

Репозиторијум (Репо) садржи све фасцикле и датотеке вашег пројекта. Такође садржи информације о корисницима, људима и рачунарима.

Подаци спремишта су контролисани верзијама. Репо може бити у власништву појединца или групе чланова тима.

Гит је спремиште. Може бити јавна, приватна или интерна. ГитХуб је хостинг сервис Гит репозиторија и има кориснички интерфејс.

Гит обезбеђује контролу верзија и функције дељења кода, међутим, оно што Гит чини другачијим је то што ако програмери желе да унесу неке промене у своје датотеке, могу да копирају цело спремиште у свој локални систем. Стога, чак и ако програмер нема приступ писању одређеном пројекту, може локално копирати садржај и модификовати га (што се назива форкинг).

Даље, ако програмер жели да дели локално направљене измене, може послати „повлачење захтева“ власнику пројекта.

Пројекат може имати једну услугу. Ако ваш пројекат има више токова посла, можете креирати више услуга за сваки ток посла. Већина програмера радије дели веће пројекте на мање независне услуге, које имају једну или више функција. Свака услуга може да реши различите пословне проблеме. Са популарношћу оквира без сервера, корисници могу приступити функцијама као услугама.

  Како да контролишете ко може да коментарише ваше објаве на Инстаграму

Једном када креирате ове функције-као-услуге и примените их, следећи корак је да их структурирате и контролишете верзију – можете имати све своје услуге у једном спремишту (моно-репо) – или имати засебно спремиште за сваку услугу коју имате ( мулти-репо)!

Шта је Моно-репо?

У моно-репо приступу, можете држати све своје услуге у једном (моно) спремишту. И даље можете независно да примењујете и управљате сваком услугом. Услуге могу да деле заједничке библиотеке и код.

Компаније као што су Фацебоок, Гоогле и Дропбок користе моно-репо.

Предности Моно-репо

Моно-репо приступ има многе предности:

  • Једно место за складиштење целокупног кода пројекта и може му приступити сви у тиму
  • Једноставан за поновно коришћење и дељење кода, сарађујте са тимом
  • Лако је разумети утицај ваше промене на цео пројекат
  • Најбоља опција за рефакторисање кода и велике промене кода
  • Чланови тима могу добити општи поглед на цео пројекат
  • Лако управљање зависностима

Недостаци Моно-репо

Наравно, моно-репо има неке недостатке, од којих је главни учинак. Ако ваш пројекат расте и сваки други дан се додаје више датотека, одјављивање, извлачење и друге операције могу постати споре и претрага датотека може трајати дуже.

Такође, ако ангажујете много независних извођача за свој пројекат, давање им приступа целој бази кодова можда неће бити тако безбедно.

Даље, тешко је имплементирати континуиране имплементације (ЦД), јер многи људи могу да пријаве своје промене, а ваш систем континуалне интеграције (ЦИ) ће можда морати да изврши вишеструке реконструкције.

Велике компаније које користе моно-репос имају прилагођене алате за решавање проблема повећања. На пример, Фацебоок користи прилагођени систем датотека и контролу извора.

  Шта је ДНС ЦАА и како потврдити и имплементирати?

Шта је мулти-репо?

У приступу са више репо, постоји више спремишта у којима се налази неколико библиотека и услуга пројекта. Ако се услуга промени, програмери треба да поново направе само ту услугу, а не цео пројекат. Појединци и тимови могу да раде на својим специфичним услугама и добијају приступ само потребним услугама.

Компаније попут Нетфлик-а и Амазон-а користе мулти-репос.

Предности Мулти-репо

Број компанија које усвајају мулти-репо је много већи од оних које иду на моно-репо, из следећих разлога:

  • Свака услуга и библиотека имају своје верзије
  • Прописи и повлачење кодова су мали и одвојени, тако да нема проблема са перформансама чак и ако величина пројекта расте
  • Тимови могу да раде независно и не морају да имају приступ целој бази кодова
  • Бржи развој и флексибилност
  • Свака услуга се може издати засебно и имати сопствени циклус имплементације, што чини ЦИ и ЦД лакшим за имплементацију
  • Боља контрола приступа – сви тимови не морају имати пун приступ свим библиотекама – али могу добити приступ за читање ако им је потребно

Недостаци Мулти-репо

  • Зависности и библиотеке које се користе у услугама и пројектима морају се редовно синхронизовати да би се добила најновија верзија
  • Подстиче изоловану културу у неком тренутку, што доводи до дуплирања кода и појединачних тимова који покушавају да реше исти проблем
  • Сваки тим може да следи другачији скуп најбољих пракси за свој код, што изазива потешкоће у праћењу уобичајених најбољих пракси

Разлике између Моно и Мулти Репо

Хајде да рекапитулирамо разлике између моно-репо-а и мулти-репо-а:

  Како да примените Присма филтере на фотографије са радне површине

Моно-репо
Мулти-репо
Сав код свих пројеката организације налази се у централном репозиторијуму
Сваки сервис и пројекат имају засебно спремиште
Тимови могу да сарађују и раде заједно; могу да виде промене једни других
Тимови могу да раде аутономно; појединачне промене не утичу на промене других тимова или пројеката
Свака особа добија приступ целој структури пројекта
Администратори могу да ограниче контролу приступа пројекту или услузи којој је програмеру потребан приступ
Проблеми са повећањем могу се појавити ако величина пројекта настави да расте
Добре перформансе, због ограниченог кода и мањих јединица услуге
Тешко је имплементирати континуирану имплементацију (ЦД) и континуирану интеграцију (ЦИ)
Програмери могу лако да постигну ЦД и ЦИ јер могу самостално да праве услуге
Програмери могу лако да деле библиотеке, АПИ-је и други уобичајени код док се ажурирају у централном спремишту
Све промене библиотека и другог уобичајеног кода треба повремено синхронизовати да би се избегли проблеми касније

Закључак

И моно-репо и мулти-репо су подједнако популарни и који је бољи зависи од величине вашег пројекта, захтева пројекта и нивоа управљања верзијама и контроле приступа који су вам потребни.

Моно-репо фаворизује доследност, док се мулти-репо фокусира на раздвајање. Док у моно-репо-у, цео тим може да види промене које је урадила једна особа, мулти-репо креира посебан репо за сваки тим, који има приступ само потребним услугама. Ако желите да користите комбинацију моно-репо-а и мулти-репо-а за своје пројекте, можете изабрати метаалат за управљање више пројеката и библиотека.

Можда ће вас занимати и бесплатни ресурси за учење Гит-а.