Programování pro cloud
Navrhování programů určených pro cloud vyžaduje speciální přístup. V závislosti na typu aplikace a očekávaném zatížení můžou vývojáři využít některé funkce od poskytovatelů cloudu ke zlepšení škálovatelnosti a udržovatelnosti programů. Používání automatických systémů škálování a nástrojů pro vyrovnávání zatížení umožňuje vývojářům dynamicky zvětšovat nebo zmenšovat infrastrukturu na základě využití hardwaru nebo programově počítaného faktoru zátěže.
Při vývoji nebo migraci aplikace do cloudu musí vývojář brát v úvahu řadu faktorů, zejména ty, které se týkají výkonu a zabezpečení.
Faktory výkonu pro aplikace v cloudu
Prostředí v datacentru orientovaném na cloud se liší od toho, na co můžou být vývojáři zvyklí při navrhování a nasazování aplikací ve vlastní infrastruktuře. Některým vývojářům může připadat, že je náročné vyladit nebo vylepšit výkon aplikace bez přístupu k rozložení fyzického hardwaru nebo specifikacím veřejných cloudů. Pokusíme se uvést některé hlavní faktory a zdůrazníme ty, které mají vliv na výkon aplikací v cloudu:
Šířka pásma a latence prostředku
Zásadním problémem při vývoji a nasazování cloudových aplikací je latence. Vývojáři musí při plánování aplikace důkladně zvážit, jaké budou její požadavky na latenci. Jedním z přístupů je kompilovat distribuci umístění klientů. To umožní vývojářům najít optimální sadu umístění datacenter, která může přispět k optimalizaci výkonu a odezvy u koncových uživatelů. To platí zejména pro webové aplikace, u kterých se na době načítání webové stránky můžou významně podílet požadavky HTTP na statický webový obsah.
Kromě latence můžou mít aplikace také přísné požadavky na šířku pásma, zejména ty, které pracují s objemným multimediálním obsahem, jako je zvuk nebo video. Mnoho poskytovatelů cloudu umožňuje vývojářům aplikací pro cloud určit parametry výkonu během zřizování ve formě požadavků IOPS pro výpočetní prostředky a prostředky úložiště. Mnozí také vývojářům umožňují, aby si nastavili virtuální sítě. Implementace a přijetí softwarově definovaných sítí a úložiště (více o tom v pozdějších modulech) poskytuje další přehled o novějších technikách používaných datacentry ke správě provozu z více klientů, kdy správa jednotlivých požadavků probíhá tak, jak je uvedeno v SLO klienta.
Výše uvedené metody jsou primárně zaměřené na statický obsah. Mnohem náročnější je optimalizovat latenci přístupu k distribuovaným systémům úložiště dat, zejména k těch, které musí zpracovávat zápisy a aktualizace. Touto problematikou se budeme podrobněji zabývat v pozdějších modulech.
Architektura s více tenanty
Aplikace ve veřejných datacentrech většinou běží na sdílené infrastruktuře. Tento aspekt cloudových služeb má řadu potenciálních nevýhod. I když moderní virtualizační technologie poskytují aplikacím izolované prostředí a zabezpečení, obvykle nemůžou zajistit izolaci výkonu. Proto virtualizované prostředky v cloudech nemůžou zaručit, že bude výkon vždy konzistentní. Výkon určitého prostředku v určitou dobu je funkcí celkového zatížení prostředků všech tenantů. Tento problém se také označuje pojmem rušení. Rušení je způsobené ostatními tenanty, kteří sdílejí stejný hardware.
Někteří poskytovatelé cloudu, například Azure, poskytují klientům možnost zřizovat určité typy prostředků (například virtuální počítače) na vyhrazeném hardwaru. Tím je zajištěna ochrana před nejrůznějšími výkyvy výkonu prostředků. Výkon prostředků je tak poměrně konzistentní. Vyhrazené hardwarové instance jsou ale mnohem dražší než běžné instance na vyžádání, protože Azure musí těmto prostředkům přiřadit výhradní server.
Souvisejícím aspektem architektury s více tenanty je variace zřizování, kdy identické požadavky na virtuální prostředky ve veřejných cloudech nejsou identicky mapované na fyzické prostředky, což způsobuje variaci výkonu.1 Například dva identické požadavky na virtuální počítače (VM1
a VM2
) můžou být směrovány do dvou různých fyzických počítačů (A
a B
). Fyzický počítač A může mít čtyři další tenanty, které se musí podělit o jeho prostředky, zatímco počítač B může mít pouze dva. Klient zaplatí za virtuální počítače VM1
a VM2
stejně, ale může se stát, že tyto počítače budou poskytovat různý výkon.
Nastavení zabezpečení
Jak jsme se dozvěděli v lekci 1, veřejné cloudy mají vyšší vektor útoků. Vývojáři musí být při nasazování a údržbě aplikací v cloudu extrémně opatrní a dodržovat osvědčené postupy a protokoly. Výsledkem může být zvýšení režijních nákladů způsobené používáním protokolů zabezpečení, které jsou u veřejných cloudů povinné.
Protože jsme tyto protokoly probrali v jednom z dřívějších modulů, na tomto místě se jim podrobněji věnovat nebudeme. Jakýkoli kód nasazený ve veřejném cloudu by měl projít přísným postupem ručních i automatizovaných revizí zdrojového kódu, statickou analýzou, dynamickou analýzou ohrožení zabezpečení a testem průniku. Pokyny k bezpečnému nasazení aplikací najdete na další stránce.
Odkazy
- Rehman, M.S and Sakr, M.F (2010). Počáteční zjištění pro variantu zřizování cloud computingu z druhé mezinárodní konference IEEE 2010 o technologiích cloud computingu a vědě (CloudCom)