Jak na AWS cloud - první kroky
Už jsem tu psal, proč jsme migrovali do AWS cloudu a mělo to hezkou odezvu, takže jsem se rozhodl sepsat miniseriál o tom, jak se v AWS neztratit. Sám jsem si prošlapal několik slepých uliček, tak vám třeba ušetřím práci. V AWS je totiž největší problém nevymýšlet kolo a využívat jejich služby tak, jak byly myšleny.
Pokusím se je proto ve stručnosti představit. Určitě ale nečekejte návod krok za krokem - chtěl bych spíš vypíchnout, co je dobré nepřehlédnout nebo co naopak určitě nedělat. Budu také popisovat hlavně služby, které využíváme a mám s nimi praktické zkušenosti. AWS má rozsáhlou nabídku služeb a přestože jsme k nim migrovali kompletně všechno, tak jsem v praxi vyzkoušel zatím jen asi třetinu toho, co nabízí.
Registrace a ceny
Při registraci po vás bude chtít Amazon kreditku. Není potřeba se toho ale děsit. Pro nové účty nabízí Amazon "Free Tier" na prvních 12 měsíců provozu. Od každé služby díky tomu můžete využívat její nejzákladnější verzi zdarma. Například tak můžete celý rok zdarma používat jedno "VPS" s 1-2 jádry a 512MB RAM. Je to víc než dostatek výkonu na otestování a rozběhnete na tom i nenáročné aplikace. U každé služby najdete podmínky pro provoz zdarma - zpravidla je to ale u instancových služeb provoz nejslabší instance a u "průtokových" služeb třeba prvních 15GB dat nebo prvních milion requestů.
Každopádně ale doporučuji nastavit si "Billing Alert" (Amazon vás do toho bude také tlačit) - přijde vám pak email, když by vaše měsíční útrata měla překročit stanovenou hranici (pro testování si můžete nastavit třeba 1$). Třeba při hraní si s API totiž není těžké roztočit pár výkonných instancí, zapomenout na ně a hned vytvořit účet za tisíce dolarů. Všechny služby jsou ale placené od hodiny, takže stačí občas kouknout co vám běží a nebo jen správně nastavit upozornění.
Zabezpečení
Hned po první přihlášení si nastavte Multi-Factor Authentication. Je k tomu potřeba chytrý telefon a znamená to, že kromě jména a hesla pro přihlášení budete muset ještě opsat kód z telefonu. Ještě lepší je rovnou si od Amazonu objednat klíčenku, která pak přihlašovací kód zobrazuje místo telefonu. Pro testování ale telefon bude úplně stačit.V AWS jdou také velmi podrobně nastavovat práva jednotlivých uživatelů a služeb. Doporučuji zvyknout si používat to hned od začátku, ať potom nemusíte lovit, ve kterých službách máte ještě vyplněný přístup admina. Amazon tomu říká IAM a můžete díky tomu během pár kliknutí vytvořit například kombinaci jména/hesla pro svojí PHP aplikaci, která bude mít povoleno například číst z určité složky soubory, zapisovat do jiné a ještě třeba přes API mazat cache další služby. Nejlepší je vytvořit každé aplikaci (nebo i části aplikace) vlastní přístup a v rozhraní IAM si je pak slučovat podle funkce a naklikávat jim přístupy.
Regiony a zóny
AWS má datacentra po celém světě a je velmi důležité s nimi správně pracovat. Už po přihlášení do webového rozhraní si budete muset vždycky nejdřív vybrat "region". Tím určíte, jakou část světa aktuálně chcete řešit. Pokud jsou vaši návštěvníci primárně z Evropy, tak to máte jednoduché a vyberete EU (Ireland). Všechny zakládané služby (kromě S3, které je globální) spolu pak komunikují v rámci jednoho regionu. Pokud pak potřebujete řešit EU i US, je nutné tam speciálně vyřešit, jak spolu tyto regiony budou komunikovat.Každý region se pak dělí ještě na zóny (Availability Zones) - EU má tři zóny, východní US dokonce pět atd. Každá zóna představuje jedno datacentrum - na různých místa Irska tak jsou tři datacentra. Propojení služeb mezi zónami je narozdíl od regionů velmi jednoduché a Amazon vás bude neustále nabádat, abyste si vyřešili/aktivovali replikaci mezi více zón. Některé služby se takto dokonce replikují automaticky, takže pokud by v datacentru třeba praskla vodovodní trubka, tak vám to může být jedno a ani o tom nevíte. Pro testování si prostě vyberte jednu a další vás nemusí zajímat, dokud nebudete řešit produkční nasazení.
Podpora
Naprosto nejlepší poměr cena/výkon má placená podpora. Pokud to s Amazonem myslíte jen trochu vážně, tak rozhodně doporučuji zaplatit si jí za 50$/měsíc. Můžete pak posílat tickety, na které obvykle odpovídají během pár hodin. Měsíčně tam pošlu asi 3-5 dotazů a vždycky mi obratem přijde velmi podrobná odpověď. Žádné odpovědi typu "to bude problém u vás", ale vždy se mi snažili aktivně pomoct, a to i když jsem to měl evidentně jen já někde blbě. Navedli mě, kde to opravit, doporučili třeba i lepší postup atd.Rozhodně mi ušetřili výrazně víc peněz, než kolik jsem jim za podporu zaplatil. Samozřejmě ale nepočítejte s tím, že vám budou radit, jak nastavit v Prestashopu způsoby dodání. Maximálně vás navedou, kde založit účet v MySQL, ale přímo aplikace je vaše starost. Můžete si sice zaplatit ještě vyšší verzi podpory, ale to už jsou trochu jiné řády. V AWS neustále myslete na to, že stejné rozhraní a stejnou podporu používá třeba Netflix nebo NASA.
Způsob ovládání
Služby Amazonu můžete ovládat třemi způsoby:- Webové rozhraní - nejpohodlnější způsob a rozhodně doporučený pro začátek. Některé úkony přes to sice nejdou (zatím) udělat, ale to jsou většinou takové vychytávky, že vám dlouho ani nebudou scházet
- REST API - všechny služby mají univerzální REST API. Existují také knihovny pro PHP, Ruby atd, které ho zapouzdřují. Výborně se přes to dá všechno automatizovat
- CLI - přímo z konzole pak lze také AWS ovládat. Stačí si stáhnout balíček linuxových utilit a je to. "Amazon Linux" má tyto nástoroje předinstalované a pokud spustíte instanci s nastavenou IAM rolí (doporučuji), tak můžete pak snadno naklikat, k čemu všemu má konkrétní instance přístup
Cloud na pár kliknutí (OpsWorks)
AWS není hosting a předpokládá, že chcete znát svoji infrastrukturu dost nízkoúrovňově. Pokud ale nemáte ponětí, co je to SSH, může pro vás být zajímavé OpsWorks. Je to hezké klikátko na vytvoření celé infrastruktury. Řeknete tomu, že bude používat PHP, jaká je vaše doména a kde je GIT repozitář s vaší aplikací. Naklikáte si parametry škálování atd. a velkou část práce za vás vyřeší. Řeší to spoustu starostí, ale zároveň to má i spoustu omezení - například defaultně má jen PHP 5.3, takže pokud chcete vyšší, musíte vrtat do Chef skriptů. Sám jsem to ale nevyužíval, takže se tomu nebudu dál věnovat. Určitě doporučuje se ale aspoň podívat na jejich prezentační video a třeba to bude funkce právě pro vás. https://www.youtube.com/embed/9NnWJsS4Y2cA příště...
To byly nejzákladnější základy. Vím, že to byla pěkná nuda a nic zajímavého, ale některé věci se zkrátka napsat musí. Příště se podíváme, jak spustit první server, vytvořit si privátní síť, všechno to schovat za load balancer a hlavně jak srazit veřejné ceny o 60-70%.Další díly:
- Proč jsme migrovali do cloudu Amazonu (AWS)
- Cloud na český způsob
- Jak na AWS cloud - první kroky
- AWS cloud za hubičku! - první server, úspory a load balancer
- Vychytávky v Amazon cloudu
- Jak se programuje v cloudu
Update: Nestačí vám články? Nově nabízím i konzultace AWS cloudu :)