Platforma Azure “lidskou řečí” (1.) – služba Compute

(článek převzat z MSDN blogu, autor Michael Juřek)

V poslední době se objevilo mnoho článků o platformě Azure. Volně by se daly rozdělit do dvou kategorií – buď jsou to rozvláčné marketingové materiály anebo odvážné technologické vize. Bohužel ani jedna z těchto dvou skupin nedává běžnému IT člověku příliš přesnou představu, jak vlastně celá Azure platforma funguje. V tomto miniseriálu se proto pokusím přiblížit její technickou podstatu srozumitelnou řečí, zejména porovnáním s dosud používanými postupy při vývoji aplikací. Začnu službou Windows Azure Compute, tedy možností pronájmu výpočetní kapacity formou virtuálních počítačů.

Základní dohoda

Princip rozdělení kompetencí je poměrně jednoduchý a bez nároku na právní či technickou přesnost by se dal popsat takto:

  1. Microsoft vlastní obrovské množství serverů umístěných v datových centrech na 3 kontinentech (Evropa, Severní Amerika, Asie).
  2. Zákazník (tedy případně vy) nám dodá zabalenou aplikaci v jedné ze 3 dohodnutých forem.
  3. Podle instrukcí zákazníka vytvoříme virtuální počítače s OS Windows Server 2008 (nebo 2008 R2) v dohodnutém počtu a dohodnuté HW velikosti a aplikaci na ně nainstalujeme. Za tuto službu si účtujeme jednak hodinovým časem existujících virtuálů (0.12 USD/hodina pro nejběžnější velikost virtuálu), jednak podle GB přenesených dovnitř a ven (0.10 USD/GB směrem do cloudu, 0.15 USD/GB opačným směrem). Neplatí se žádné další poplatky za licenci, za hardware ani za cokoliv jiného.
  4. Zákazník může na vlastní riziko měnit nastavení operačního systému a instalovat do něj další software.
  5. Nicméně za správu a aktualizaci operačního systému je plně zodpovědný Microsoft, který může v případě HW závady, instalace aktualizací nebo jakéhokoliv jiného důvodu kdykoliv znovu provést krok 3 (tzv. re-image)
  6. Pokud chcete nasadit novou verzi vaší aplikace, dodáte nám nový balíček. Krok 3 se opakuje s novou verzí balíčku, staré virtuály se zruší, to vše bez jakéhokoliv výpadku. Pokud chcete, můžete starou a novou verzi aplikace provozovat po nějaký čas paralelně.

Je nutno dodat, že veškeré operace v datovém centru řídí plně automatizovaný proces zvaný Fabric Controller, lidé pouze monitorují jeho funkci. Do vašich aplikací nemá žádný „živý“ administrátor přístup.

Jaké aplikace lze provozovat?

Výše jsem zmínil 3 možné formy zabalení aplikace, nyní je správný čas si je projít:

  1. Zabalená webová aplikace (tzv. web role) – v podstatě zabalená složka souborů, která se rozbalí do adresáře a namíří se na něj web server IIS. Vhodné pro aplikace, které zpřístupňují svoje funkce přes HTTP protokol, tedy webové servery anebo webové služby
  2. Zabalená jiná aplikace (tzv. worker role) – zabalená složka souborů, která se rozbalí do adresáře a spustí se libovolný kód. Vhodné pro aplikace, které provádějí zpracování na pozadí, mají různé výpočetní funkce anebo třeba pro provoz webových aplikací na jiném webovém serveru než IIS. Jsou podobné službám operačního systému.
  3. Zabalený disk virtuálního počítač (tzv. VM role) – zabalený VHD soubor pro technologii Hyper-V, ze kterého se vytvoří virtuální počítač. Vhodné pouze ve výjimečných situacích, např. pokud potřebujete mít nainstalovanou aplikaci, jejíž instalaci nejde automatizovat. Používání této role je pracné, musíte se starat sami o aktualizace OS, a nemůžete si uvnitř virtuálu ukládat žádná data trvalé povahy – kdykoliv může být proveden re-image, čímž o tato data přijdete. Pokud můžete, této roli se vyhněte – je určena pouze pro specifické situace.

