Efektivita výkonu

Dokončeno

Představte si, že je zpráva publikovaná o jednom z nedávných oznámení o produktu vaší organizace. Přidaná publicita z příspěvku přináší velký nárůst provozu na váš web. Zvládne váš web tento nárůst provozu? Může váš web převzít dodatečné zatížení, aniž by se zpomalil nebo nereaguje?

V této lekci se podíváme na některé základní principy zajištění vynikajícího výkonu aplikace. Zejména zásady škálování a optimalizace, které tvoří pilíř efektivity výkonu.

Co je efektivita výkonu?

Efektivita výkonu odpovídá dostupným prostředkům aplikace s poptávkou, kterou přijímá. 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. Označuje se také 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í. Označuje se také 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 se zabývá přidáním dalších prostředků, jako je procesor nebo paměť, 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é na kapacitu hostitele, na kterém běží, a 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.

Horizontální navýšení kapacity se zabývá přidáním dalších instancí do služby. 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 horizontálního navýšení kapacity je, že můžete kapacitu navyšovat donekonečna, pokud máte další počítače, které přidáváte do architektury. Horizontální navýšení kapacity vyžaduje určitý typ distribuce zatížení. Například nástroj pro vyrovnávání zatížení, který distribuuje požadavky mezi dostupné servery, nebo mechanismus zjišťování služeb pro identifikaci aktivních serverů, do kterých se mají odesílat požadavky.

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ů tak, aby odpovídaly požadavkům 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. Vzhledem k tomu, že poptávka se zvolní a přidané prostředky už nejsou potřeba, je možné je uvolnit, aby se minimalizovaly 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 výkonu se podíváte na výkon sítě a úložiště, abyste zajistili, ž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ých síťových a úložných technologií pro vaši architekturu vám pomůže zajistit, abyste uživatelům poskytovali co 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á. Vzhledem k tomu, že aplikace funguje prostřednictvím požadavků, odpovídají 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é můžete samostatně spravovat a ke kterým můžete samostatně získat přístup. 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 použít také mezi uživateli a webovými servery umístěním statického obsahu blíže uživatelům. Tento typ ukládání do mezipaměti zkracuje dobu potřebnou k vrácení webových stránek uživatelům. Má také vedlejší vliv na snižování zátěže požadavků z vaší databáze nebo webových serverů, což zvyšuje výkon jiných požadavků.

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é sledovat způsob, jakým uživatelé využívají váš systém. Je také důležité sledovat využití prostředků a obecně monitorovat stav a výkon 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.

Optimalizace výkonu zahrnuje pochopení výkonu samotných aplikací. Chyby, špatně fungující kód a kritické body v závislých systémech je možné odhalit prostřednictvím nástroje pro správu výkonu aplikace. Tyto problémy můžou být často skryté nebo nejasné pro uživatele, vývojáře a správce, ale můžou mít nepříznivý vliv 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 k monitorování výkonu můžete určit typy vzorů a postupů, ze kterých může vaše architektura těžit.

Kontrola znalostí

1.

Která z následujících možností je příkladem vertikálního navýšení kapacity (vertikální škálování)?

2.

Která z následujících možností je příkladem horizontálního navýšení kapacity (horizontální škálování)?