Cloud hosting aneb hosting v oblacích

Termíny grid computing, cloud computing nebo cloud hosting se objevují stále častěji. Bylo by chybou domnívat se, že jde o oblast vyhrazenou jen velkým firmám; vůbec tomu tak být nemusí a i váš projekt může některé z těchto technologií využít. Článek nastiňuje odpovědi na otázky: Jaké technologie, proč, na co a jak?

Grid computing, cloud computing, cloud hosting – co ta slova znamenají?

Terminologie je, podobně jako u každé novinky, poněkud neustálená, některé termíny jsou používány nepřesně či jsou volně zaměňovány. Z česky psaných textů na toto téma bych doporučil ty od Jana Kodery (Cloud vs Grid a Termíny spojené s cloudy), popř. tematickou sekci Buzzmagu. My se v tomto článku nebudeme pouštět do teoretických definic či sporů „cloud vs grid“, zůstaneme u praktických otázek, jako například:

Tak co to tedy ten cloudhosting je a k čemu to je?

Představte si, že pro svůj projekt potřebujete určitý výpočetní výkon a datový prostor. Pořídíte si tedy stroj, který má odpovídající počet procesorů, odpovídající velikost úložiště a odpovídající rychlost. Váš projekt pak začne růst a ukáže se, že potřebuje vyšší výkon. Přidáte tedy procesor. Nebo dva. A zvýšíte frekvenci. Přidáte další disky do diskového pole. Pak přidáte další procesory, pak další a další… A nakonec máte výkonný počítač, který je za dva roky zastaralý.

Nebo máte server s nějakou návštěvností. Lebedíte si, protože víte, že hardware utáhne i trojnásobnou zátěž. A pak jednoho dne o vás napíše Slashdot a odkáže Digg – a váš server za půl hodiny padne, protože je sice dimenzován na trojnásobnou zátěž, ale na padesá­tinásobnou už ne. A tak jen sledujete, jak si váš skvělý projekt dělá skvělou reklamu tím, že je nedostupný zrovna v TAKOVOU chvíli, no a vyčkáváte líbesbríf od vašeho poskytovatele hostingu, že překračujete povolený traffic a kdovíco ještě a že byste měl zvážit… A v tu chvíli si povzdychnete: „Škoda, že server není nafukovací!“

Ale on nafukovací být může. Musel by být virtuální – každý, kdo kdy pracoval s nějakým emulátorem nebo virtuálním počítačem, ví, jak jednoduché je zvětšit paměť, výkon, počet procesorů, stačí je mít jen fyzicky k dispozici. A to je zároveň odpověď na otázku v podnadpisu.

Cloud hosting je – zcela laicky řečeno – hosting, který oplývá clusterem s obrovským výpočetním výkonem a obrovským úložným prostorem, a tuhle svou kapacitu pronajímá zákazníkům v podobě virtuálních počítačů.

Jak to vypadá v praxi?

Představte si obrovský celosvětový e-shop. Něco jako Amazon. Takový e-shop potřebuje obrovskou a kvalitní počítačovou infrastrukturu, dimenzovanou na sezónní nápory koupěchtivých, protože e-shop, co by třeba před Vánoci spadl, už příští rok nevstane. Takže provozovatelé pořídí gargantuovský cluster, který ustojí desetinásobek předvánoční nákupní špičky. Problém je ale ten, že po zbytek roku většina tohoto obřího výkonu zahálí, chytá lelky a z nudy píše emo básně (tzv. Marvinův syndrom) – čili jen zbůhdarma spotřebovává proud. Logické rozhodnutí je nenechat ležet výkon ladem, ale provozovat na něm virtuální servery a pronajímat je zákazníkům. Stačí už jen vymyslet název. Co třeba Elastic Computer Cloud (ECC), neboli:

Amazon EC2

Amazon Elastic Computer Cloud (EC2) patří do portfolia služeb, nazývaných souhrnně jako Amazon Web Services (AWS) Kromě cloudu EC2 do těchto služeb patří např. známější Simple Storage Service (S3) a další služby, jako je CloudFront (CDN – Content Delivery Network, tedy síť pro šíření obsahu), SimpleDB (jednoduchá databáze) či Simple Queue Service (SQS). Pojďme si říct pár slov o každé z těchto služeb, protože se s podobnými setkáme i u dalších podobných cloudhostingů.

