Na kolik vyjde hosting v cloudu?

Posted 20. 03. 2016 / By Petr Soukup / Cloud

Jedna z nejčastějších otázek, kterou ohledně cloudu dostávám je "na kolik mě vyjde provoz v cloudu?". Amazon na to sice má kalkulačku, ale bez přehledu o jeho službách vám z ní nejspíš vyjde hodně zavádějící suma. Zkusil bych proto na jednoduchém příkladu nastínit, jak "cloudovější" přístup při migraci může dramaticky změnit cenu.

Zadání

Mějme blog (třeba na wordpressu) s denní návštěvností 20 000 UIP, který je nyní hostovaný na dedikovaném serveru (32GB RAM, 1 x 4core E5-1620 3.6 Ghz, 120GB SSD) za 4 500 Kč/měsíc.

Není to skutečný projekt, takže čísla berte s rezervou - střílím je od boku.

Varianta A: jedna instance

Nejtypičtější postup je vzít si současnou konfiguraci a dát ji do kalkulačky AWS. Nejlevnější přibližně odpovídající instance je m4.2xlarge a její provoz vyjde na 9 500 Kč/měsíc. K tomu se pak ještě připočítají datové přenosy a různé drobnosti, takže celkové náklady budou kolem 10 500 Kč/měsíc.

Cena je tedy více jak dvojnásobná oproti dedikovanému serveru. Nic zásadního jsme ale oproti němu navíc nezískali. Pokud by došlo k nějaké poruše (hardware, segfault webserveru, ...), tak budeme offline stejně jako u původního serveru. Jen obnovení provozu bude rychlejší, ale to samé zvládne většina VPS a nepotřebujeme na to Amazon.

V tomhle momentě většina lidí cloud zavrhne jako drahý a jde dál. Jenže ono je možností více.

Varianta B: více instancí

Databázi dáme samostatně do AWS RDS. Použijeme instanci db.m4.large za 3 400 Kč / měsíc. Webserver nám poběží na třech instancích c4.large, což by vyšlo na 5 700 Kč/měsíc. Nám ale stačí v noci jen jedna instance, ve dne dvě a ve špičce tři. Celkově tak webserver vyjde jen na 3 800 Kč + 500 Kč za loadbalancer + 300 Kč za Elasticache.

Celkové náklady jsou 9 000 Kč / měsíc. Oproti předchozí variantě ale už většinu dne běžíme z více instancí. Kdyby došlo k nějakému problému, tak se instance vyřadí a automaticky nahradí - návštěvník tak problém vůbec nepozná. To už je kladný bod pro cloud.

Tahle varianta už ale vyžaduje úpravy aplikace - session ukládané do Elasticache místo lokálního disku, upravený deploy proces a podobně. Nebývá to nic komplikovaného, ale už nestačí udělat jen copy&paste.

Varianta C: více levných instancí

Když už nám aplikace umí běžet z více instancí, tak toho rovnou využijeme a použijeme Spot instance (už jsem o nich psal). Jsou výrazně levnější než normální, ale mohou se kdykoliv (s krátkým varováním) vypnout. Pokud s tím počítáme, tak to vůbec není problém. Abychom ale neriskovali nedostupnost, raději zvýšíme počet instancí - v noci dvě instance a přes den čtyři instance.

Celkem instance vyjdou měsíčně na 1 200 Kč / měsíc. K tomu stejně jako ve variantě B databáze, loadbalancer a Elasticache za 4 700 Kč.

Celkově jsme na 5 900 Kč / měsíc. Oproti předchozí variantě ale už webserver vždycky běží minimálně ze dvou instancí, takže jsme si zajistili mnohem lepší dostupnost. Pokud by navíc přišla špička návštěvnosti, můžou se spouštět další instance, aniž by nám to nějak zásadně ovlivnilo rozpočet (denní provoz jedné stojí 12 Kč). Slabým místem je ale pořád databáze, která stále běží z jedné instance.

Varianta D: levné instance a dostupná databáze

Vše necháme stejné, ale MySQL databázi vyměníme za Auroru. Jsou zcela kompatibilní, takže v aplikaci nemusíme nic měnit. Oproti klasickému MySQL je výkonnější a hlavně mnohem dostupnější. Pokud by došlo k nějakému problému, může se prakticky okamžitě spustit z jiného stroje - včetně připravené cache a všeho.

