SofaScoreov CTO je dokaz da u Hrvatskoj – iako vrlo teško – možete naučiti skalirati rješenje za 20 milijuna korisnika - Android

Get it on Google Play

SofaScoreov CTO je dokaz da u Hrvatskoj – iako vrlo teško – možete naučiti skalirati rješenje za 20 milijuna korisnika - Android

Kako raditi s 20 milijuna korisnika nećete naučiti ni na jednom hrvatskom fakultetu, a i rijetki ovdašnji developeri uopće imaju priliku za to. No, SofaScoreovom CTO-u Josipu Stuhliju, koji se upravo time bavi svakoga dana, izazov je to zbog kojeg je vlastite "mašine" morao optimizirati da im rade bolje od Amazonovog 'clouda'

The post SofaScoreov CTO je dokaz da u Hrvatskoj – iako vrlo teško – možete naučiti skalirati rješenje za 20 milijuna korisnika appeared first on Netokracija.

Iako nisu planirali, nakon što im je došao poziv na Career Speed Dating, Josip Stuhli, kao CTO, i Ivan Bešlić, kao suosnivač uspješne hrvatske tvrtke SofaScore koja se bavi praćenjem sportskih rezultata u stvarnom vremenu, odlučili su otići na FER-ovo upoznavanje studenata i poslodavaca.

Morate imati na umu da na većinu ovakvih događaja idu prvenstveno predstavnici ljudskih resursa, čiji je to i posao, ali dvojac iz SofaScorea zanimalo je kako će to izgledati. Nisu ništa očekivali niti posebno smišljali, već su jednostavno htjeli pričati sa studentima, potencijalnim budućim članovima svog tima.

Niti su FER-ovci očekivali suvlasnika i CTO-a tvrtke čije rješenje koristi 20 milijuna korisnika.

Prvi im je razgovor protekao ležerno, ali kako se dotad nisu posebno promovirali na tržištu rada, zaključili su kako bi možda bilo bolje da se ipak predstave. Ivan bi predstavio sebe, Josipa kao CTO-a i objasnio što rade. Na to je najčešće sljedeće pitanje bilo: “I vi ste iz Hrvatske?

Josip navodi kako su mnogi godinama mislili da su iz Velike Britanije, jer tvrtka zaista izgleda kao strana tehnološka platforma s odličnim engleskim. Čak i kad bi netko shvatio da “ima nešto u Hrvatskoj”, mislili bi da se radi o podružnici, ne sjedištu. Kad su mnogi FER-ovci koji vole sport shvatili da pričaju s vlasnikom i tehničkim direktorom tvrtke čiju aplikaciju koriste zadnjih pet godina, reakcija je bila – oduševljenje i znatiželja!

Mario Poje

“Kako uopće dobiješ rezultat u aplikaciji? Kako nakon toga radite s 20 milijuna korisnika?” samo su neka od pitanja koja su dobili, a odgovor je očit, koliko i izazovan:

Praksa.

Kao što su Josip i Ivan morali u praksi naučiti kako se predstaviti na Career Speed Datingu, tako su i u praksi morali naučiti kako razviti i skalirati rješenje za milijune korisnika – korak po korak, rezultat po rezultat, peak po peak!

Uostalom, Josip je u SofaScore došao upravo kroz oglas na fer2netu, jer ga je zanimalo skaliranje…

“Pola terabajta podataka dnevno koje treba spremiti – i kasnije analizirati”

Josip ističe kako im je u održavanju sustava za 20 milijuna korisnika jako bitna suradnja između timova, kako onih koji rade rješenja za, primjerice, iOS i Android, tako i backend tima. U navođenju brojki, vidi se da je ponosan na ono što su uspjeli postići.

Iz Firebase Analyticsa se uveze oko pola terabajta sirovih anonimiziranih podataka o tome kako se aplikacija upotrebljava – dnevno – što je zapravo oko 200 terabajta anonimiziranih podataka godišnje koje čuvamo barem tri godine kako bismo temeljem njih mogli učiti i razvijati nove machine learning modele. Svaki put kad dobijemo novog korisnika, pokušavamo kroz oko dva tjedna razumjeti je li on za nas kvalitetan korisnik i potom optimiziramo akviziciju novih korisnika. Učenjem kvalitete korisnika uspjeli smo zadržavanje korisnika dvostruko povećati, ali to u praksi znači pola terabajta podataka dnevno koje treba preuzeti, obraditi, spremiti – i kasnije analizirati!

Kao što su osnivači SofaScorea Zlatko Hrkać i Ivan Bešlić u srednjoj razvijali blogove, tako je i Josip s prijateljem u srednjoj krenuo u izradu softvera i raznim “projektićima”, kako ih opisuje. Priznaje kako su kao svi klinci bili mladi, nadobudni i pomalo bahati tako da su, primjerice, kad su čuli koliko tvrtke naplaćuju izradu softverskih riješenja za državu pomislili – mi bismo to mogli za 100 puta manji iznos! Mislili su da su najbolji, a kasnije, kako iskreno priznaje:

