Amazon Cloud

Co je to AWS Cloud?

AWS, neboli Amazon Web Services, je v současnosti pravděpodobně nejrozvinutější cloud, minimálně co do počtu a šíře nabízených služeb. AWS se skládají z mnoha služeb, které si mohou zákazníci pronajmout (víceméně) nezávisle na sobě.

Pronájem má tu pěknou vlastnost, že zákazník platí jen za zkonzumovanou službu. Tedy například za strojový čas, za přenesená data, za diskovou kapacitu, za transakce, za zpracovanou položku… Což má v porovnání s jinými službami tu výhodu, že si zákazník může objednat jen to, co opravdu potřebuje. Například velký diskový prostor s relativně malou výpočetní kapacitou pro službu na ukládání souborů, nebo naopak silný výpočetní výkon a minimum diskové kapacity pro aplikace, náročné na počítání.

Dalším obrovským plusem je to, že není třeba předem přesně znát náročnost aplikace – kdykoli lze pružně přidat další virtuální server či zvětšit kapacitu. Vyhneme se tak situacím, kdy máme buď předimenzovaný a nevyužitý server (protože návštěvnost webu je menší, než jsme počítali), nebo naopak výpadky služby kvůli nedostatečnému výkonu.

Co AWS Cloud nabízí?

Amazon ve svých Web Services nabízí celou škálu služeb, od čistě výpočetních až po obchodní. Pojďme si je nejprve shrnout a setřídit.

Solutia, s.r.o.
  1. Výpočetní služby
  • Amazon ElasticCompute Cloud (EC2)
  • ElasticMapReduce Amazon
  • Auto Scaling
  1. Doručování obsahu
  • Amazon CloudFront
  1. Databáze
  • SimpleDB Amazon
  • Relational Database Service Amazon  (RDS)
  1. Deployment aplikací a správa cloudu
  • ElasticBeanstalk AWS
  • CloudFormation AWS
  1. E-Commerce
  • Amazon Fulfillment Web Service (FWS)
  1. Zprávy a synchronizace
  • (SQS) Amazon SimpleQueueService
  • (SNS) Amazon SimpleNotificationService
  • (SES) Amazon Simple Email Service
  1. Monitorování
  • Amazon CloudWatch
  1. Sítě
  • Route 53 Amazon
  • Amazon Virtual Private Cloud (VPC)
  • ElasticLoadBalancing
  1. Platby a účtování
  • (FPS) Amazon  FlexiblePaymentsService
  • Amazon DevPay
  1. Úložiště
  • (S3) Amazon SimpleStorageService
  • (EBS)Amazon ElasticBlockStorage
  • AWS Import/Export
  1. Podpora
  • AWS Premium Support
  1. Web Traffic
  • Alexa Web InformationService
  • Top Sites Alexa
  1. Pracovní síla
  • Amazon MechanicalTurk

AWS Cloud podrobněji:

S3 (SimpleStorageService)

Produkt AWS nabízí „neomezený“ úložný prostor. Využijete ji samotnou, nebo pro některé další služby (EC2 si do S3 ukládá obrazy virtuálních disků, CloudFront očekává v S3 data pro CDN). S3 si můžeme představit jako jednoduchý webový server, kde jsou uložené soubory – jako za starých časů, kdy „webový server“ ještě ani zdaleka neznamenalo „… se skriptovacím jazykem a databází“ (viz technický popis S3 na Zdrojáku).

