22.05.2024. ·
4 min

Zašto je Facebook izabrao Mercurial umesto Gita?

HelloWorld
0
Zašto je Facebook izabrao Mercurial umesto Gita?

Git je sistem za kontrolu i istoriju verzije koda i koriste ga skoro sve velike IT kompanije, ali ne Google i Facebook. Što se tiče Google-a, stvar je jasna jer njihov inženjering postoji nekoliko godina pre Git-a. Sa druge strane, Facebook je nastao otprilike u isto vreme kada i Git (2004. godine) i bilo je, nekako, prirodno da dve tako uticajne i jake kompanije, zajedno rastu i razvijaju se, posebno ako imamo u vidu da su oni u prvih osam godina postojanja, zaista, i sarađivali.

Ta saradnja se završila 2012. godine, kada je Facebook odabrao drugog partnera, tada prilično nepoznatog, po imenu Mercurial.

Oba sistema rade sa repozitorijumom. To je zapravo direktorijum koji sadrži sve fajlove projekta, a postoji i sistemski deo gde se čuvaju podaci o projektu, promenama, o tome ko je te promene načinio i kodu unutar njih. Da Facebook nije promenio „partnera“ , inženjerski svet bi danas, gotovo sigurno, izgledao drugačije, i iz današnjeg ugla, Git definitivno ima za čime da žali. Moguće je da danas ne bi imao nikakvu konkurenciju i da bi korisnički doživljaj rada u Git-u bio na još višem nivou.

Osnovni razlog da Facebook migrira na Mercurial, je prilično jednostavan – performanse. Međutim, kako to obično biva, bilo je tu i malo sujete.

Pošto je Git bio koncipiran tako da „pregleda“ svaku datoteku repozitorijuma, sa povećanjem broja datoteka, jasno je da njegova brzina opada. Ljudima iz Facebook-a je počela da se pali „crvena lampica“ kada su sve učestalije počeli da „naleću“ na granice skaliranja, pa su odlučili da ništa ne prepuštaju slučaju, već su napravili simulaciju. Koristili su „dummy“ repozitorijum sa očekivanom veličinom Facebook-ovog koda u narednih par godina.

Rezultat je bio poražavajući, jer je izvršenje osnovnih Git komandi trajalo 45 minuta. Pomalo uspaničeni tom informacijom, mali tim software inženjera zaposlenih u Facebooku, je počeo vredno da radi na pronalasku rešenja. Kontaktirali su Git zajednicu, međutim odgovor je bio – „podelite ogroman repozitorijum na manje delove“. Potpuno šokirani i pomalo uvređeni njihovim odgovorom i nedostatkom „sluha“ za očigledan problem, ovaj tim je shvatio da je migracija na drugi sistem neminovna.

Nisu pričali sa ostatkom kompanije o ovom problemu, jer su želeli da prvo istraže sve moguće opcije kako bi bili u potpunosti sigurni kada izađu sa predlogom. Znali su da bi njihove kolege, programeri, pre svih, mogli da budu izuzetno osetljivi na ovako radikalnu promenu koju su pripremali, pa nisu želeli dodatne komplikacije bez jasne slike „šta i kako dalje?“

Bitno je shvatiti da u to vreme (2012. godina), nije bilo puno alternativa Gitu. „Koketirali“ su sa zatvorenim sistemom „Perforce“, bivšim izvorom kontorle Google-a, međutim tu su naišli na arhitektonski nedostatak u lokalnoj konzistentnosti, a razmatran je i Bitkeeper, koji je odmah otpao.

Kao poslednja opcija ostao je Mercurial, sistem veoma sličan Git-u, ali sa „čistijom“ arhitekturom. Dizajniran je u Python-u, koristi objektno orijentisane obrasce kodiranja i, veoma bitna stavka, bio je dizajniran da bude proširiv. U prilog Mercurial-u je išlo i to što je jedan od Facebook inženjera već imao dobro iskustvo sa ovom platformom i tako je, zapravo, sve i krenulo. Njegovo ime je Brajan O’Saliven.

Za razliku od Gita, zajednica okupljena oko Mercurial projekta je bila veoma zainteresovana da reši sve probleme koje su im predočili. Susret u Amsterdamu na hakatonu je bio veoma plodonosan i dogovor je postignut. Facebook će svoj repozitorijum prebaciti na Mercurial i oni će biti zaduženi za kontrolu izvornog koda, jedino što je ostalo da se „odradi“ je da se obavesti ostatak „ekipe“.

Krenuli su oprezno, oko mesec dana su po kompaniji promovisali mogućnost migracije na Mercurial. Inženjeri zaduženi za razvoj u Facebook-u, svaki pojedinačno, imali su mogućnost da izraze svoju zabrinutost i da razgovaraju o problemima koji bi se potencijalno pojavili i imali uticaj na njihov rad. Na njihovo iznenađenje, kolege su bile veoma prijateljski nastojeni i puni razumevanja. Brajanov Tim je mogao da odahne i napokon započne dugo pripremanu migraciju. Ostalo je istorija.

Dakle, Facebook je prešao na Mercurial, ne zato što je bio tehnološki napredniji od Gita, već zato što je Mercurial bio otvoren za saradnju. Takođe, Brajanov tim, da ih tako nazovemo, je imao jasnu strategiju šta želi da uradi i komunikacija sa kolegama, po tom pitanju, je bila duboko promišljena i odmerena, a kada je tako uspeh ne može da izostane.

 

Oceni tekst

4
9 glasova

0 komentara

Iz ove kategorije

Svi članci sa Bloga

Slični poslovi

Povezane kompanije po tagovima