Platforma Windows Azure byla poprvé představena koncem roku 2008, do komerčního provozu byla spuštěna v roce 2010. Aktuálně nabízí možnost provozování aplikací v 10 datacentrech po celém světě (4 v USA, 2 v Asii, 2 v Evropě a 2 v Austrálii) a kromě .NETu podporuje i další platformy, např. Javu, node.js a PHP. Dnes na ní běží tisíce aplikací od drobných webů až po komplikované cloudové služby, které pracují s terabajty dat.
K čemu vůbec cloud?
Před tím, než aplikaci do cloudu nasadíme, je vhodné dobře si rozmyslet, jaké výhody (a nevýhody) nám cloud přináší. Prakticky každá aplikace může být provozována v cloudu, otázkou je, jestli to ve všech případech dává smysl. Do cloudu můžeme nasadit téměř vše, počínaje webovou aplikací napsanou třeba v ASP.NET a WinForms aplikací ve virtuálním stroji, ke které se přistupuje terminálově (např. přes Remote Desktop) konče. Otázka je, co nám cloud přinese.
Mezi hlavní výhody cloudu patří zejména:
- Snadná a pružná škálovatelnost aplikace. Pokud je aplikace dobře napsaná, můžeme ji snadno pustit na více serverech. Není problém mít jeden den 2 servery, druhý den můžete aplikaci naškálovat na 10 serverů a třetí den ji opět vrátíte na 2 servery, což je scénář vhodný pro určité druhy aplikací, například různé portály pro objednávání vstupenek na koncerty – celý měsíc se neděje nic zásadního a stačí mít aplikaci na jednom serveru, ale jednou za čas se pořádá nějaký zajímavý koncert, kam chtějí tisíce lidí, a po těch pár dnů se aplikace snadno zreplikuje na 5 serverů, aby vyšší zátěž zvládla.
- Velké datové úložiště. Určité typy aplikací potřebují mnohem větší kapacitu úložného prostoru, než nabízí běžné webhostingy. Ceny za 1GB úložiště jsou v cloudu typicky velmi nízké – např. 200GB prostoru na Windows Azure stojí v době vydání tohoto článku $19 měsíčně a je to včetně geografické redundance, což v praxi znamená, že data jsou replikována alespoň ve 2 datacentrech, které jsou každé na jiném místě, nehrozí tedy ztráta dat v případě, že by např. teroristé vyhodili jedno datacentrum do povětří, nebo nedostupnost dat v případě, že by jedno z datacenter na chvíli kompletně vypadlo. Cloud navíc umožňuje využít CDN, která data zpřístupní na různých místech po světě a optimalizuje datové přenosy tak, že klient stahuje statická data (obrázky atd.) ze serveru, který je mu geograficky blíže.
- Typicky nižší náklady. V případě, že máte složitější aplikaci, která vyžaduje provoz na více serverech, je cloud často levnější alternativou. Postavit si takové řešení vlastními prostředky je poměrně nákladná záležitost (pořizovací cena serverů a síťového vybavení, poplatky za licence) a provozní náklady také nejsou úplně nízké. V případě více serverů typicky potřebujete i někoho, kdo se o ně bude starat. Cloud řeší údržbu serverů (hardwarovou i softwarovou) za vás a ceny licencí jsou zahrnuty v měsíčních poplatcích.
- Platíte za skutečně spotřebované služby. Spousta hostingů vám do tarifu zahrne třeba 300 GB místa, ale platíte za ně i když je nevyužíváte. V cloudu typicky platíte jen za skutečně spotřebovanou kapacitu a zdroje.
Nic není jen černé nebo bílé a cloud má samozřejmě i několik nevýhod. Jednou z nich je vendor lock-in – v případě, že se rozhodnete využít naplno možností Windows Azure a po čase se vám přestane líbit, není jen tak možné aplikaci vzít a přesunout k jinému poskytovateli. Ten sice může umět provozovat .NET aplikace, na druhou stranu pokud využijete některé služby, které nabízí Windows Azure (např. blob storage), tyto služby pochopitelně nebudou u jiného poskytovatele dostupné. Jednoduchá ASP.NET aplikace se SQL databází mít problém nebude, ale pokud se rozhodnete použít služby specifické pro Azure, je logické, že při migraci k jinému poskytovateli budete muset tyto části aplikace přepsat. Na druhou stranu Windows Azure počítá i s možností hostingu aplikace na vlastních serverech (tzv. “private cloud”).
V poslední době se objevilo pár bezpečnostních otazníků (NSA), které trochu odrazují od využívání cloudových služeb provozovaných subjekty v USA. Na druhou stranu je otázkou, jestli se nějakému sledování dá vůbec uniknout – monitorována totiž bývá i samotná síťová komunikace, sledování provádí i ostatní státy a navíc je otázkou, nakolik jsou informace zveřejněné v médiích pravdivé a zda-li je možné, aby se někdo dostal k cizím datům jen tak bez jakéhokoliv soudního příkazu a zda-li se tak skutečně děje.
A na závěr je nutno zmínit, že ne každá aplikace se do cloudu hodí. Zvláště menší a jednodušší aplikace, kterým stačí obyčejný webhosting, SQL databáze a pár megabajtů diskového prostoru, typicky nemá cenu dávat do cloudu – nic to nepřinese. Smysl to má u větších aplikací poskládaných z několika komponent, které potřebují hromadu diskového prostoru, které využijí pokročilejší funkce cloudového prostředí, nebo které mají větší nároky na škálování.
Co Windows Azure nabízí?
Windows Azure je dnes již velmi vyspělá cloudová platforma, která nabízí velkou škálu služeb. V následujících dílech tohoto seriálu si je postupně popíšeme a ukážeme si, jak je použít. Mezi hlavní a nejčastěji používané služby patří:
- WebSites. WebSites jsou alternativa k obyčejnému webhostingu. Umožňují provozovat ASP.NET nebo PHP aplikaci a nabízí i možnost škálování, základní monitoring a snadné nasazení aplikace pomocí technologie WebDeploy.
- Virtual Machines. Virtual Machines umožňují provozovat virtuální stroje. Zprovoznění je velmi jednoduché, na webovém portálu Windows Azure si vyberte předdefinovanou šablonu virtuálního stroje (je tam mnoho variant Windows Server OS, dokonce i některé distribuce Linuxu), případně si nahrajete vlastní virtuální disk, který si připravíte lokálně na svém počítači. Cena licence je zahrnuta v poplatcích za provoz virtuálního stroje.
- Blob Storage. Blob Storage je datové úložiště, které se používá k ukládání souborů. Nahrávání a manipulace se soubory je prováděna prostřednictvím REST API, souborům lze nastavovat oprávnění (viditelné pro veřejnost atd.) a ukládat k nim metadata.
- Table Storage. Table Storage je taková jednodušší databáze – nadefinujete si tabulku a posíláte do ní záznamy, podporováno je základní filtrování, řazení a stránkování, komunikace opět využívá REST API.
- Queue. Queue se typicky využívá pro implementaci producer – consumer scénářů. Aplikace nasype do fronty nějaká data a nějaká služba, která běží na pozadí, je postupně z fronty vytahuje a zpracovává.
- SQL Azure. SQL Azure je klasický SQL Server hostovaný ve Windows Azure. Má několik drobných omezení oproti klasickému SQL Serveru (nefungují dotazy napříč databázemi, nepodporuje fulltext), ale v zásadě jde o klasickou relační databázi postavenou na klasickém SQL Serveru.
- Cloud Services. Cloud Services se používají pro složitější aplikace, které jsou poskládány z několika komponent (rolí). K dispozici jsou Worker role, což je jakási stále běžící služba na pozadí, která typicky zpracovává nějaká data z fronty, a Web role, což je webová aplikace. Každá role běží ve vlastním virtuálním stroji, jehož nastavení můžeme měnit pomocí startup skriptů. Cloud Services podporují škálování, nasazování nových verzí bez výpadku (provozování aplikace ve více prostředích – staging a production) apod.
- Mobile Services. Mobile Services je framework určený převážně pro mobilní zařízení, který se snaží co nejvíce zjednodušit implementaci jednoduchých serverových služeb pro mobilní zařízení. Řeší například autentizaci, snadnou implementaci API pro přístup k databázi, push notifikace atd.
- SQL Reporting. Cloudová služba postavená na klasických SQL Server Reporting Services.
- Media Services. Služba, která řeší distribuci multimediálního obsahu, překódováním do vhodných formátů počínaje a streamováním audia a videa na koncová zařízení konče.
- Cache. Distribuovaná cache, která se používá v případě, že je třeba cacheovat data napříč několika instancemi.
- Service Bus. Komponenta, která řeší komunikaci jednotlivých instancí mezi sebou.
- Virtual Network. Tato služba umožňuje vytvořit virtuální privátní síť mezi instancemi v cloudu a vlastní on-premise infrastrukturou.
Windows Azure nabízí ještě několik dalších služeb a mnoho dalších add-onů je možno dokoupit od jiných poskytovatelů prostřednictvím jakéhosi “e-shopu” ve webovém portálu Windows Azure.
Kolik to stojí? Mají trial verzi?
Na portálu www.windowsazure.com se můžete zaregistrovat a získáte 30denní trial verzi, v níž můžete využít libovolné zdroje až do výše $150 zcela zdarma. Pokud limity překročíte, služby budou pozastaveny, ale v případě, že se rozhodnete, že cloud použijete, limit jednoduše zrušíte a služby budou fungovat i nadále, samozřejmě již za poplatek (bude stržen z kreditní karty zadané při registraci, pokud neřeknete jinak). Po skončení trial období funguje normální placený účet.
Pokud jste studenti, můžete využít výhody programu www.dreamspark.cz, začínajícím firmám doporučuji www.bizspark.cz, v rámci nichž je možné získat určité množství kreditů měsíčně zdarma jako součást MSDN předplatného. Například v běžném MSDN subscription jsou měsíční kredity, které pokryjí provoz dvou Small instancí a menší SQL databázi, což v pohodě zvládne hostovat několik středně velkých webových aplikací.
Kalkulačka cen je na www.windowsazure.com/en-us/pricing/calculator/, kde snadno můžete zjistit, kolik zaplatíte. Nejvyššími náklady typicky bývá provoz virtuálních strojů, které jsou využívány např. i v rámci Cloud Services – nejčastěji používaná Small instance stojí aktuálně $67 měsíčně (účtuje se po hodinách, počítá se každá započatá hodina, po níž je instance nasazena, tzn. i když aplikace samotná neběží anebo nespotřebovává téměř žádný výkon CPU).
Dále například 1GB SQL databáze stojí $10 měsíčně, 200GB datového úložiště Blob Storage stojí měsíčně $19. Pak se platí ještě za datové přenosy, což ale nebývá moc drahé (u většiny aplikací to jsou desítky centů nebo jednotky dolarů) a zajímat vás to musí jen u aplikací, které pracují s velkými objemy dat, např. steamují video.
Pro malé webové aplikace se hodí Azure WebSites, které umožňují jednak free režim (bez domény 2. řádu). Za SQL databázi se sice platí (pokud je větší než 20MB), ale menší aplikace mohou využít SQL Compact Edition, kterou si aplikace hostuje sama a tím pádem je provoz zdarma. Pokud aplikace vyžaduje trochu silnější server, ale nechcete kupovat celou jednu Small Instanci, můžete využít Shared režim, kde 1 webová aplikace stojí zhruba $10 měsíčně. Tato varianta je podobná klasickým nižším placeným ASP.NET hostingům, máte ale kdykoliv možnost upgradovat na Standard režim, který už využívá klasické Azure instance.
Shrnutí
Cloudové prostředí je u některých typů aplikací levnější alternativou. Do cloudu bych asi nedával běžné webové stránky s jednoduchou SQL databází, nicméně složitější služby, které využívají větší datová úložiště, a kde je důležité škálování a vyšší dostupnost, do cloudu patří – stavět si na to vlastní infrastrukturu je drahé a pracné. V příštích dílech tohoto seriálu si konkrétně rozebereme jednotlivé služby, které Windows Azure nabízí – začneme od Azure WebSites, které umožňují nasadit a provozovat v cloudu ASP.NET aplikaci bez jakýchkoliv větších úprav v kódu.