U praksi shvatiš da nemaš pojma ni o čemu. U SofaScoreu sam završio, jer sam se javio na oglas na fer2netu. Iz ove perspektive, i ja i osnivači smo imali sreću i našli smo se. Oni su bili vrlo fleksibilni, što je meni odgovaralo, a mene je osim programiranja zanimao rad sa serverima.

Bila je 2012. i čim se pojavila prilika da Josip preuzme servere, koji će kasnije biti ključni za skaliranje rješenja, to je učinio. U početku su se prebacili na Amazon Web Services koji je bio u začetcima, jer je Josip – kao i danas – zaista vjerovao u cloud rješenja!

Čim bi krenula utakmica, promet na SofaScoreu povećao bi se ne za 20 posto, već… 20 puta. Josip se morao snaći, jer u Hrvatskoj nije mogao potrebno znanje naučiti niti na faksu niti od drugih tvrtki koje su mahom razvijale rješenja za druge i nisu imale toliko korisnika:

Radilo se o idealnom slučaju za upotrebu cloud rješenja i upravo tako sam učio. Znao sam koncept, ali nisam imao prakse pa sam morao isprobavati, čitati po forumima i ići na konferencije kako bih shvatio što drugi ljudi koriste. Primjerice, jedan prijatelj mi je radio u startupu u SAD-u pa sam ga pitao što oni rade tako da smo upravo kroz razmjenu znanja i iskustava došli do verzije koja je funkcionirala.

Iako je cloud hosting, kako objašnjava Josip, relativno skup, davao mu je potrebnu fleksibilnost – ako nešto zezne imat će backup, snapshot, moći će isprobavati nove stvari. Ako nešto ne radi, moći će ugasiti server i upaliti novi:

Osnivači i ja smo se razumjeli i nije bio problem uložiti malo više novca da vidimo što možemo dobiti. Jednom kad smo sve postavili, bilo je “no brainer”. Kada dođe više ljudi, platimo više servera i zaradimo više od toga što smo potrošili na njih.

Hoće li aplikacija raditi ako je otvori cijeli Zagreb?

Jednu od prvih velikih navala Josip će tako dočekati – kao mnogi Hrvati ovih dana – na moru:

Prvi put kad smo imali navalu i došla je gomila korisnika, digli smo prvo dvije pa četiri pa još dodatnih “mašina” – i sve je radilo. Sjećam se jer je bio El Clásico i bio sam na moru. Iz apartmana sam s hotspot internetom čekao najveću utakmicu dotad i pitao se – hoće li nešto krepati?!

SofaScore je bio na Amazonovom cloudu, a danas su na vlastitoj infrastrukturi.

Josipu je, dakako, to bio stres, ali isto tako ga je veselilo kad su našli rješenje koje radi. Upravo to vidi kao razlog zbog kojeg, usprkos stresu, nije izgorio putem:

To definitivno nije za svakoga. Meni je sve to bilo nešto što me veselilo – izazov! I dalje imamo velike navale, ali kako je broj korisnika postao i veći i konzistentan, sad se ipak ne radi o povećanju do 50 puta. Znamo kako rješavati takve situacije i dovoljno smo eksperimentirali da imamo iskustva.

Korak po korak, Josip je s ostatkom SofaScoreovog učio mala, veća, a nekad i banalna rješenja. Primjerice, u jednom trenutku, prilikom skaliranja, na teži način su naučili da cloud nije neograničen – došli su do Amazonovog sigurnosnog limita u broju servera koji mogu biti pokrenuti u istom trenutku. U drugoj su situaciji htjeli specifičan model servera s novim procesorima, ali kojih, u trenutku kad ih je trebalo, nije bilo 20 komada koje mogu aktivirati jer se radilo o eksperimentalnom programu.

Ne možeš takve situacije simulirati, jer ne postoji normalan način da simuliraš što će ti se dogoditi u produkciji na takvom broju korisnika, kao ni koje su korelacije između različitih servisa koje koristiš. Događaju se naoko banalne situacije, primjerice imaš servis koji radi konekcije prema eksternom serveru, ali ako to nisi dobro namjestio, može ti zaključati cijeli interni sustav.
Neki nebitan dio koji ti šalje emailove koji nisi dobro napravio tako može srušiti sve, što nije nešto što će ti profesor na fakultetu moći objasniti.

Radi se o znanju koje možete naučiti isključivo kroz praktičan rad i uspjesima koje bi u SofaScoreu proslavili, primjerice, kad su po Google Analyticsu imali 800 tisuća korisnika u isto vrijeme. Kako su kasnije objasnili na Career Speed Datingu, to je bila situacija u kojoj je “cijeli Zagreb” otvorio aplikaciju!

Želiš li učiti iz vlastite prakse, moraš voljeli to što radiš

Situacija u SofaScoreu sad je ipak malo drugačija, a Josip itekako dobro razumije važnost mentora koje on u tom trenutku nije imao, jer se nitko nije bavio takvim skaliranjem:

