Hlavní navigace

Rockaway AWS Hackathon aneb utratit co nejvíc peněz

 Autor: Rockaway Capital
Petr Ferschmann 22. 10. 2015

Tento víkend jsem se zúčastnil Rockaway AWS Hackathonu, jehož tématem byly technologie Amazon Web Services. Část z nich u nás ve firmě používáme pro provoz ABRA FlexiBee, ale chtěl jsem se podívat i na ty další. Jsem od nátury megaloman, a tak mne zajímaly ty, které umožní škálovat provoz mých služeb opravdu ve velkém.

Tento víkend jsem se zúčastnil Rockaway AWS Hackathonu, jehož tématem byly technologie Amazon Web Services. Část z nich u nás ve firmě používáme pro provoz ABRA FlexiBee, ale chtěl jsem se podívat i na ty další. Jsem od nátury megaloman, a tak mne zajímaly ty, které umožní škálovat provoz mých služeb opravdu ve velkém.

Hackathon byl tvořen přednáškovým blokem a především programováním zvolené úlohy v malém týmu za 30 hodin. Abychom si mohli technologie skutečně osahat, organizátoři měli připraveny kredity v hodnotě cca 8 000 dolarů (cca 200 000 Kč), což je na 24hodinovou akci docela dost. Pro srovnání stejnou částku utratíme za cloud FlexiBee za půl roku. Tak jsem si řekl, že budu dělat tak škálovatelnou a masivní aplikaci, která tyto peníze vyčerpá do mrtě.

Z přednášek mi v paměti zůstala především ta od Štěpána Bechynského o AWS Lambda. Jedná se o malé kousky programu, které nahrajete do AWS a které lze snadno pouštět. Mohou to být i docela velké programy, ale jejich běh se musí dokončit ve zvoleném časovém limitu (obvykle od 5 vteřin do maximálně 5 minut). Vy napíšete jen kus kódu a vše ostatní zajistí Amazon.

Následovala prezentace nápadů a jejich rozdělení. Všichni se seběhli a měli jasno v tom, co budou dělat. Dopředu jsem se na hackathon moc nepřipravoval, a tak jsem neměl sestavený ani tým a ani nápad. Vše jsem doháněl až na místě. Díky tomu jsem se stal součástí populárního týmu “Zoufalců”. Tedy těch, co na sebe zbyli a kteří nevěděli, co budou dělat.

Chvíli jsme uvažovali o tom, že provedeme analýzu transparentních účtů s prostřednictvím WebAPI od České Spořitelny. Ale nakonec jsme zvolili nápad jednoho z organizátorů (moje žena zpětně řekla, že to byl chytrý krok).

Naše aplikace

Rozhodli jsme se, že uděláme jednoduchou aplikaci, která zjistí počet sdílení webové adresy (URL) na sociálních sítích (Facebook, Twitter, Google+ a LinkedIn). Každý uživatel zadá adresu a služba zjistí počet sdílení. Následně se každých 5 minut provede zjištění aktuálního stavu, což se ukládá a pro uživatele se vytváří historie. Uživateli ukazujeme graf vývoje v čase.

Výsledek je vidět na tomto videu a screenshoty na konci stránky:

Poznámka: V tomto videu je graf fiktivní, protože jsme jej dokončili těsně před prezentacemi a hotové video už bychom nestačili předělat.

V našem týmu jsme byli tři: mladý talentovaný grafik Marek Dlugoš, programátor Lukáš Kříž a já. Se skromností sobě vlastní jsem se ujal vedení týmu. Marek dal naší aplikaci to nejdůležitější, a to pěkný design. S Lukášem jsme vše naprogramovali.


Autor: Rockaway Capital

Aplikaci jsme stavěli tak, že se jednalo o sadu úloh AWS Lambda v node.js, které byly volány pomocí AWS API Gateway. Jednotlivé úlohy jsou volány z různých serverů a IP adres, což nás zbavilo starostí s limity na množství volání API služeb sociálních sítí.

Nejdříve jsme napsali základ aplikace a pak začali řešit její schopnost škálovat. Nechali jsme kontrolovat 18 000 různých adres a zkoušeli zatížení. Samozřejmě neúspěšně. Problém byl právě maximální časový limit spouštěné aplikace. Načetli jsme odkazy ke zpracování z databáze a začali rozdělovat úkoly. To ale trvalo dlouho. Vyzkoušeli jsme spoustu slepých uliček, až jsme skončili u načtení všech adres, jejich rozdělení po stovkách, odeslání další službě, která zajistila spuštění podúloh s kontrolou jednotlivých adres. Během cca 20 vteřin jsme byli schopni otestovat desítky tisíc adres najednou.

