Azure Caching–k čemu je to dobré?
V červenové záplavě novinek na platformě Azure (více např. zde) se poněkud ztrácí nová služba Azure Caching, která ovšem rozhodně stojí za pozornost, neboť přináší nové možnosti pro webové i jiné aplikace běžící v cloudu a to bez zvýšených nákladů. Nejprve si položme základní otázku:
K čemu je vlastně cache dobrá?
Jednoduše by se dalo říct – k odlehčení úzkého hrdla systému, což je typicky databáze anebo výkon procesoru. Existují dvě nejčastější použití mezipaměti cache:
- Uložení výsledků, jejichž získání je nákladné – pokud se data v čase prakticky nemění, je neekonomické znovu zatěžovat databázi či procesor. Typickým příkladem jsou popisy produktů v e-shopu anebo vypočítané obrázkové bitmapy. Po prvním nákladném získání si je uložím pro další použití v mezipaměti.
- Robustní uložení dočasných uživatelských dat – např. nákupní košík. Nemá smysl ho ukládat do databáze dokud nevím, zde se nákup uskuteční. Na druhou stranu ho chci mít uložený robustně, aby o něj uživatel nepřišel např. při údržbě serveru
Jakým způsobem se to řešilo doteď?
Pokud pomineme implementaci vlastního řešení anebo “ohýbání” některého z cache produktů pro běh v cloudu, bylo jediným řešením využít cloudovou službu Shared Caching (dříve Azure Appfabric Cache). Jedná se o Microsoftem provozovanou multitenantní cachovací službu (v podstatě cache-as-a-service. Toto řešení mělo několik nevýhod:
- Poměrně vysoká cena – viz https://www.windowsazure.com/en-us/pricing/details/#caching
- Omezení na počet připojení, transakce a přenos dat (jedná se o multitenantní aplikaci, tudíž je třeba vynutit ohleduplnost vůči ostatním uživatelům.
- Omezené funkce oproti srovnatelné on premises službě (více zde), zejména chybějící redundance dat a vysoká dostupnost.
Co přináší nové řešení?
Zjednodušeně řečeno, odstraňuje všechny 3 přechozí nevýhody:
- Nic nestojí, pokud cache hostujete přímo v existujících virtuálech. Jenom si “ukousne” z existujících zdrojů. Pokud např. máte 2 virtuály velikosti Small (1,75 GB RAM) a vytvoříte na nich cache za použití 30% paměti, budete mít cache velikosti 2 x 1,75 x 0,30, tedy 1,05 GB. Srovnatelná sdílená cache stojí 110 dolarů měíčně. Pokud použijete nový dedikovaný virtuál, má ho cache k dispozici celý a platíte podle zvolené velikosti. Pozor na jednu věc, pokud se rozhodnute pro redundatní uložení dat v cache paměti, je třeba velikost podělit celkovým počtem udržovaných replik (typicky 2).
- Nejste omezeni žádnými limity. O cache se nemusíte s nikým dělit. Kolik jí dáte prostoru a dalších zdrojů, tak výkonná bude.
- Plné funkce stejné jako v on-premises řešení – tedy vysoká dostupnost, redundance dat, notifikace atd.
Kde najdu více informací?
Připravil jsem zdokumentované použití pro 3 scénáře:
- Uložení Session stavu (např. nákupní košík)
- Využití pro OutputCache (např. uložení vyrenderovaných stránek produktů nebo obrázků)
- Využití ve vlastním kódu, typicky pro odlehčení databáze
Zdokumentované scénáře naleznete zde, zdrojový kód zde. Pokud se chcete dozvědět více, existuje hezký tutorial.
Michael