EC2 je platforma, na níž si zákazník spouští instance virtuálních strojů. Stačí specifikovat parametry počítače (počet procesorů, velikost operační paměti, velikost disku) a říct, jaký obraz operačního systému má být nahrán a spuštěn. Obrazy OS se v terminologii AWS nazývají AMI – Amazon Machine Image (obdoba virtuálních obrazů známých např. z VMWare) a můžete si vybrat z připravených nebo vytvořit vlastní. AMI obsahují většinou obraz nějakého systému (Windows server či *NIXový systém), někdy s předinstalovaným SW (webserver, databáze) či kompletní připravenou instalací nějaké aplikace, např. e-shopu.

Cloud AWS

Ale pozor: Virtuální stroj, který běží na platformě EC2, není persistentní. Pokud se stane, že konkrétní kus hardware, na němž zrovna váš AMI běží, zkolabuje, tak o data v něm vložená přijdete; Amazon totiž nikde negarantuje zálohování běžících virtuálních strojů. Přistupovat k EC2 jako k běžnému hostingu, kdy na jednom stroji máte server, statická data i databázi, by se mohlo ošklivě vymstít. Vypadá to na první pohled jako omezení, které sráží použitelnost podobného hostingu kamsi k nule, ale není tomu tak.

Použití podobného hostingu totiž vyžaduje změnit nahlížení na aplikaci – z „programocentric­kého“ pohledu, v němž jsou nejdůležitější vaše (bezesporu geniální a kvalitní) skripty, na pohled „datacentrický“, tedy že „to nejdůležitější jsou data, server a skripty se mohou kdykoli obnovit ze záloh a nic závažného se nestane.“

Amazon S3

Amazon pro „to nejdůležitější“, tedy data, nabízí službu S3, tedy Simple Storage Service. V zásadě nejde o nic víc, než jednoduché datové úložiště, které umožňuje soubor uložit, přečíst či smazat. K tomu nabízí jednoduchý systém oprávnění podobný souborovým právům známým z unixu a rozhraní, postavené na HTTP (REST). Na rozdíl od virtuálních strojů v EC2 jsou data v S3 zálohována a ukládána redundantně. Do S3 si ukládáte nejen veškerá data, která potřebujete, ale ukládáte si tam i obrazy svých serverů (AMI), z nichž je snadno v případě potřeby nastartujete. Data jsou dostupná nejen vašemu virtuálnímu stroji, ale jsou přístupná veřejně (pokud, samosebou, jsou tak nastavena práva). Všimněte si např. u Twitteru, že některé soubory (obrázky, ikony) jsou načítány z adres, které začínají „http://s3.ama­zonaws.com“.

CloudFront

Se službou S3 je provázána služba CloudFront. CloudFront je služba, která slouží k rychlé distribuci dat po celém světě (CDN, Content Delivery Network). K tomu účelu používá několik datových uzlů v různých místech celého světa. Pokud chcete distribuovat velké objemy dat (video apod.), může být jejich distribuce z jednoho místa obtížná a pomalá. Pak je na místě využít CDN, jako je CloudFront. Stačí označit data v S3 speciálním příznakem a infrastruktura Amazonu se postará o jejich zkopírování do uzlů tak, aby se k uživatelům kdekoli na světě dostala co nejrychleji.

Cloud Mosso

Mosso

Amazon není jediný, kdo podobné služby nabízí. Podobných nabídek se začíná objevovat čím dál víc. Amazon je ale do jisté míry průkopníkem komerčních služeb tohoto typu. Služby dalších poskytovatelů jsou těm od Amazonu často podobné. Jedním z příkladů je např. cloud společnosti Rackspace s názvem Mosso. Mosso nabízí vlastní obdobu EC2 pod názvem Cloud servers. Obdobou S3/CloudFront je u Mosso služba Cloud Files. Cloud Files nabízí krom úložiště i šíření obsahu pomocí CDN Limelight. Krom těchto základních služeb nabízí Mosso i předpřipravené virtuální servery, nazývané CloudSites (obdoba VPS).

GoGrid

