Po předchozích dvou dílech, které se věnovaly pronájmu operačního systému, tedy službě Compute a databázi SQL Azure přichází na řadu třetí díl, ve kterém se budu věnovat službě Azure Storage. Jedná se o poslední komponentu, která je využita – jak ostatně sám název napovídá – k ukládání dat. Tuto službu pravděpodobně využijete prakticky v každém řešení, i když třeba jenom v okrajové úloze – např. na trvalé uložení logů a diagnostických informací anebo pro dočasné uložení nasazovaného řešení. Existují tři základní typy dat, která lze v Azure Storage uložit – tabulky, BLOBy a fronty zpráv. Jednotlivé rozdílné typy se postupně probereme i s vhodným způsobem použití. Mají ovšem i některé...
Nejčastěji používaným typem úložiště jsou tzv. BLOBy (binary large object). V cloud aplikacích plní stejnou roli jako sdílené složky souborového systému v klasickém světě. Je vhodné je použít na větší nestrukturované informace jako jsou například dokumenty aplikací, scanované papírové dokumenty, zálohovací soubory, videa, obrázky apod. Tyto soubory jsou uloženy ve složkách (tzv. kontejnery), analogicky jako v souborovém systému. Můžete je velmi dobře využívat i v kombinaci s SQL Azure. Například scanované dokumenty je možné ukládat v Azure Storage (je to levnější) a veškerá metadata potřebná pro vyhledání konkrétního dokumentu uložíte v SQL Azure, neboť ten nabízí vysokou rychlost a pestrou paletu možností pro rychlé dotazování do dat. Pokud chcete, můžete část BLOBů zpřístupnit i anonymním uživatelům – pak jsou přístupné pomocí jednoduchého HTTP GET příkazu a lze je tudíž využít přímo v internetových prohlížečích, např. pro zobrazení videa na webové stránce.
Zajímavým doplňkem k BLOBům je možnost využití CDN (Content Delivery Network). Tato služba je vhodná, pokud máte relativně velká a statická data, která jsou konzumována větším množstvím uživatelů ve více geografických lokalitách. Služba CDN funguje jako obrovská distribuovaná cache rozprostřená do minimálně 24 lokalit po celém světě (nejbližší k nám je v tuto chvíli Vídeň). Princip je jednoduchý. DNS jméno cache je převedeno na IP adresu v závislosti na IP adrese přistupujícího uživatele tak, aby ho obsluhovalo síťově nejbližší místo. Pokud je příslušný BLOB již v cache paměti, je vrácen okamžitě, pokud není, získá ho cache z úložiště Windows Azure a poté si jej uloží pro obsluhu dalších klientů po dobu TTL (time to live), kterou určuje vlastník BLOBu. Tím můžete výrazně urychlit dobu odezvy uživatele, aniž byste podstatně zvýšili cenu služby – jediné náklady navíc jsou transakce a objem přenesených dat potřebné pro naplnění cache z úložiště. Detailnější popis najdete na Daliborově blogu.
Tabulky v Azure Storage jsou příkladem třídy „no SQL“ databází. Podobají se běžným relačním tabulkám v tom, že jsou vhodné pro uložení strukturovaných dat ve formě řádků a sloupců. Na rozdíl od relačních tabulek může každý řádek obsahovat jiné sloupečky. Povinné jsou pouze 3 sloupečky – identifikátor oddílu dat (určuje distribuci na jednotlivé servery úložiště), identifikátor řádku a automaticky udržovanou časovou známku. Jinak se jedná o úložiště velmi hloupé – nezná žádnou kontrolu integrity, relace, triggery ani uložené procedury. Transakce podporuje pouze v omezené míře. Výběr dat je efektivní pouze pomocí identifikátoru oddílu a řádku. Proč ho tedy použít? Zejména pro relativně nízkou cenu a prakticky neomezenou škálovatelnost. Pokud máte velké množství strukturovaných dat, která jsou nezvládnutelná běžným relačním úložištěm, je to řešení pro vás. Troufnu si odhadnout, že ho bude používat pouze menšina projektů, ale zato ve velkém rozsahu.
Fronty zpráv jsou specializovaným jednoúčelovým úložištěm pro asynchronní komunikaci mezi jednotlivými komponentami aplikací. Jedna komponenta ukládá do fronty zprávy, což jsou v podstatě „úkoly“ pro jinou komponentu. Tato může běžet i ve větším počtu instancí a z fronty je svým tempem vyzvedává a postupně zpracovává – je tak možné velmi jednoduše tlumit špičky rozkládáním do delšího časového úseku. Častým příkladem může být například e-shop postavený na Windows Azure, kde webové role přijímají objednávky od uživatelů, ukládají je do fronty a worker role je na pozadí zpracovávají. Fronty jsou typicky využívány aplikacemi běžícími na větším množství virtuálních serverů pro komunikaci mezi jednotlivými instancemi. V menších aplikacích bude jejich využití spíše ojedinělé.
V příštím díle, který bude prozatím poslední, si povíme něco o ostatních, méně často užívaných službách na platformě Azure.
Michael