Vychytávky v Amazon cloudu

Posted 02. 03. 2014 / By Petr Soukup / Internet

awslogoKonečně vám prozradím, v čem se mi AWS cloud hlavně líbí. Už jsem tu popisoval základy práce s AWS, ale popisované funkce zvládne i lecjaká konkurence. Tentokrát místo dlouhého popisování jen vyzobu nejzajímavější killer features.

Route 53 - chytré DNS

Route 53 je na první obyčejné rozhraní na správu DNS, ale skrývá v sobě několik vychytávek. Především jsou to velmi rychlé aktualizace záznamů. Standardně jste zatím všude určitě narazili na informaci, že změna DNS záznamů se projeví během 24 hodin. Route 53 ale používá velmi nízké TTL a navíc anycast, takže není problém dosáhnout distribuce aktualizace záznamů pod minutu.

Velmi zajímavé pak u Route 53 jsou Health Checks. Můžete například definovat, že se bude kontrolovat určitá url a pokud nebude obsahovat požadovaný řetězec, provede se akce. Díky tomu můžete například velmi snadno vytvořit failover na úrovni DNS. Narozdíl od loadbalanceru, kde failover probíhá během několika sekund je tady prodleva kolem minuty, ale stejně může DNS failover v některých situacích být lepším řešením než loadbalancer.

Kromě zmíněného je také možné definovat pro jednu subdoménu více záznamů (například více IP adres) a definovat jim pravidla - například jejich váhu (bude posílat více požadavků na silnější instanci) nebo výběr instance podle geografické lokace návštěvníka (vrátit IP US serveru pro návštěvníka z US atd.). To celé pak lze kombinovat, takže můžete mít třeba cloud v US i EU a pokud vypadne celé US, tak na úrovni DNS jen přepnout provoz na EU.

Simple Queue Service (SQS)

SQS je v základním principu úplně primitivní služba, ale přitom řeší elegantně zásadní cloudové problémy. Jak i název napovídá, tak SQS řeší fronty. Z jedné strany do SQS sypete položky (například údaje o jednom produktu zformátované do JSON) a z druhé strany si je vyzvedáte. Na tom není nic světoborného, ale killer feature se z toho stane, když začnete řešit velké objemy dat nebo špičky v přísunu dat nebo paralelní zpracování a nebo všechno najednou.

U nás SQS používáme například na rozesílání SMS. Eshop naloží zásilky do dodávky PPL a potřebuje odeslat třeba 500 zpráv (obvykle to navíc provede v podobný čas spousta eshopů zároveň). Jestli se SMS odešle hned nebo za 15 minut je celkem jedno, ale nemá smysl, aby skladník na odeslání čekal. Místo odeslání se tak zprávy jen odešlou do SQS. Následně pak se pak SMS brány (GSM modemy) připojují do SQS a vždy si tam vyzvednou jednu zprávu a odešlou. Kouzlo SQS je v tom, že to klidně mohou dělat paralelně a nemusí nic řešit. Když totiž jedna brána vyzvedne zprávu z fronty, je tato zpráva pro ostatní nedostupná (například na minutu dle nastavení). Pokud se podaří zprávu odeslat, brána ji z fronty odstraní. Pokud se to nepodaří (brána je třeba vadná), tak ve frontě zůstane a po vypršení zámku ji odešle jiná brána.

Geniální na tom celém je, že vývojář nemusí řešit vůbec žádné problémy s paralelním zpracováním. Zámky, vypršení zámků, odstraňování mrtvých zpráv (zprávy, které nejdou odeslat ani třeba po 100 pokusech) řeší jen SQS a my to řešit nemusíme. Hravě tak napíšete aplikaci pro jednu bránu a při pozdějším přidání dalších se nemusí nic dalšího řešit.

zakládání AWS SQS

Simple Notification Service (SNS)

SNS je primárně určené pro push notifikace například pro mobilní zařízení. Vy jen pošlete zprávu na předem definovaný kanál, ke kterému jsou přihlášení odběratelé a Amazon se postará o distribuci. Kdybyste si to programovali sami, tak poslat jednu zprávu třeba na 500 000 zařízení ve stejný čas je celkem výzva, ale s SNS je to otázka zavolání jednoho příkazu v API.

U nás používáme SNS pro asynchronní akce. Občas je potřeba na základě jedné akce vykonat několik dalších, které na sobě nezávisí a navíc ani nemusíme čekat na výsledek. Použiju opět příklad s hromadným odesláním SMS. S každou zprávou je potřeba udělat tři úkony: odeslat zprávu, uložit text zprávy do historie, nafakturovat odeslání. S SNS je taková sekvence jednoduchá - vytvoří se topic pro odeslání SMS a ten bude mít tři odběratele: frontu SQS pro odesílání (viz výše) a dvě URL. Při samotném odeslání tak nemusíme vůbec čekat na výsledek a tyto tři akce se provedou paralelně. (samozřejmě by odeslání SMS šlo řešit i lépe, ale berte to jen jako příklad)

Špička ledovce

Zmiňované služby jsou těmi nejzákladnějšími - přecijen jejich fungování šlo popsat v jednom odstavci. Snad je z toho ale poznat, v čem je Amazon cloud zajímavý. Není to totiž jen hloupý hosting, ale rovnou nabízí spoustu doplňkových služeb, které řeší konkrétní problémy, na které v cloudu narazíte. Při vývoji se tak nepíše jen kód, ale často se hledá, jak slepit tyto služby za sebe, aby dělaly co je potřeba a nemuseli jsme to řešit sami. Protože jsou spolu kompatibilní (například v rozhraní SNS jde rovnou naklikat napojení na SQS), tak podobné postupy vznikají velmi snadno.

Největší problém v AWS potom je zorientovat se v jejich nabídce a hlavně nevymýšlet kolo.

Další díly:

  1. Proč jsme migrovali do cloudu Amazonu (AWS)
  2. Cloud na český způsob
  3. Jak na AWS cloud - první kroky
  4. AWS cloud za hubičku! - první server, úspory a load balancer
  5. Vychytávky v Amazon cloudu
  6. Jak se programuje v cloudu

Update: Nestačí vám články? Nově nabízím i konzultace AWS cloudu :)



O blogu
Blog o provozování eshopů a technologickém zázemí.
Aktuálně řeším hlavně cloud, bezpečnost a optimalizaci rychlosti.

Rozjíždím službu pro propojení eshopů s dodavateli.