Soubory uložené v S3 mohou být dostupné přes internet, a to jak přes web (klasickou http:// adresou), tak přes BitTorrent, což oceníte zejména když potřebujete dostat mezi lidi velké objemy dat – instalační disky apod. K souborům ovšem můžete přistupovat i přes API, např. z aplikace běžící v EC2 (nebo jinde). Poslední novinka umožnila nastavit chování úložiště S3 tak, že funguje jako webový server (tj. má indexový soubor, který je poslán při požadavku bez zadaného souboru) – celkem snadno si tak lze vytvořit levný hosting pro statické HTML stránky.

CloudFront

Se službou S3 souvisí CloudFront – ten využijete v případě, že je pro vaši aplikaci kritické, aby data byla k dispozici pro uživatele rychle a aby nebyla závislá na jednom centru. CloudFront nabízí službu CDN, tedy síť pro distribuci obsahu. Ta funguje podobně jako jiné CDN, např. Akamai – požadovaný obsah je zkopírován do různých datacenter po celém světě, takže požadavky na data obslouží nejdostupnější datové centrum (většinou geograficky nejbližší). Data jsou tedy uložena v geograficky oddělených lokacích a budou dostupná i při selhání některého datacentra, i při výpadku spojení. Technicky je CloudFront nadstavbou nad S3 – pouze určíte, která úložiště z S3 chcete distribuovat přes CloudFront, a systém se postará o překopírování.

EC2 (ElasticComputer Cloud)

Služba virtuálních serverů. K dispozici je mnoho předpřipravených instalací virtuálních strojů, od čistých systémů po komplexní řešení. U této služby je asi nejmíň co k popisování – odpovídá zhruba běžným virtuálním serverům, až na to, že pronájem se účtuje po hodinách.

EBS (ElasticBlockStore)

Pro uživatele, kterým nevyhovuje mít soubory uložené v S3, nabízí Amazon službu „blokového úložiště“ – tedy obdoby virtuálních disků, které si lze „namountovat“ k běžící instanci virtuálního počítače. Systém s ním může pracovat jako s běžným diskem, výhodou je, že po vypnutí serveru zůstanou data zachována.

Import/Export

Když si chcete data zálohovat, odnést nebo naopak nakopírovat do cloudu, nemusíte je tahat přes internet, můžete využít možnosti připravit si kompatibilní zařízení (externí disk), poslat jej do datacentra a požádat o zkopírování určených dat. Amazon zařízení přijme, dopraví do datacentra, připojí k systému, zkopíruje data dle požadavku a zařízení vám opět vrátí.

Auto Scaling

Jednoduchý všeříkající název této služby plně odpovídá: Auto Scaling za vás hlídá zatížení EC2 instancí a v případě potřeby dokáže přidat nové či odpojit nepoužívané. Tuto službu oceníte např. u aplikací, kde se v průběhu dne, týdne či jiného časového období výrazně mění zatížení.

CloudWatch

Předchozí služba je součástí širší služby pro sledování využití vašich zdrojů – CloudWatch. CloudWatch sleduje kromě EC2 i další služby (EBS, RDS, loadballancery) a pomocí připravených scénářů dokáže reagovat na určité situace a automatizovat některé činnosti.

ElasticLoadBallancing

Při rozdělení zátěže na více strojů (horizontální škálování) potřebujeme zařízení, které bude přidělovat požadavky jednotlivým strojům. V AWS k tomu slouží služba ElasticLoadBallancing. Jejím úkolem je přesměrovávat požadavky uživatelů podle zatížení jednotlivých strojů. Doplňuje se tak s předchozími službami škálování a sledování zátěže.

ElasticBeanstalk

Služba usnadňuje nasazení aplikace – spustí pro vás potřebné služby, nastaví servery atd. – a její provozování. Hlídá průběžně vytížení systému a podle potřeby zapíná či vypíná další instance, za chodu může měnit dynamicky parametry služeb, sleduje fungování vaší aplikace a může vás upozornit na problémy. Jde vlastně o obdobu managed služeb u serverů.

CloudFormation

Spouštíte nový web založený např. na oblíbeném databázovém produktu. Znamená to vytvořit nové instance, nové úložiště, nainstalovat software na EC2 servery, spustit databázové stroje, nastavit je… Tedy spousta administrátorské práce. Tuto práci vám může ušetřit právě CloudFormation, pomocí něhož si můžete vytvořit „šablony služeb“ – tedy předpřipravenou sestavu serverů a služeb AWS, včetně loadballancerů, databází, úložišť atd. Spuštění nového webu se stejnou konfigurací je pak mnohem snazší. K dispozici jsou i předpřipravené sestavy pro různé systémy – WordPress, Joomla, Redmine atd.

ElasticMapReduce

Tato služba (a několik dalších) osloví především vývojáře. MapReduce je nástroj k efektivnímu zpracovávání velkého množství dat a získávání informací. Dokáže velké množství dat efektivně předzpracovat (Map) a pak sloučit do malého objemu užitečných informací (Reduce). K vykonávání používá framework Hadoop. Pracuje nad daty v S3 a k práci si spustí instanci EC2. Připravený postup výpočtu můžete snadno zopakovat.

SimpleDB

U webových aplikací je často mnohem důležitější schopnost uložit data tak, abychom s nimi mohli dál pracovat, než se je snažit napasovat do pevně dané datové struktury. Amazon interně používá právě takovou NoSQL databázi na principu key-value – je jím právě SimpleDB (viz popis na Zdrojáku). SimpleDB umožňuje uložit data, najít data a zase je přečíst, a to na základě nějakého klíče. Nekontroluje jejich formát, což na jednu stranu umožňuje mnohonásobně vyšší dostupnost a propustnost, na druhou stranu klade nároky na obslužnou aplikaci.

RDS (Relational Database Service)

Pro uživatele, co opravdu požadují relační databázi, nabízí AWS službu RDS – tedy hostovanou SQL databázi (samosebou nikdo vám nebrání v tom spustit si např. MySQL v EC2 instanci). Amazon nabízí návody pro migraci databáze z Oracle nebo z MySQL do RDS.

SQS (SimpleQueuingService)

U rozsáhlých webových aplikací, které jsou založené na paralelním zpracování požadavků, je klíčová synchronizace akcí. Pokud se o vše stará jeden server, je snadné si v jeho rámci ohlídat např. vytvoření náhledu z nahraného obrázku apod. Pokud ale webová aplikace běží třeba na pěti stejných serverech, kde všechny obsluhují uživatelské požadavky (včetně uploadů) a o zpracování náhledů se stará jiný stroj, je potřeba mít centrální místo pro komunikaci, jakousi frontu zpráv, které si budou jednotlivé stroje mezi sebou předávat a řídit tak práci. Právě k tomu slouží SQS – je to jednoduchá služba pro výměnu zpráv mezi servery v rozsáhlých systémech.

SNS (SimpleNotificationService)

Na podobném principu jako předchozí služba pracuje i SNS – služba pro posílání notifikací (viz před časem popisovaný PubSub model). Namísto posílání zpráv „do fronty“ se zde zasílají (Push) upozornění přihlášeným příjemcům. Ti tak nemusí kontrolovat neustále frontu, jestli nečekají nové požadavky.

SES (Simple Email Service)

Služba SES, je služba která rozesílá maily. U webových služeb typu e-shopů je rozesílání mailů výraznou částí jejich činnosti. Pomocí SES lze toto rozesílání zjednodušit a spojit např. se statistikou úspěšnosti doručování.

FWS (Fulfillmet Web Services)

Pokud je vaše podnikání založeno na dodávání fyzického zboží, může se vám hodit služba fulfillmentu, což je, zjednodušeně řečeno, služba, které předáte připravené zboží a řeknete, komu se má poslat kolik kusů čeho. Podle objednávky je pak zboží zabaleno a posláno. Pro poslání pěti kousků týdně se asi nevyplatí, ale budete-li pokrývat celý svět, stojí rozhodně za zvážení. I pro tuto službu platí, že je snadno integrovatelná s dalšími službami AWS, to znamená např. že o zaslání na určitou adresu může přes jasně definované rozhraní požádat přímo aplikace (např. na základě zaplacené objednávky).

FPS (FlexiblePaymentSystem)

Když už hovoříme o zaplacené objednávce – FPS umožňuje přijímat platby od zákazníků. Platby jsou vyřizovány Amazonem (zákazník může tedy použít např. platební karty) a služba je opět integrována s AWS.

DevPay

V případě když prodáváte řešení v AWS, tedy např. nabízíte nějaké aplikace „as a service“, usnadní vám DevPay účtování strojového času vašim zákazníkům. Když budete nabízet nějaké řešení na míru, můžete jej provozovat v AWS a zákazníkům účtovat poplatky. O výběr peněz se opět stará Amazon.

Route 53

Jestliže bude vaše aplikace tvořená větším počtem serverů, začnete uvažovat o provozování vlastního DNS. A opět – můžete jej rozběhnout na virtuálním stroji v EC2, nebo můžete využít dedikované služby Amazonu, v tomto případě právě Route 53.

Amazon VPC

VPC, neboli Virtual Private Cloud, je možnost vytvořit si vlastní „cloud v cloudu“ – tedy virtuální izolovanou síť v rámci AWS, kde lze definovat, jako u fyzických sítí, vlastní topologii, vlastní adresaci apod. Pomocí VPN ji můžete spojit např. s firemní sítí a využívat tak výhod cloudu i privátních sítí zároveň.

MechanicalTurk

Na konec jsme si nechali takovou lehce kuriózní službu. MechanicalTurk nabízí lidskou práci. Tedy zpracování úloh, u nichž je zapotřebí lidského intelektu, resp. takových, kde je zpracování člověkem stále nejrychlejší. Příkladem může být hledání objektů na fotografiích (např. najít ceduli s názvem ulice a název opsat), přepis hlasových nahrávek, hledání nevhodného obsahu, psaní textů a popisů zboží, zadávání dat do formulářů z oscannovaných datasheetů, vyhodnocování relevance výsledků vyhledávání a další činnosti. Většinou se podobné úlohy řeší najmutím dočasné pracovní síly (resp. nahnáním všech dostupných i nedostupných zaměstnanců na tuhle mechanickou činnost pod heslem „Kdo má ruce, ten pomáhá“). MechanicalTurk nabízí právě takové „najmutí dočasné pracovní síly“ pro úlohy, které lze zadat vzdáleně. Umožňuje kontrolovat správnost – např. jedna a tatáž fotografie je zadána více lidem a pokud se jejich odpovědi shodují, je tato odpověď považována za správnou.

Využití AWS Cloud

Pro všechny tyto služby existuje dokumentované aplikační rozhraní (API), takže je možné jejich provoz řídit programově – např. podle potřeby spouštět další servery. Jen s malou mírou nadsázky lze napsat, že pokud aplikace potřebuje nějakou náročnou operaci, nemusí vytvářet nový proces, ale může si nechat vytvořit rovnou celý nový počítač, který spočítá potřebné, vrátí výsledky a zase se zruší – a pokud je třeba takových operací provést sto najednou, lze vytvořit sto virtuálních počítačů.

K tomu, aby web využil všech výhod cloudů, tedy především snadného horizontálního škálování výkonu i kapacity, je navíc zapotřebí, aby byl už od počátku navržen pro paralelní zpracování úloh. Aby v aplikaci nebyla kritická místa – nějaké „centrální uzly“ či procesy, které nelze dělat najednou na více místech. Už při návrhu je potřeba počítat s tím, že vyšší výkon nebude získáván silnějším hardware, ale větším počtem samostatných serverů, a stavět aplikaci tak, aby například nekonzistence dat (tzn. v jednom okamžiku mohou dva různé servery dostat z databáze různé údaje) neohrozila chod či nepředstavovala principiálně havarijní stav.

Co nabízíme v rámci AWS Cloud řešení?

Firma Solutia, s.r.o. nabízí v rámci AWS Cloud řešení pomoc s návrhem a realizací přesunu části nebo celé stávající infrastruktury do jedné nebo více služeb platformy. Pomoc s vytvořením nové plně cloudové infrastruktury a napojením na stávající on premise řešení (hybridní infrastruktura). Předvedení a vysvětlení jednotlivých PaaS služeb platformy.

Zprostředkování nákupu licencí, cloudových kreditů a cloudového výpočetního času.