Náš (ne)náročný přechod do AWS

Photo by Jason Blackeye on Unsplash

Na podzim minulého roku jsem narazil na srazu v Brně na partu kluků, kteří se bavili o AWS (Amazon Web Services). Celé mi to přišlo takové nijaké. Proč bych sakra měl používat nějaké klikátko na správu serverů a ještě za něj platit tolik peněz. Do této doby jsem jako správný geek vlastnil pár virtuálních serverů a svépomocí je bastlil dohromady, abych na nich rozjel vše potřebné pro běh našich aplikací. Jmenovitě šlo o databáze, elastic, Nginx, Node.js, PHP-FPM a pár dalších hraček.

Měsíc první — Kam s daty

Zálohovat, zálohovat a zase zálohovat. Po měsíci od té osudné konverzace v Brně se stalo něco hrozného. Náš (dokonalý) cluster se rozpadl jako domeček z karet. Všechna data uživatelů jsou pryč a zálohy jsou několik dní staré. Po celodenním skládání serverů jako kostiček Lego se nám podařilo dát vše dohromady, ale bylo naprosto nepřípustné, aby se někdy v budoucnu něco podobného opakovalo a tak jsme začali hledat místo, kam můžeme ukládat naše zálohy.

Podmínkou bylo stabilní a bezpečné úložiště. Vzpomněl jsem si tedy na AWS a jeho službu S3 storage. Po chvilce hledání jsem našel vše potřebné a ještě ten den se nám podařilo na starý server napasovat zálohování do S3 bucketu pomocí AWS-CLI.

Řekl jsem si, že zálohy máme a ještě k tomu využijeme velice levného úložného prostoru a začali jsme tam tedy nahrávat naprosto všechna data od uživatelů a bylo vystaráno.

Měsíc druhý — Kontrola aplikací

Aplikace generují velké množství informací o svém správném i nesprávném fungování a my je chceme mít centrálně uložené na nějakém hezky dostupném místě. Shodou náhod narazím na službu AWS CloudWatch Logs a skrze PHP-SDK ji implementuji místo stávajícího file logu. Jsem opět o krok blíže běhu našich aplikací v oblacích.

Měsíc třetí — Síť CDN

Řešení přímého načítání dat z S3 storage nám postupem času začalo dělat potíže, protože je načítali uživatelé a otravní roboti a tato služba nemá (pokud vím) žádnou důmyslnější ochranu proti spamu (v AWS platíte za to co využijete a pokud vám roboti či uživatelé stále dokola načítají tisíce obrázků, tak vás to logicky něco stojí). Přešli jsme na CloudFront. Jde v základu o velice jednoduché CDN, které se dokážete napojit na váš S3 bucket a čerpat z něj data. Můžete si nastavit expiraci dat, protokol, ale nás nejvíce zajímalo načítání z určitých IP adres a ještě lépe omezení traffiku v určitých zemí.

Měsíc čtvrtý — Máme tam všechno

Už nám zbývalo přesunout do cloudu jen servery jako takové, ale cena nám přišla stále veliká a instalace složitá. Nakonec jsem se jednoho dne rozhoupal a rezervoval nám instanci na jeden testovací server u kterého si zkusíme zda to půjde. Měl jsem sepsaný postup co vše budu muset instalovat, ale už u prvního kroku jsem se zarazil. Jsme v cloudu a nepotřebujeme na serveru provozovat databáze ani Elasticsearch, protože tyto služby poskytuje sám Amazon.

Rozjet server s PHP, Node.js a Nginxem byla otázka pár minut. Díky této úspoře jsme se tak zbavili serveru s databází a dalšího serveru, na kterém by nám běžel Elasticsearch. Všechna data máme v S3 a můžeme tak mít server jen s 8 GB diskového prostoru. Rozchodit server tak bylo velice snadné a stačilo použít malé a tím pádem levnější serverové instance.

Jen jako třešničku k tomuto měsíci dodám, že se nám podařilo přejít na úžasně jednoduchou službu na odesílání mailů SES (Simple Email Service).

Měsíc pátý — Kontejnery?

Ještě to nějaký ten pátek potrvá, ale chceme aplikace rozdělit do kontejnerů a zbavit se tak EC2 instancí, což jsou v podstatě jen obyčejné virtuální servery a nahradit je službou ECS, která dokáže z kontejneru udělat celý server naprosto bez práce.

K závěru bych chtěl dodat, že jsme stále hodně ve vývoji a učíme se trošku metodou pokus omyl, takže prostor pro zlepšení je obrovský a občas mě deprimuje kolik služeb vlastně Amazon má a my je ještě nevyužíváme.

Rozhodně považuji přechod z klasického serveru jako cestu správným směrem. Náklady máme díky rezervovaným instancím poloviční a dokážeme neskutečně rychle růst. Na AWS je super jejich free tier, který vám umožní zdarma otestovat základní komponenty systémů a zhodnotit zda je pro vás další postup výhodný či nikoliv.

Softwarový vývojář, architekt a konzultant cloud řešení.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store