Protože existuje celá řada předsudků o tom, co lze ve Windows Azure provozovat, rád bych výslovně uvedl že:

  1. Lze provozovat jakýkoliv kód, nikoliv pouze .NET framework. Namátkou lze provozovat nativní kód v C++, PHP, Javu, Ruby, ...
  2. Při startu role můžete spustit libovolný skript, a to dokonce s právy administrátora. Můžete tak nainstalovat libovolný software, zaregistrovat COM/COM+ komponenty, měnit nastavení operačního systému, nainstalovat moduly web serveru, spustit původně nenainstalované služby operačního systému a mnohé další
  3. Váš kód může běžet s právy administrátora (přestože to z bezpečnostního hlediska není vhodné)
  4. K počítači se lze připojit přes Remote Desktop, provádět pak diagnostiku nebo jakékoliv úpravy. Pozor, kdykoliv může dojít k operaci re-image, proto raději veškeré úpravy dělejte ve skriptech při startu role.

Omezení při vývoji aplikací

Omezení ve skutečnosti není mnoho, je ale dobré o nich vědět. Většina aplikací lze převést pro běh na Windows Azure s minimálními úpravami.

  1. Aplikace neběží jako administrátor operačního systému (pokud to sami nechcete). To by mělo být normou při provozu aplikace kdekoliv, nejenom v cloudu.
  2. Aplikace nemůže zapisovat kamkoliv v souborovém systému, pouze do předem deklarovaných oblastí. Aplikace si tudíž nemůže ukládat data do „natvrdo“ zakódovaných cest – je třeba vždy pomocí cca 2 řádků kódu zjistit, jaká je správná, systémem přidělená cesta a používat tuto cestu.
  3. Není možné ukládat data trvalé povahy do souborového systému, protože zde o ně můžete kdykoliv přijít. Do souborového systému si můžete ukládat různé mezivýsledky apod. Trvalá data patří do trvalých úložišť, tedy SQL Azure nebo Azure Storage.
  4. Vzhledem k tomu, že operační systém může být kdykoliv znovuvytvořen, je třeba veškerá logovací a diagnostická data přenášet do trvalého úložiště mimo operační systém. Tato funkce je k dispozici, stačí ji pouze nakonfigurovat při startu aplikace.

Větší obrázek

Skončíme něčím, čím většina technických textů začíná – servisním modelem. Je to vlastně popis aplikace, která definuje jednotlivé role v aplikaci, počet a velikost instancí (virtuálních počítačů), povolené komunikace mezi rolemi i zvenčí (tzv. endpointy), používané certifikáty, lokální úložiště a řadu dalších věcí. V nejjednodušším případě má aplikace jeden server webové role nebo např. farmu 2 serverů ve web roli, mezi kterými funguje rozkládání zátěže. Ve složitějších případech to mohou být třeba 2 instance webové role pro zpracování požadavků a řádově stovky worker rolí zpracovávajících tyto požadavky, jako v případě renderování filmu Avatar. Pokud chcete v cloudu provozovat „velké“ aplikace s mnoha servery, je nezbytné se servisním modelem velmi podrobně seznámit.

Podrobnější technické informace naleznete v technických článcích (v angličtině), nejdůležitější z nich jsme přeložili do češtiny. Pokud si chcete vše prakticky vyzkoušet, je možné si stáhnout nástroje a zřídit bezplatný účet Introductory Special (vyžaduje zadání platební karty jako záruky, ale je zdarma – podrobné instrukce zde) a vyzkoušet praktická cvičení z Windows Azure Platform Training Kitu, případně tutoriály Quick Start.

Ve druhém díle se budu zabývat databází SQL Azure.

Michael