Nejmenší Aurora rb.r3.large vyjde na 5 700 Kč. Nám by stačila i menší, takže budeme mít dost zásadní rezervu. Celkově tak provoz vyjde na 7 700 Kč / měsíc. Oproti předchozím variantám už ale máme všechny části součásti zajištěné. Cokoliv by mělo problém, tak to nikdo nepozná, protože máme všechno minimálně dvojmo. Navíc máme u databáze (skoro až zbytečnou) rezervu, takže bychom bez obtíží zvládli násobně větší návštěvnost.

Na téhle variantě je ještě zajímavé, že může fungovat mezinárodně. Během pár minut můžete zduplikovat infrastrukturu třeba do USA. Databáze se bude replikovat, takže americký návštěvník bude mít všechno rychlé a přitom vy se budete dál starat jen o jednu verzi.

Varianta E: optimalizovat

Úplně nejlepší by ale samozřejmě bylo celý wordpress zahodit a místo něj si udělat aplikaci na míru. Ta bude úsporná a může už s cloudem počítat. Například relační databáze je pro blog poměrně zbytečný luxus a mohli bychom ji vyměnit za DynamoDB - je řádově levnější a v cloudu hezky škáluje. Blog by pak bylo možné snadno provozovat s náklady kolem 2 000 Kč / měsíc a při dvojnásobné návštěvnosti třeba 2 500 Kč / měsíc. Už ale nejde jen o migraci, ale o kompletní přepsání.

Varianta F: statický blog

Nejextrémnější varianta pak je mít statický blog. Můžete mít například wordpress hostovaný na malé instanci, která je většinu času vypnutá. Pro přidání nového článku ji zapnete, napíšete článek a spustíte skript (pluginy na to jsou), který z něj vygeneruje statický web. Případně můžete blog psát v markdownu, commitovat do repozitáře a mít nastaveno, že se po commitu vygeneruje statická verze (tak funguje tento blog).

Také je možné provozovat to úplně celé v AWS. Administrace může být řešená javascriptem (přihlašování řeší AWS) a při uložení se přes API Gateway zavolá Lambda funkce, která provede vygenerování statické verze. Z pohledu uživatele se pak blog může tvářit jako klasický dynamický web a veškerá statická magie probíhá na pozadí.

Tenhle přístup je spojený s určitými kompromisy a znamená dost práce, aby to vůbec bylo uvedené do chodu. Pokud se ale spokojíte s jednodušším rozhraním (třeba zmiňovaná verze přes repozitář), tak už jsou na to hotová řešení. Tahle varianta má ale zcela zásadní výhodu:

Pokud blog schováte za Cloudflare (základní verze zdarma), tak najednou platíte jen obsazený prostor - zhruba 12 Kč / měsíc. Web navíc bude maximálně rychlý - všechno je statické, takže načtení stránky je otázkou milisekund. Rychlé to navíc budez celého světa, protože statický obsah se snadno distribuuje přes Cloudflare. Už vás navíc ani nezajímá návštěvnost. Jestli na blog chodí denně 20 000 lidí nebo 200 000 lidí už pro vás neznamená rozdíl - funguje to pořád stejně a pořád za stejné peníze.

Závěrem

Vypsal jsem tu jen základní varianty a u skutečného projektu by se řešilo spíš něco mezi nimi. Stejně na tom ale vidíte, že rozptyl měsíční ceny může být mezi 12 Kč a 10 500 Kč. U cloudu je velmi důležité podívat se na celý problém trochu s nadhledem. Pokud chcete jen přenést aplikaci z hostingu 1:1, tak pro vás cloud není - utratíte v něm spoustu peněz a bez nějakého zásadnějšího přínosu.

Potřebujete s migrací poradit? Nabízím konzultace! Posadíme se, vysvětlíte mi svůj projekt a já vám zkusím vysvětlit, jakou cestou se můžete vydat. AWS je složený z desítek služeb, které je potřeba šikovně pospojovat za sebe, abyste cloud skutečně využili.

Tags: cloud, aws


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.