GoGrid je opět obdobou výše zmíněných, s drobnými rozdíly, např. nenabízí veřejný přístup k datovému úložišti. Už podle uživatelského rozhraní je GoGrid určen pro aplikace, které využijí load balancer, několik serverů, několik databázových strojů a datová úložiště.

Cloud GoGrid

Samozřejmě že výše jmenované služby nejsou jediné. Svou variantu cloudhostingu nabízí např. i Google (App Engine) a další poskytovatelé. Předpokládám, že v tuto chvíli máte na jazyku hlavně dvě otázky. Odpovím nejdřív na tu obecnější.

K čemu to je?

Podívejme se na nejčastější případy nových projektů u mladých nadějných internetových tvůrců a podnikavců, a na příkladech si ukažme, zda je vhodné použít cloudhosting.

MFA microsite
Není třeba
Komunitní nástroj na sdílení odkazů
Není třeba, nároky nepřesáhnou možnosti běžného hostingu
Komunitní nástroj na sdílení odkazů, ale LEPŠÍ NEŽ OSTATNÍ
Není třeba
Vysoce odborný weblog o programování, obchodování na internetu a dění v naší třídě
Nerentabilní
Vyhledávač zboží a eshop
Není třeba
Hosting / bloghosting
Není třeba
Katalog stránek
Není třeba
„Nainstaluju Drupal / Joomlu / WordPress a…“
Nevhodné

Pro 95 % nových projektů tedy cloudhosting není potřeba.

Pro jaké projekty je ale vhodné o použití cloudhostingu uvažovat?

  • Pro projekty, které pracují s velkými objemy dat (např. videoservery, file hostingy, fotogalerie)
  • Pro projekty, u nichž je důvod předpokládat, že budou rychle růst a nevyplatí se investovat každého půl roku do nového stroje
  • Pro projekty, u nichž není nikdo schopen předem odhadnout nároky
  • Pro projekty, které lze snadno převést na paralelní úlohy a využít tak výhod paralelního zpracování dat více stroji
  • Pro projekty s „nárazovou“ návštěvností

Já osobně bych použil právě výše zmíněné úložiště S3 např. i pro službu typu TWIO, tedy „úložiště obrázků pro twitterování“. Kdybych podobnou službu psal, tak využiji malé jádro na serveru, běžící klidně na sdíleném hostingu, a obrázky bych ukládal na S3, nezávisle na fungování českého serveru a doslova za pár korun. A tím jsme se nenápadně dostali k druhé otázce:

Ceny cloudhostingu

Ceny jsou překvapivě „lidové“. Na rozdíl od klasického hostingu platíte u cloudhostingů jen „spotřebovaný strojový výkon“. Jednoduše řečeno – když nikdo nechodí a není provoz, tak platíte míň, když se provoz zvýší a přidáte na výkonu, zaplatíte víc.

U výše zmíněného Amazonu vás přijde jedna hodina strojového času na „malé“ instanci“ na deset amerických centů. Malá instance představuje jednu „procesorovou jednotku“ (zhruba odpovídá 1GHz Opteronu), 1.7GB RAM a 160GB HDD. Větší instance pak stojí 20, resp. 80 centů za hodinu času. 80 centů za hodinu zaplatíte např. za běh High-CPU instance – 20 jednotek, 7GB RAM, 1690GB HDD, 64bit. Podobně jsou účtovány ostatní služby – např. u S3 platíte 15 centů měsíčně za uložený gigabajt, 10 centů za přenesený gigabajt, 1 cent za každých 1000 POST/PUT/LIS­T/COPY požadavků a 1 cent za každých 10.000 GET požadavků. U CloudFront jsou ceny o něco vyšší. (Pokud jste z cen zmatení, nepanikařte – můžete použít kalkulačku a snadno zjistíte, že za „cosi jako malý vlastní server“ zaplatíte měsíčně okolo 75 USD.)

U GoGrid je situace obdobná, tedy necelých 100 dolarů za měsíc provozu minimální sestavy. Pokud si chcete služby vyzkoušet, můžete – při registraci dostanete 50USD kredit na experimenty. Pro několikadenní testování je to ideální dárek.

Mosso vychází ze všech tří zmiňovaných nejlevněji, provoz nejmenšího serveru vyjde na 25 dolarů za měsíc.

