Case study: Je možný úspěšný herní startup v cloudu?

Lze provozovat herní startupový projekt v cloudu a neprodělat na tom kalhoty? Jak se vypořádat s nástrahami velké dynamické zátěže při udržení rozumných nákladů, potřeby minimálních latencí, udržitelnosti velikosti jednotlivých aplikací v rozumných mezích, neustále dostupné SQL databáze či se zabezpečením veřejného přístupu k datům?
To a mnohé další problémy při rozjíždění startupového projektu, který staví na prodeji her pro různé současné platformy, si ukážeme v následující případové studii.
Projekt About Fun vznikl jako český online start-up. Na počátku stál nápad využít potenciál současných operačních systémů s přímou podporou prodeje aplikací a nějakého robustního cloudového hostingu k rozjezdu zajímavého herního startupu, který bude z části stát na další distribuci rozšiřujícího volitelného obsahu.

Ten přináší hned několik výhod: rozšiřuje možnosti jednotlivých herních titulů, v případě poskytování zdarma jde o zajímavou konkurenční výhodu a hlavně umožňuje držet základní aplikace, distribuované na marketech jednotlivých systémů v rozumných mezích. Později přibyl také požadavek na online ukládání hráčských skóre, které umožní porovnávat výsledky a soupeřit například s facebookovými kamarády a zobrazovat aktuální žebříčky.

Není nebe bez mráčku

Zde ovšem na scénu přichází několik problémů: většina ryze technických, některé ale také finanční. V prvním případě bylo třeba vyřešit, kde uskladnit volitelné součásti aplikace, které si uživatel stáhne po zakoupení, jak data ochránit před neautorizovaným přístupem a jak zajistit garantovanou dostupnost i v případě momentálních stahovacích špiček.

Co se databázových záležitostí týče, zde bylo potřeba vyřešit hlavně garanci maximální spolehlivosti a jen mikroskopické latence (zejména v případě mobilního spojení), pokud by se například hráči po dosažení obtížné úrovně neuložilo skóre kvůli špatné konektivitě nebo chybné komunikaci klienta se serverovou částí, mohlo by to být pro celý projekt poměrně fatální.

Vše výše uvedené musí být také dostupné napříč různými herními platformami. Posledním problémem, který z toho pro startupový projekt se značně omezenými financemi vyplývá, je otázka, jak udržet náklady v rozumných mezích.

Cestou mraků

About Fun se nakonec rozhodl zkusit štěstí skrze nějaké dostupné cloudové řešení. Hlavní motivací (v porovnání například s klasickým hostingem) byl požadavek garantované dostupnosti, škálovatelnosti výkonu a tedy i nákladů, vysoká spolehlivost a nezávislost na platformě. „Důvody pro cloudové řešení byly „klasické“: snížení nákladů a škálovatelnost, a zvýšení dostupnosti. Později nám vznikla i potřeba SQL databáze. Cloudová řešení podporují databáze, které jsou na různých úrovních přizpůsobené více přístupům ve stejný okamžik, což byl i náš další požadavek, a tedy další důvod pro pronájem těchto služeb,“ vysvětluje základní motivaci Petr Vodák, CEO projektu.

Po zvážení všech požadavků, za které by se nemusela stydět kritická infrastruktura leckteré velké korporace, a s ohledem na rozpočet padla volba na Windows Azure od Microsoftu. „Při vývoji naší první hry pro Windows Store jsme měli podporu od Microsoftu a byli jsme účastníci programu BizSpark, který umožňuje používat služby Windows Azure zdarma (do překročení určitých kvót),“ vysvětluje prvotní rozhodování Vodák. U Windows Azure zůstává společnost i nadále, kromě již sjednoceného vývoje. „Již jsme se s ním seznámili a vývoj se zrychlil. Nějaké levné lokální řešení by se nám v konečném součtu těžce nevyplatilo. Uživatelé jsou z celého světa a u běžného hostingu se platí za velký datový provoz do zahraničí. To se nás týkalo, neboť uživatelé stahují některé přídavné obsahy do her, které jsou objemné,“ dodává.

Projekt využívá v současné chvíli čtyři cloudové prvky – službu Storage k uložení volitelných součástí her (často mají poměrně velké datové objemy), zabezpečení Shared Access Signature pro bezpečný přístup k datům, Azure SQL databázi k ukládání skóre hráčů a dalších potřebných údajů a Azure Web Sites pro rozesílání vzdálených notifikací (zatím tedy pouze pro iOS hry).

Hlavní přínosy řešení by se daly shrnout do několika stručných bodů:

  1. znatelně menší velikost nativní herní aplikace, protože volitelné součásti si uživatel stahuje po zakoupení sám.
  2. vysoká dostupnost uložených dat a služeb a související škálovatelnost výkonu dle aktuálních potřeb, kterou zajišťuje Azure CDN.
  3. vysoký výkon a kratší časové odezvy, které zmenšují riziko ztráty dat díky distribuovanému modelu služeb.

Hlubší ponor do technické stránky věci

V zajetí SQL dotazů

