Za koji dan se navršava godinu dana od “preseljenja” Limunda i Kupinda u Srbiju i pravi je trenutak da se osvrnemo i prisetimo celog procesa pripreme i izvedbe preseljenja gledano iz tehničkog ugla.
Pre same priče o preseljenju bitno je znati da Limundo i Kupindo zajedno beleže oko deset miliona pageview-ova dnevno sa po deset hiljada korisnika u sekundi tokom udarnih vremena, uz zahtev da se stranice sajta otvaraju u proseku za manje od dve sekunde, a sve to na sistemu kome se podaci menjaju bukvalno iz sekunde u sekundu. To su standardi koji su morali biti zadržani, pa i poboljšani nakon preseljenja.
Sama migracija je izvršena 6. decembra 2012. godine u 12:00 uz planirani downtime od 12 sati. Zanimljvost je da je planirano vreme puštanja zakazano nekih tri meseca ranije i da je ispoštovano u minut, uz napomenu da je sistem zaista bio spreman za puštanje bukvalno u 11:59, tako da je rok pogođen “u minut do dvanaest” 🙂
Tome je prethodilo devet meseci planiranja, istraživanja i razvoja.
Prva ideja da je migracija neophodna izneta je krajem februara 2012, nakon što smo primetili “rane znakove” upozorenja u smislu da su od našeg tadašnjeg hosting partnera, gde smo imali oko 30 fizičkih servera, počela da stižu oprečna objašnjenja za nepravilnosti u mreži koje smo sve češće uočavali. U tom periodu sajtovi su radili brzo i stabilno, ali je nakon mesec dana analize dostupnih podataka naša procena rizika bila da će u sledećih godinu dana doći do ozbiljnih problema prilikom skaliranja hardverske infrastrukture i da će migracija potrajati bar 4-5 meseci. Krajem marta je doneta “Go!” odluka da se projekat pokrene, kako bismo na vreme predupredili predviđene probleme.
Sledeća dva meseca imali smo intenzivne kontakte sa raznim potencijalnim partnerima i krajem maja doneta je odluka da se uđe u projekat sa domaćim housing provajderom. Domaći partner je izabran između ostalog i zbog toga što bi samo zahvaljujući premeštanju sajtova u Srbiju, kod provajdera koji ima odličan peering sa praktično svim regionalnim ISP-ovima, dobili direktno povećanje brzine sajta za naše članove koji su prvenstveno iz Srbije i regiona. Tada je i poručena nova oprema sa ciljem da svi neophodni serveri i prateći uređaji budu isporučeni u sledeća dva do tri meseca.
Odlučeno je da se migracija izvrši u privatni cloud i da najveći deo servera bude virtuelizovan. Zapravo, virtuelizovani su svi cluster-i osim servera za MySQL baze podataka, jer smo procenili da je rizik virtuelizovanja ovih ključnih servera preveliki, sa obzirom na sve ostale rizike skopčane za migraciju. Virtuelizacija servera je zahtevala i značajnu promenu arhitekture sistema, a odlučili smo da promenu hardverske arhitekture iskoristimo i za delimičnu promenu i unapređenje softverske arhitekture.
Projektovanje nove arhiteture je trajalo sledeća tri meseca i predstavljao je najzahtevniji deo. Bilo je potrebno predvideti sve ili što više mogućih problema i pripremiti novi sistem za prihvat stotina miliona postojećih podataka i pet terabajta slika. Projekat je završen krajem avgusta i tada je usvojen konkretan datum i vreme migracije – 06. decembar 2012. između ponoći i podneva, dvanaest sati downtime-a nakon kojih su Limundo i Kupindo morali da prorade u Srbiji i to brže i bolje nego što su radili u Nemačkoj. Blok šemu nove arhitekture možete pogledati ovde:
http://prezi.com/fb1r2anjb4jj/arhitektura-high-performance-php-aplikacije/
Sledeća dva i po meseca su provedena na razvoju i implementaciji nove arhitekture. Neki od zanimljivijih problema koje smo morali da rešavamo su:
– Podizanje realnog sandbox-a u kome smo mogli da razvijamo i testiramo novu arhitekturu i module. Za sandbox smo prirodno iskoristili opremu koja je poručena za novi datacentar. Kako je oprema stizala iz segmenata, odlučili smo da podižemo jedan po jedan cluster sukcesivno. Razvoj je organizovan tako da je rađen na modulima i serverima koji su bili vezani za trenutno dostupan cluster, sa ciljem da izbegnemo čekanje isporuke i instalacije svih servera i tako izbacimo vreme praznog hoda.
– Osmišljavanje načina da prebacimo sve potrebne podatke za 12 sati, koliko je bio zahtev za maksimalno trajanje downtime-a. Ovo je bio ozbiljan problem, jer je prebacivanje preko dvadeset miliona fajlova i import nekoliko stotina miliona slogova u baze podataka prema merenju trajalo pet do sedam dana realnog vremena. Problem sa fajlovima smo prevazišli dovlačenjem preseka stanja mesec dana pre migracije i paralelnim pisanjem novih fajlova u oba datacentra (u Srbiji i Nemačkoj). Import baze smo maksimalno optimizovali i prema našim proračunima trebalo je da traje oko sedam sati.
– Testiranje sistema pod punim opterećenjem pre puštanja, jer smo iz iskustva znali da u praksi uvek iskrsnu problemi koji ni u najboljim teorijskim modelima nisu mogli da budu predviđeni – the best laid schemes of mice and men often go awry.
Gađali smo rok za završetak svih radova dve nedelje pred puštanje 6. decembra, sa ciljem da imamo dovoljno vremena da propustimo simulaciju opterećenja kroz ApacheBenchmark i ispravimo eventualne probleme.
Konačno, 22. novembra smo imali gotov novi Limundo i Kupindo, sa izmenjenim softverom i potpuno novom virtuelizovanom arhitekturom. Sistem je napunjen sa realnim podacima iskopiranim sa živog sistema i nad njim smo pustili AB simulaciju realne posete. Na naš užas, desilo se najgore – pod simulacijom realnog opterećenja novi sistem se potpuno “raspao”. Ovde se pokazalo da je jedna od najboljih odluka u celom devetomesečnom procesu bila ta da se svim silama potrudimo da završimo sistem dve nedelje ranije i da ga propustimo kroz simulaciju. Sledeće dve nedelje su bile dovoljne da ispravimo nekoliko ozbiljnijih problema koji su iskrsli u realnom okruženju (prvenstveno vezanih za više nivoa keširanja koje smo koristili).
Konačno, 5. decembra je sve bilo spremno, u ponoć 6. decembra je oboren stari sistem u Nemačkoj i pokrenuta migracija u novi cloud u Srbiji.
Tokom migracije je došlo do još jednog manjeg problema, uzrokovanog ljudskom greškom, kada je pokrenuta dupla optimizacija već importovanih tabela. Ova dupla optimizacija je produžila proces importa podataka za oko četiri sata, što je sa sedam i po sati prebacivanja ostalih podataka celo vreme migracije produžilo na jedanaest i po sati. Uz još pola sata finalnih podešavanja servera, sistem je pušten u tačno 12:00 sati 6. decembra, kako je i planirano.
Limundo i Kupindo su radili skoro 50% brže u Srbiji nego u Nemačkoj, čime je ispunjen i drugi, mnogo važniji cilj. 🙂
Na kraju ove priče bih izdvojio dve stvari:
– Prva ključna stvar za uspeh celog projekta je bilo prihvatanje činjenice da će se desiti nepredviđeni događaji i da je neophodno unapred odvojiti vreme i resurse za njihovo saniranje. Zahvajujući tome, kada su se nepredviđene situacije zaista desile, imali smo dovoljno prostora da ih na vreme rešimo i ispoštujemo sve rokove i zahteve.
– Druga stvar za koju verujem da je bila od presudnog značaja je nešto što bih nazvao “suspension of disbelief”. Ogromno olakšanje koje smo osetili nakon uspešne migracije nas je podsetilo koliki nam je stres i pritisak ceo projekat zapravo proizveo. Mislim da je ključno bilo to što nismo sebi dozvolili da unapred razmišljamo o pritisku i koliko je u stvari ceo projekat imao prilika i mogućnosti za neuspeh. Verujem da bih sada za 15 minuta mogao argumentovano da ubedim bilo koga kako je ovakav projekat migracije u startu osuđen na neuspeh. Jednostavno, o neuspehu smo sebi dopustili da razmišljamo tek kada je sve bilo gotovo. 🙂
Ukupno vreme potrošeno na ovaj projekat je oko trideset čovek/meseci. Krajnji rezultat je sistem koji se skalira mnogo bolje, te stabilnije i brže radi nego pre migracije, čime su ispunjeni svi ciljevi.
Želim da se posebno zahvalim svim ljudima koji su naporno radili na ovom projektu i omogućili njegov uspeh, a najzaslužniji su:
– Nikola Krgović, glavni sistem inženjer, za projekat virtuelizovane arhitekture.
– Nikola Zagorac, Database Architect/senior programmer, za projekat upgrade-a softverskog framework-a.
– Milan Nićetin, Software Quality Assurance, za testiranje novog sistema i pravovremeno pronalaženje grešaka.
– Branislav Raić, Šef finansija, za sklapanje finansijske konstrukcije celog projekta.
– Partnerima iz Mainstream hosting kompanije.
I, naravno, zahvalan sam svim zaposlenim kompanije Limundo iz sektora IT, Marketing/PR, Finansije, Korisnička podrška i menadžmenta koji su učestvovali u različitim fazama projekta i bez čijeg rada ovaj projekat ne bi bio potpuno uspešan.
Sjajna i uzbudljiva priča!
Uživao sam čitajući je i delimično (kroz cloud 🙂 proživeo ono što ste vi realno proživeli. Divim se vašoj hrabrosti, smelosti i odlučnosti na ovakav korak, bez obzira što je bio neophodan i neodložan. Divim se i vašem znanju, stručnosti i kompetentnosti za ovakav projekat koji ste uspešno završili za relativno kratko vreme i sa relativno malim brojem članova tima. Svaka čast!
Ali da vas ne hvalim više, uobrazićete se! 😉 A i da ostavim prostora drugim članovima za komentare… Ne ustručavajte se, Limundovci/Kupindovci, već iznesite i vi vaše mišljenje, jer ova priča zaista zaslužuje apsolutno pozitivnu ocenu u svakom smislu. Ne budite ravnodušni i neutralni (neutralne ocene odoše u penziju).
Da napomenem samo da je i meni ovo prvi komentar i da sam član Limundo/Kupindo zajednice manje od 2 meseca! Prema tome ne znam kako je sve ovo funkcionisalo ranije, ali za ovo kratko vreme, koliko sam ja prisutan, mogu da kažem da sam oduševljen! Sve je odlično osmišljeno i sve radi veoma brzo i stabilno, što je za svaku pohvalu, s obzirom na veličinu i živost celog sistema.
Često licitiram u poslednjem minutu i ažurnost sistema je stvarno trenutna!
Evo, opet vas hvalim, ali ne brinite, biće prilika i za kritike, razume se dobronamerne, koje će, nadam se, samo doprineti usavršavanju sistema.
Još jednom sve pohvale za ceo tim koji je učestvovao u projektu i puna podrška za dalje unapređenje! Posebno se zahvaljujem autoru teksta koji je lepo i koncizno preneo i podelio sa svima nama ovo sjajno iskustvo.
A za kraj evo i moje čuvene desetke koju stavljam u komentarima ocena (ali ne baš svima):
……▓▓………▓▓▓
▓▓▓▓….▓▓…….▓▓
……▓▓….▓▓…….▓▓
……▓▓….▓▓…….▓▓
……▓▓….▓▓…….▓▓
……▓▓………▓▓▓
……………………………..◄pjovano►
Srdačan pozdrav,
Pero Jovanović
Jagodina
BRAVO!!! Svaka čast narode, sve pohvale Vašem “Limundo” timu i organizaciji… Dokazali ste smelost i odlučnost u organizaciji kao i to da u Srbiji IT sektor može funkcionisati u ogromnom obimu i bez većih problema!!
SVAKA ČAST još jednom…. samo tako nastavite.
pozdrav
Nenad.R
Evo DOKAZA koliko ljudi su zaista sposobni nesto da stvore u Srbiji! Hrabar poduhvat! Pre 30 godina secam se kako su dolazili iz IBMa da nauce nase COBALT programiranje a vidi gde smo stigli……..svetsko dostignuce u programiranju……ne napustite nas za Cupetino please!! 🙂
Obožavam paljevinske tekstove sa zaokruživanjem cifara na veću.
A za munjevite brzine Limundo i Kupindo nemaju veze, to je stvar dostupne tehnologije za potrošačko društvo. Meni sa za sekund otvori Google pretraga. To znači ja na mom kompu, šaljem zahtev provaderu, on prosledjuje centru za jugoistočnu Evropu, oni na satelit satelit na satelit pa na onaj treći, pa oni tamo svoj centar pa Google pa Google prelista ša sam čukao pa me ispravlja, pa mi pošalju rezultat u kontra smeru. Sve za par sekundi. Dakle o čemu je reč?
Za mene je ovo zanimljiv tekst, možda “paljevinski”, ali sam nekako osetio duh akcije kroz njega, vrlo uzbudljivo napisano.
limundo/kupindo rade solidno, i naravno da je sve to stvar dostupne tehnologije, ali džaba tehnologija koju nema ko da iskoristi – hoću da kažem da je potrebno znanje i veština da bi se tehnologije implementirale u koristan proizvod.
@ dimitrijevic75
Reč je u tome da iako Google otvori stranicu i stigne da koriguje tvoju/moju grešku za sekund , ipak ne može da uradi migraciju sajta (softvera i podataka) (doduše google nije za to ni namenjen 🙂 ) , a takođe ne može da ispuni sadržajem milijarde stranica sa danas dostupnim informacijama/dezinformacijama na internetu …
Ja skidam kapu i piscu teksta i majstorima koji su uradili migraciju.
Drago mi je da ste uspeli, nego jel iz prvog ili ste ipak pokušavali par puta? 😀
Pozzz!
Cool selidba se pamti – svaka čast!
Verujem da je sad već vreme je za novu platformu – balkanski tj. regionalni sajt za aukcije.
Gle zgodne stvari – pa Limundo će pre ući u EU nego Srbija, dovoljno da se u potpunosti otvorite za tržište Bugarske, Rumunije ili Hrvatske – i eto vas 🙂
Puno uspeha sjajnom timu u Novoj godini!