Pro lidi i programátory…

Pokud se děsíte toho, že si budete muset psát nějaké knihovny pro přístup k datovým úložištím a studovat všechny ty REST API, tak vězte, že nebudete. K dispozici je mnoho knihoven v nejrůznějších jazycích, ať už přímo od poskytovatelů, nebo od třetích stran. Například obrazy virtuálních serverů u Amazonu obsahují rovnou nejdůležitější utility pro využití ostatních služeb, nemusíte se tedy obávat toho, že budete muset někde něco složitě stahovat, nastavovat a vymýšlet.

Popisované služby mají dobře dokumentovaná rozhraní, takže k nim existují dostupné aplikace pro nejrůznější úlohy, a v případě potřeby si můžete vhodnou aplikaci napsat i sami, fantazii se meze nekladou. Co třeba použít Amazon S3 jako levné místo pro ukládání záloh? 10 uložených GB a 1GB uploadu měsíčně vás přijde na necelé dva dolary (1.60USD).

Cloudy a CDN jsou často použity pro nejrůznější online služby typu „vytváření náhledů stránek“, „počítadla“, „statistiky“ apod. (Není náhodou, že do AWS patří i známá Alexa). Z těch zajímavějších aplikací mě napadá například StreamInCloud­.com – služba, která převádí videa (AVI, MOV, MPEG apod.) do formátu FLV. Jediné, co pro to musíte udělat, je povolit jí přístup do vašeho S3 úložiště a nahrané soubory označit speciálním příznakem. Během několika chvil se objeví na určeném místě zkonvertovaný FLV soubor, připravený k distribuci…

Závěr

Cloudhosting není ani „webhosting pro ty, co chtějí ukázat, jak jsou cool“ ani „předražený nesmysl“. Nasazovat na provoz weblogu pod WordPressem nebo na „katalog stránek“ cloudhosting nebude mít žádný citelný efekt, krom pošimrání ega. Cloudhosting je především služba, která umožňuje vytvářet výkonné a náročné online aplikace bez potřeby budování nákladné a předimenzované infrastruktury.

Pokud cítíte, že vaše aplikace naráží na omezení, ať už kapacitní nebo výkonová, je načase zvážit, zda investovat další peníze do „železa“ (které stejně 90 % času zahálí a 5 % času nestíhá), nebo do migrace na „virtuální železo“. Cloudhosting je rozhodně zajímavou alternativou, která stojí za zvážení. Za ceny, které se blíží sdílenému hostingu nabízí komfort, leckdy převyšující vlastní dedikovaný server.

Užitečné odkazy:

Využíváte cloud hosting?

Začal programovat v roce 1984 s programovatelnou kalkulačkou. Pokračoval k BASICu, assembleru Z80, Forthu, Pascalu, Céčku, dalším assemblerům, před časem v PHP a teď je rád, že neprogramuje…

Komentáře: 25

Přehled komentářů

mludvig s3cmd
Michaelson Re: s3cmd
gawan ako sa to nafukuje?
Jan Kodera Re: ako sa to nafukuje?
Anonymní Open Source Implementacie
honza dalsi namety
Pavel Neuman Mosso GUI
Martin Nosál nesouhlasím, že se nehodí pro běžný eshop
Dáda Re: nesouhlasím, že se nehodí pro běžný eshop
JCC vypocty narocne na RAM
Michaelson Re: vypocty narocne na RAM
tomas a co když poskytovatel potřebuje ten výkon
Jan Kodera Re: a co když poskytovatel potřebuje ten výkon
Michaelson Re: a co když poskytovatel potřebuje ten výkon
Karell Re: a co když poskytovatel potřebuje ten výkon
viroman Re: a co když poskytovatel potřebuje ten výkon
tomas Re: a co když poskytovatel potřebuje ten výkon
Borek Bernard Azure
Gianluca Pekny clanek
mludvig Jak vypadají aplikace?
Martin Re: Jak vypadají aplikace?
Martin Re: Jak vypadají aplikace?
echo zulu Ochrana dát
Počítavec Distribuované výpočty
Jan Paricka Tenhle Cloud Management aplikace je ceske vyroby
Zdroj: http://www.zdrojak.cz/?p=2994