Z Prahy obsloužíme celý svět

Celý náš systém je postavený na open source technologiích a celek si upravujeme tak, aby všechno šlapalo, jak má. Celý svět obsluhujeme z jedné pražské serverovny. Mnozí naši uživatelé by Českou republiku možná ani nenašli na mapě, ale denně sem prostřednictvím webů či aplikaci míří za sportovními informacemi.

Původně jsme chtěli zahraniční uživatele obsloužit běžným způsobem s využitím komerční CDN sítě a lokálních CDN uzlů, ke kterým by se připojovali klienti z dané oblasti. Jenže před několika lety, kdy jsme se začali víc rozšiřovat na zahraniční trhy, jsme zjistili, že tudy cesta nepovede. I ty nejrychlejší CDN nabízí aktualizaci obsahu, tedy smazání starých dat a nahrání nových, v řádu minut. To pro většinu služeb úplně stačí, ale pro informace v Livesportu je to skoro jako věčnost.

Na CDN jsme nezanevřeli, jen si sami vyvíjíme svoji vlastní. Zatím máme v experimentálním provozu jednu serverovnu v roli CDN nodu v Orlandu a systém ladíme tak, aby například během Major League Baseball mohla pomoci s odbavením fanoušků v USA.

PoP v Orlandu – vstupní produkční provoz 

PoP v Orlandu – výstupní produkční provoz 

Další moderní možností, jak zvládnout náročný provoz, by bylo využití cloudových služeb typu AWS nebo třeba Azure od Microsoftu. V těch bychom sice dokázali našim rychlostním limitům vyhovět, ale při potřebných datových tocích a rezervě ve špičkách je to suverénně nejdražší varianta.

Všechny uživatele tak raději odbavujeme z vlastních serverů uložených v serverovně na pražském Žižkově.

“Bare metal” a chytrý mix technologií

Všechny služby v Livesportu běží na více než 400 serverech. Stroje jsou rozdělené do clusterů pro různé úkoly a nevytěžujeme je ničím jiným — jsou tak neustále plně připravené zvládnout nápor uživatelů, který například na začátcích zajímavých utkání roste obrovskou rychlostí, prakticky skokově.

Databáze výsledků a všech herních dat ukládáme do MySQL databáze. Jednak je to trochu dáno historicky, přeci jen jsme na trhu už dvanáct let, jednak je to vyspělý systém, který se dávno zbavil dětských nemocí, a navíc ho dokonale známe a umíme ho proto patřičně využít. Z pohledu zvenčí by se mohlo zdát, že není důvod používat “zastaralou” databázi a pracně shánět programátory, kteří s ní dovedou skvěle pracovat.

Zkušenosti nám ale ukazují, že ne každá technologie je automaticky vhodnější než ta starší, nebo že ne každá nová verze je lepší než ta předchozí.Ne vždy například obsahuje potřebné funkce, které dosud byly součástí a jsou nezbytné pro bezproblémový chod naší služby.

Chtít ale po jakékoli databázi obsloužit třeba těch půl milionu požadavků za sekundu by bylo zbytečné a neefektivní. Proto první, kam dolétne požadavek uživatele (respektive webu, či aplikací pro mobilní platformy) na data, jsou proxy servery, jejichž front vrstva funguje i jako content switche. Ty nával požadavků roztřídí na logické skupiny, které pošlou na další servery ke zpracování tak, aby víc strojů zbytečně neřešilo stejný požadavek.

Další v řadě jsou servery, na který běží systém Varnish. To je cachovací systém, který stojí v cestě každého dotazu a na ty nejčastější má v sobě uložené odpovědi. Typicky jsou to výsledky a další data právě probíhajících zápasů, a dvanáctihodinové okno oběma směry — zápasy ukončené a také ty, co se budou hrát.

U každého příchozího dotazu se tak systém podívá, zda na něj nezná odpověď, a pokud ano, okamžitě ho odbaví z vlastní cache. Pokud ne, postoupí dotaz dalším serverům, které pomocí PHP skriptů vyhledají odpověď na dotaz v databázi a předají je Varnishi. Ten ji odešle jako odpověď a zároveň uloží do cache pro případ, že by stejná věc zajímala i někoho dalšího — je to efektivnější, než dotaz zahodit a poté se znovu dotazovat v databázi.

Front proxy — počet dotazů při běžném sobotním provozu, nejedná se o maximální hodnoty (maximum v rámci vybraného dne 325,9 K) 

Back proxy — počet dotazů při běžném sobotním provozu, nejedná se o maximální hodnoty (maximum v rámci vybraného dne 92,3 K) 

Nody — počet dotazů při běžném sobotním provozu, nejedná se o maximální hodnoty (maximum v rámci vybraného dne 7,056 K) 

Varnish zároveň zajišťuje, aby obsah jeho cache byl neustále aktuální; ve špičkách to znamená aktualizaci i několika tisíc údajů za sekundu. V případě Varnishe se navíc ukázala výhoda open source software. Při implementaci nám ne zcela vyhovoval přístup systému k aktualizaci dat, bylo potřeba zařídit, aby systém vždy věděl, že jsou k dispozici nová data, a aby ani v momentě, kdy se čeká na odpověď databáze (někdy se čeká i na samotné PHP), nikomu neodeslal data stará. Napsali jsme tedy patch, který nyní využíváme v našem provozu, a zároveň jsme ho poslali správcům a tvůrcům Varnishe, kteří jej zapracovali do novější verze. Zároveň aktuálně pracujeme na adaptaci nejnovější verze Varnishe, u které nám zase nevyhovují jiné její aktuální vlastnosti — takže opět pracujeme na patchi.

Testování nejnovější verze varnishe v produkci — lze vidět rozdíl v počtu zpracování banů viz varnish 6 a opatchovaná verze varnish 6 

Další krok: responzivní web

Zajímavým faktem je, že přes 55 procent našich uživatelů přistupuje na webovou stránku z chytrých telefonů, ačkoli mobilní uživatelé mají možnost stáhnout si samostatné aplikace. To samozřejmě ovlivnilo i přípravu nového, již responzivního webu. Stávající verze se i na malém displeji mobilu zobrazuje stejně jako na desktopu. Uživatel tak sice musí na jednotlivé sekce “zoomovat”, na druhou stranu má k dispozici komplexní informace, ne jen zjednodušený výpis uzpůsobený pro malou mobilní obrazovku. Tento faktor — pro sportovní fanoušky evidentně klíčový — nyní integrujeme i do nové responzivní verze webu, která se přizpůsobí rozlišení displeje, ale i předvolbám uživatele.

Vlevo je náhled aktuálního stavu, na pravé straně můžeme vidět plánovaný cíl 

Mezi mobilními aplikacemi a webem se snažíme sdílet co nejvíc kódu, nedává totiž smysl psát stejnou věc vícekrát.

Naší silou je komplexnost, kombinace osvědčených technologií a těch nejlepších novinek. To vyžaduje i specifický přístup vývojářů — například velice intenzivní testování. Na většinu stávajících a na všechny nově vznikající služby máme nebo rovnou píšeme automatické testy. Všechno už v testovacím režimu provozujeme na široké škále uživatelských zařízení tak, abychom si byli jistí, že všechny funkce budou uživatelům dostupné bez ohledu na zařízení, které pro přístup použijí.“

*

Zaujalo tě, co v Livesportu dělají? Přidej se k nim.