Celkem jsme provedli během dvou hodin milion kontrol. To znamená, že jsme provedli milion požadavků na Facebook, milion na Twitter, milion na LinkedIn a milion na Google+.

Přišla mi hrozně zajímavá ta změna myšlení, kdy místo počítání hodinu jedním počítačem rozdám úlohu deseti tisícům počítačů a výsledek mám za 10 vteřin. Na rozdíl od reality v AWS funguje myšlenka, že 9 žen odnosí dítě za měsíc. Když jsme se v průběhu realizace bavili s organizátory o naší aplikaci, zdvořile nám naznačovali, že nemáme sami spotřebovat veškerý připravený kredit. Asi nejsme chápaví.

Pro větší škálování se nakonec ukázal omezující výkon SQL databáze, kterou jsme použili na ukládání výsledků. Každá úloha se totiž na ni obracela přímo a musela tak vyřídit obrovské množství dotazů najednou. O provoz databáze se staral pouze jeden server. Sice velmi výkonný, ale pro obsluhu provozu z tisíců serverů to prostě nemohlo stačit. Příště bychom nenechali koncové úlohy komunikovat přímo s databází, ale pouze vrátit načtená data rodiči, který data souhrně uloží. Po úpravě bychom dokázali zpracovat za stejnou dobu tisícinásobek úloh.

Jak jsme utráceli cizí peníze

Když naše aplikace konečně začala dělat to co má, tak začala provádět stovky tisíc operací. Představoval jsem si, jak přidělený kredit mizí jako pára nad hrncem a jak budou všichni ostatní namydlení, že jejich aplikace nebude mít na čem běžet. Už jsem náš tým viděl jako vítěze o největší útratu. Tak jsem to šel zkontrolovat. Seděl jsem a škodolibě jsem se z toho radoval. Pak mě ale napadla krutá myšlenka, zda vůbec naše služba je napojena na kredit organizátorů. Chvilka napětí. Nebyla! Jak to, vždyť tam je moje vlastní platební karta! Polil mně studený pot. Rychle jsem běžel za organizátory napojit naši aplikaci na jejich účet.

Šel jsem zkontrolovat, kolik mně ta legrace stála. V duchu jsem se připravoval na osobní bankrot. Naštěstí jsem téměř nepřekročil kredit, který nabízí AWS vývojářům zdarma a stálo mne to jen 6 dolarů.

Prezentace

Na prezentace jsem byl už strašně unavený a nevyspalý. Když se mě organizátoři nečekaně zeptali, co jsme vlastně dělali, nedokázal jsem říct ani slovo. To se mi moc často nestává.

A jak jsme dopadli?

Byli jsme druzí první. Organizátoři dávali velký důraz na to, že nejsme druzí, ale že jsou dva první. Jedny označili za více první, protože měli pouze jednu hlavní výhru. My jsme dostali basu piv a tu si odnesl domů Marek. Psal, že většinu rozdal ještě v metru, protože byla moc těžká.

Osobně považuji za vítěze celé akce Marka, protože dodal design oběma vítězným týmům a možná si tam rovnou domluvil i novou práci. Na jeho příběhu jsme postavili i obhajobu celé aplikace.

Chci poděkovat organizátorům za povedenou akci. A pokud vás akce zaujala, můžete se jí zúčastnit ještě i v Brně a Ostravě.

Zdrojáky jsou přístupné na GitHub. Kvůli nedostatku času jsou dost nahackované a nesmíte z nich nic usuzovat.

Našli jste v článku chybu?

23. 10. 2015 9:03

Dobrý den,

přiznám se, že tenhle pohled mně nenapadl :-)

Kdybych to pustil na normální weby, tak by je to asi složilo. To uznávám.

Petr Ferschmann

22. 10. 2015 14:34

Díky za podporu Satai, sám bych lépe neodpověděl :-)

Pán si to přečte a pochopí. Nakonec je to ještě o něco víc.

Nejsou v tom samozřejmě mzdy interních lidí, protože provozujeme DevOps a tak se špatně odděluje Development od Operations.

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Vitalia.cz: Na pečení je nejlepší medovicový med

Na pečení je nejlepší medovicový med

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

DigiZone.cz: ČRa DVB-T2 ověřeno: Hisense a Sencor

ČRa DVB-T2 ověřeno: Hisense a Sencor

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Vitalia.cz: Znáte „černý detox“? Ani to nezkoušejte

Znáte „černý detox“? Ani to nezkoušejte

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Měšec.cz: Jak levně odeslat balík přímo z domu?

Jak levně odeslat balík přímo z domu?

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?