Efektivita výkonu

Dokončeno

Představte si, že byl právě zveřejněn článek o tom, že jedna z vašich organizací nedávno oznámila nový produkt. Dodatečná publicita způsobená tímto článkem nepochybně přivede na váš web velký nával návštěvníků. Zvládne váš web toto zvýšení provozu, nebo tento dodatečný nápor způsobí, že se web zpomalí či přestane reagovat?

V této lekci se podíváme na některé základní principy zajištění skvělého výkonu aplikací s využitím principů škálování a optimalizace, které tvoří pilíř efektivity výkonu.

Co je efektivita výkonu?

Efektivita výkonu spočívá ve sladění prostředků, které jsou dostupné aplikaci, s poptávkou, kterou aplikace obsluhuje. Efektivita výkonu zahrnuje škálování prostředků, identifikaci a optimalizaci potenciálních slabých míst a optimalizaci kódu aplikace pro zajištění výkonu ve špičkách.

Pojďme se podívat na některé vzory a postupy, které zlepšují škálovatelnost a výkon vaší aplikace.

Vertikální navýšení kapacity a škálování na více instancí

Výpočetní prostředky je možné škálovat dvěma různými způsoby:

  • Vertikální navýšení kapacity znamená přidání dalších prostředků do jedné instance. To se také označuje jako vertikální škálování.

    Obrázek znázorňující vertikální navýšení kapacity přidáním prostředků do virtuálního počítače

  • Škálování na více instancí znamená přidání dalších instancí. To se také označuje jako horizontální škálování.

    Obrázek znázorňující škálování na více instancí přidáním instancí za účelem zvýšení výkonu

Vertikální navýšení kapacity spočívá v přidání dalších prostředků, například procesoru a paměti, do jedné instance. Touto instancí může být virtuální počítač nebo služba PaaS.

Přidání dodatečné kapacity do instance zvyšuje počet prostředků dostupných pro vaši aplikaci, má ale svá omezení. Virtuální počítače jsou omezené kapacitou hostitele, na kterém běží, a samotní hostitelé mají fyzická omezení. Při vertikálním navyšování kapacity instance nakonec můžete na tato omezení narazit. Omezují možnost přidat do instance další prostředky.

Škálování na více instancí spočívá v přidávání dalších instancí ke službě. Může se jednat o virtuální počítače nebo služby PaaS. Místo přidání větší kapacity tak, že je jedna instance výkonnější, přidáváme kapacitu zvýšením celkového počtu instancí.

Výhodou škálování na více instancí je, že můžete kapacitu navyšovat donekonečna, pokud máte další počítače, které přidáváte do architektury. Škálování na více instancí vyžaduje určitý typ distribuce zatížení. Může mít podobu nástroje pro vyrovnávání zatížení, který distribuuje požadavky mezi dostupné servery. Nebo se může jednat o mechanizmus zjišťování služby, který identifikuje aktivní servery, na které se mají odesílat žádosti.

U obou typů škálování lze prostředky omezit, což přináší optimalizaci nákladů.

Automatické škálování je proces dynamického přidělování prostředků podle požadavků na výkon. S tím, jak roste objem práce, může aplikace potřebovat k udržení požadovaných úrovní výkonu a plnění smluv o úrovni služeb (SLA) další prostředky. S klesající poptávkou, když už další prostředky nejsou potřeba, je lze uvolnit a minimalizovat tak náklady.

Automatické škálování využívá výhody elasticity prostředí hostovaných v cloudu, přičemž snižuje režii na správu. Operátor díky tomu už nemusí soustavně monitorovat výkon systému a rozhodovat se, jestli je potřeba přidat nebo odebrat prostředky.

Optimalizace výkonu sítě

Při optimalizaci z hlediska výkonu se budete soustředit na výkon sítě a úložiště, abyste měli jistotu, že jejich úrovně jsou v přijatelných mezích. Tyto úrovně výkonu mohou ovlivnit dobu odezvy vaší aplikace. Výběr správné technologie sítě a úložiště pro vaši architekturu vám pomůže zajistit, že zákazníkům poskytujete to nejlepší prostředí.

Výkon a škálovatelnost může zlepšit přidání vrstvy zasílání zpráv mezi služby. Vrstva zasílání zpráv vytvoří vyrovnávací paměť, takže žádosti mohou plynule přicházet bez vzniku chyb, přestože přijímající aplikace nestíhá. Protože aplikace funguje prostřednictvím žádostí, budou zodpovězené v pořadí, v jakém byly přijaty.

Optimalizace výkonu úložiště

V mnoha velkých řešeních jsou data rozdělená do samostatných oddílů, které lze samostatně spravovat a zpřístupnit. Strategii rozdělení je potřeba vybrat pečlivě, aby se maximalizovaly výhody a současně minimalizovaly nežádoucí účinky. Rozdělení pomůže vylepšit škálovatelnost, omezit kolize a optimalizovat výkon.

Výkon architektury můžete zvýšit ukládáním do mezipaměti. V principu se jedná o ukládání často používaných dat nebo prostředků (webových stránek, obrázků) do mezipaměti kvůli rychlejšímu načítání. Ukládání do mezipaměti lze použít v různých vrstvách vaší aplikace. Při ukládání do mezipaměti mezi aplikačními servery a databází zkrátíte dobu načítání dat.

Ukládání do mezipaměti můžete také použít mezi koncovými uživateli a webovými servery, čímž umístíte statický obsah blíže uživatelům a zkrátíte čas potřebný k vracení webových stránek uživatelům. Jako vedlejší efekt se tím sníží počet žádostí vůči databázi nebo webovým serverům, což zvýší výkon pro jiné žádosti.

Určení výkonových kritických bodů v aplikaci

Distribuované aplikace a služby běžící v cloudu jsou softwarové celky obsahující řadu „pohyblivých“ částí. V produkčním prostředí je důležitá schopnost sledovat způsob využití systému jednotlivými uživateli a využití prostředků a obecně monitorovat stav a výkon vašeho systému. Tyto informace můžete použít jako diagnostickou pomůcku při zjišťování a nápravě problémů. Pomohou vám také odhalit potenciální problémy a zabránit jejich výskytu.

Při optimalizaci výkonu budete muset porozumět tomu, jaký výkon mají samotné aplikace. Chyby, špatně fungující kód a kritické body v závislých systémech lze odhalit pomocí nástroje pro správu výkonu aplikací. Tyto problémy mohou být uživatelům, vývojářům a správcům často skryté nebo zahalené. Mohou mít ale negativní dopad na celkový výkon vaší aplikace.

Prozkoumejte všechny vrstvy své aplikace a rozpoznejte a napravte kritické body jejího výkonu. Tyto kritické body může způsobovat špatná práce s pamětí v aplikaci nebo dokonce proces přidávání indexů do databáze. Může se jednat o opakovaný proces, kdy napravíte jeden kritický bod a pak odhalíte další, o kterém jste ještě nevěděli.

Díky důkladnému přístupu ke sledování výkonu budete moci určit, jaké typy vzorů a postupů budou pro vaši architekturu přínosné.

Prověřte své znalosti

1.

Které z následujících možností představují příklad vertikálního zvýšení kapacity?

2.

Které z následujících možností představují příklad horizontálního zvýšení kapacity?