Ako imaš mentora koji će ti sve pokazati, onda nećeš na svojoj koži iskusiti kad nešto zezneš, nećeš isprobati deset drugih stvari, nego će ti reći da ne moraš isprobati deset drugih stvari i otkriti ti jednu dobru – što je i dobro i loše. Ja sam morao isprobavati i na taj način jednostavno naučiti kako debugirati neke stvari, jer nisam imao drugog izbora! Kad bi nešto krepalo ili ću ja popraviti ili nitko neće. Kad će biti popravljeno? Ne znam, jer radiš dok ne popraviš zbog čega bi bilo kome, tko se želi upustiti u takvo učenje, naglasio da to mora biti nešto što zaista voli.

Josip naglašava da bi mu takve situacije bile puno stresnije da nije volio to što radi, jer je kao prvom DevOpsu u SofaScoreu sve ovisilo o njemu:

U takvom scenariju novci su apsolutno nebitni.

Amazon je brutalan, ali vlastito rješenje, kad se optimizira, brutalnije je i isplativije

Amazon Web Services se Josipu pokazao kao odlično rješenje, ali s vremenom je SofaScore zbog svog poslovnog modela temeljenog na oglašavanju trebao bolji omjer uloženog i dobivenog:

Meni je Amazon Web Services brutalan i igrao bih se s njime kao malo dijete. Dignu ti bazu o kojoj brinu i, ako jedan data centar ne radi, drugi radi. Odlično, i to možda funkcionira za Amazon ili Netflix, ali nama je konkretno, s obzirom na to da smo uspjeli optimizirati sustav, puno isplativije vlastito rješenje.

Trenutna serverska infrastruktura SofaScorea koju su sami postavili i kojom upravljaju košta 10 puta manje od rješenja na Amazon Web Services i sličnim servisima:

To je veći trošak i, iako bi nekome bio opravdan, mi smo htjeli optimizirati te troškove kako bismo mogli više ulagati u marketing i ljude. Mi smo uvijek bili na ‘cloudu’, ali smo 2014. shvatili da trošimo jednako na 20 puta manje korisnika. S vremenom smo sve optimizirali, tako da nam nije trebalo Amazonovo automatsko skaliranje, nego nam se više isplatilo da jednostavno kupimo više servera. Kad nam sustav dođe do 60 posto, jednostavno uložimo u još više servera, a danas koristimo hibridni cloud gdje imamo tvrtku od koje možemo kupiti servere, ali i virtualne servere ako nam zatrebaju.

Josip otkriva kako zahvaljujući prijašnjoj praksi sad mogu raditi više stvari sami. Nešto što bi na postojećim cloud rješenjima možda aktivirali jednim klikom, sad su ipak morali sami kroz pisanje nekoliko pluginova i interno dokumentiranje:

Ovo nam je rješenje svakako isplativije, a zahtijeva malo više truda oko interne dokumentacije za razliku od nekih rješenja gdje to jednom aktiviraš i radi. Definitivno se isplati, jer se ne radi o razlici od sto ili tisuću dolara, već višestruko većoj na mjesečnoj bazi!

Mario Poje

Kako Josip voli cloud rješenja, prelako bi se odlučio za njih, priznaje. No, upravo mu je ograničenje u obliku optimizacije sustava za poslovni model pomoglo da nauči više i s timom razvije vlastitu praksu koja je SofaScore učinila uspješnom tvrtkom.

Prelako je ako se bavite tehnologijom reći da vas financijski dio ne zanima, ali ako vas takve stvari ne zanimaju, nećete kvalitetno napraviti ni svoj dio posla. Previše startupa ili agencija, kad rade projekt za klijenta, aktiviraju Amazon Web Services jer je jeftin i nikad neće imati puno korisnika. Klijent će platiti više, prihodi će biti veći, ali što ćete naučiti?

Najveći problem koji Josip ima ovih dana je s kime otići na pivo i pričati o izazovima koji stoje pred SofaScoreom i nekim budućim peakovima korisnika. Najčešće se radi o freelancerima koji rade za strane tvrtke s milijunima korisnika, a kakvih, ako izuzmemo SofaScore i još poneku tvrtku, najčešće nema u Hrvatskoj:

Ima ljudi koji znaju napisati brutalan kod, brz kod, ali nemaju priliku uzeti i primijeniti to znanje na projektu koji stvarno ima ovakve zahtjeve i milijune korisnika. To što znaju je odlično u teoriji, ali pitanje je jesu li zaista imali priliku iskušati svoje znanje.

Josipov zaključak ilustrira sljedeći izazov hrvatske tehnološke scene. Rijetke su tvrtke u kojima možete raditi rješenja za milijune korisnika u Hrvatskoj, a takva praksa i znanje raspršeni su među stotinama pojedinaca koji možda rade za strane tvrtke. Razmjena takvog znanja i prakse značajno bi pomogla stvaranju temelja ne samo za daljnji razvoj tvrtki poput SofaScorea, već i razvoja cijele scene dalje od “samo” kvalitetnog koda – i prema kvalitetnom skaliranju!

The post SofaScoreov CTO je dokaz da u Hrvatskoj – iako vrlo teško – možete naučiti skalirati rješenje za 20 milijuna korisnika appeared first on Netokracija.

16/07/2020 07:55 AM