Použitá služba SQL Database nabízí mnoho výhod distribuované SQL databáze: databáze je fyzicky na několika strojích, ale tváří se jako jedna databáze, jejíž rozhraní je v jazyku SQL. Přesněji se jedná o Transact-SQL, které ovšem na Windows Azure není podporováno zcela – některé funkcionality chybí, často právě kvůli faktu, že se jedná o distribuovanou databázi. U jedné z her, která běží pod operačními systémy iOS a Android, se v databázi ukládá především skóre hráčů a jejich kamarádů z Facebooku. Toho lze využít například pro soupeření skrze týdenní žebříčky skóre přátel a pak i pro kooperativní herní složku, kdy nahrané skóre všech těchto přátel vede společně k dosažení různých herních cílů a odměn. Nejzákladnějším problémem takové databáze jsou konkurenční připojení, tedy připojení mnoha různých zařízení ve stejný čas.

Databáze na takovou situaci musí být připravená a nemůže se stát, že by se například nějakému hráči neuložilo jeho skóre kvůli špatné implementaci. SQL databáze nabízí několik prostředků, jak se s tímto vypořádat. Jedním z nich je zamykání (locking). V Transact-SQL lze výhodě používat uzamykání na úrovni transakcí, což jsou logicky ucelené soubory dotazů. Aby nedošlo k poškození databáze kvůli konkurenčním připojením, je nastavena úroveň zamykání transakcí tak, že ostatní dotazy, které by ve stejný čas chtěly přistupovat ke stejným datům, musí počkat, až se transakce ukončí. Zamykání je přitom na úrovni řádků, takže ve stejné tabulce může probíhat na jiných řádcích dotaz jiného uživatele.

Kam s nimi

Pro ukládání má využitý Azure Storage hlavní výhodu v tom, že umožňuje ukládat větší objemy dat v NoSQL strukturách, tedy strukturách, které mají menší možnosti než SQL databáze, ale jsou rychlejší a obecně vhodnější pro data jako jsou soubory.
Služba je využívána k uložení volitelných součástí několika her, které si uživatel stáhne po zakoupení. Tyto hry jsou dostupné jak na Windows Store, tak i na iOS zařízeních, tj. Apple Store, jedná se např. o Kids‘ Puzzles, Kids Puzzles: Memory game, Kids‘ Puzzles: 3+1 Pictures. Hlavní výhodou je výrazně menší základní velikost aplikace, kdy různé datově objemnější volitelné části jsou stahovány až na vyžádání samotných koncových uživatelů.

Jak je to s bezpečností?

Jak k samotné SQL databázi, tak k souborům na Storage, je naprosto nevhodné přistupovat přímo z mobilní aplikace z důvodů bezpečnosti. To se obejde použitím skriptu, který je uložený na Azure Web Sites a slouží jako rozhraní pro tyto služby. Ke skriptu mobilní zařízení přistupuje pomocí běžného protokolu https. Pro Storage tento skript obstarává zabezpečený přístup k souborům pomocí Shared Access Signature – dotazem se vygeneruje přístupový klíč k jednomu danému souboru na storage, a s pomocí klíče již lze tento soubor, opět přes https, do aplikace stáhnout.

Jiný skript hraje roli rozhraní k databázi: předzpracovává data, které mobilní zařízení pošle, a spustí správnou SQL proceduru na databázovém serveru a případně vrátí výsledky zpět do mobilní aplikace v podobě odpovědi na https dotaz. Naprostá většina předzpracování jsou v podstatě bezpečnostní kroky – ověřujeme, zda dotaz na skript skutečně pochází od naší mobilní aplikace.

V případě některých her tento skript také rozesílá tzv. „push“ oznámení na mobilní zařízení. Data potřebná k poslání oznámení, tedy identifikace přesného mobilního zařízení, jsou také uložena v SQL databázi. Tyto push notifikace jsou využívány především v situacích, kdy je třeba koncového uživatele upozornit na nově nastalou situaci ve hře, například tehdy, když jimi nahrané skóre bylo překonáno kamarádem a nebo když kamarádi dosáhli nějakého společného cíle a ve hře je k vyzvednutí odměna.

Pár současných úskalí práce s Azure

Aby to nevypadalo, že zde děláme nějaké neplacené PR, pátrali jsme také po úskalích, která se při práci v prostředí Windows Azure mohou objevit. „Obecně lze říci, že Azure má zatím relativně málo uživatelů. Když se narazí při vývoji na problém, prvním krokem jako všude jinde bývá hledat na Internetu někoho, kdo měl stejný problém a vyřešil ho. U Windows Azure bylo vidět, že podobné zdroje chybí. Některé problémy jsme překonali díky podpoře od Microsoftu konzultací s jejich zaměstnanci. Také se nám podařilo odhalit a nahlásit chybu v oficiálním rozhraní k Windows Azure v .NET, vysvětluje Vodák.

„Trochu obtížná byla práce s uživatelským rozhraním k SQL databázi, které využívá technologii Silverlight. Je poněkud nevlídné: například klávesová zkratka Ctrl+Z, což je většinou „krok zpět“, při editaci textového pole toto pole vymaže a uloží, tedy pokud není záloha, je veškerá práce ztracena, posteskl si ještě na závěr.

Exit mobile version