Horizontální škálování přidává více počítačů pro rozložení pracovní zátěže, zatímco vertikální škálování zvyšuje výkon stávajících serverů. Oba přístupy řeší úzká místa ve výkonu, ale zásadně se liší v architektuře, cenových modelech a provozní složitosti.
Zvýraznění
Horizontální škálování eliminuje jednotlivé body selhání již ze své podstaty, zatímco vertikální škálování koncentruje riziko na jeden stroj.
Databázové úlohy často odolávají horizontální distribuci, takže vertikální škálování je pro mnoho týmů praktickým výchozím nastavením.
Skupiny s automatickým škálováním umožňují okamžité horizontální škálování, ale vyžadují počáteční investici do architektury aplikace.
Vertikální škálování narazí na pevný strop, když dosáhnete nejvýkonnějšího dostupného serveru, zatímco horizontální škálování teoreticky nikdy.
Co je Horizontální škálování?
Přidání dalších serverů nebo instancí pro zvládnutí zvýšené poptávky a rozložení pracovní zátěže.
Tento přístup, nazývaný také horizontální škálování, distribuuje provoz mezi více počítačů pomocí vyrovnávačů zátěže.
Poskytovatelé cloudových služeb, jako jsou AWS, Azure a GCP, umožňují horizontální škálování téměř okamžité díky skupinám s automatickým škálováním.
Aby tento přístup fungoval efektivně, musí být aplikace navrženy tak, aby nebyly stavově vázány, nebo aby používaly sdílené úložiště.
Horizontální škálování poskytuje vestavěnou redundanci, protože provoz se může přesměrovat, pokud jeden server selže.
Tato metoda se obvykle řídí modelem platby podle růstu, kdy náklady přímo souvisejí se skutečnou spotřebou.
Co je Vertikální škálování?
Upgrade stávajících serverových zdrojů, jako je CPU, RAM nebo úložiště, pro zvýšení výkonu.
Běžně se tomu říká škálování a zahrnuje výměnu serveru za výkonnější stroj nebo upgrade komponent.
Vertikální škálování funguje dobře pro monolitické aplikace, které nebyly navrženy pro běh na více serverech.
Obvykle existuje horní limit toho, jak výkonný může být jeden stroj, což vytváří strop škálovatelnosti.
Databázové servery často používají vertikální škálování, protože distribuce relačních databází představuje značnou složitost.
Tento přístup vyžaduje prostoje během upgradu hardwaru, pokud se nepoužijí technologie živé migrace ve virtualizovaných prostředích.
Srovnávací tabulka
Funkce
Horizontální škálování
Vertikální škálování
Architektura
Distribuováno mezi mnoha uzly
Jeden výkonný stroj
Maximální kapacita
Prakticky neomezené s dostatečným počtem uzlů
Omezeno hardwarovým stropem
Prostoje během škálování
Obvykle nulové prostoje
Často vyžaduje restart nebo migraci
Nákladový model
Platba za instanci, lineární růst
Velké počáteční nebo postupné zvyšování nákladů
Složitost
Vyšší, vyžaduje vyvažování zátěže a distribuovaný design
Nižší, jednodušší implementace
Tolerance chyb
Vestavěná redundance
Jediný bod selhání
Typický případ použití
Webové aplikace, mikroslužby
Databáze, starší monolity
Podrobné srovnání
Jak každý přístup zvládá růst
Když se provoz prudce zvýší, horizontální škálování reaguje spuštěním dalších serverů, aby se s nimi zátěž podělila. Představte si to jako otevření více pokladních pruhů v obchodě s potravinami. Vertikální škálování naopak nahradí vaši pokladnu rychlejší nebo vylepší její kasu. Obojí sice zvýší propustnost, ale provozní mechanismy se výrazně liší.
Požadavky na návrh aplikace
Horizontální škálování vyžaduje, aby byly aplikace vytvářeny s ohledem na distribuci. Data relací nemohou být uložena na jednom serveru a požadavky musí být zpracovávány nezávisle. Vertikální škálování je mnohem tolerantnější ke starším architekturám. Tradiční třívrstvá aplikace často nepotřebuje žádné změny kódu, aby mohla těžit z výkonnějšího podkladového serveru.
Důsledky nákladů v čase
Horizontální škálování rozkládá výdaje mezi mnoho menších nákupů, což může vyhladit rozpočtování, ale ve velkém měřítku může vést k vyšším celkovým nákladům. Vertikální škálování koncentruje investice do menšího počtu dražších strojů. Při extrémních požadavcích na výkon se jeden špičkový server může stát ve skutečnosti nákladově efektivnějším než provozování stovek malých serverů.
Odolnost vůči selhání
Jednou z nenápadných výhod horizontálního škálování je přirozená odolnost proti chybám. Pokud jeden uzel selže, ostatní pokračují v obsluze požadavků. Vertikální škálování vytváří kritickou závislost na jednom počítači. Když selže, vše se zastaví, pokud jste neimplementovali drahý záložní systém.
Hybridní přístupy z reálného světa
Sofistikované organizace si jen zřídka vybírají výhradně jednu z možností. Mohou vertikálně škálovat hlavní databázi, zatímco horizontálně škálují bezstavové webové servery. Toto pragmatické míchání umožňuje každé komponentě používat model škálování, který odpovídá jejím omezením a vzorcům přístupu.
Výhody a nevýhody
Horizontální škálování
Výhody
+Vynikající odolnost proti chybám
+Elastický růst na vyžádání
+Žádný hardwarový strop
+Sladí náklady s využitím
+Umožňuje geografické rozložení
Souhlasím
−Vyšší architektonická složitost
−Vyžaduje bezstavový design
−Latence sítě mezi uzly
−Náročnější ladění
−Potenciální problémy s konzistencí dat
Vertikální škálování
Výhody
+Jednodušší implementace
+Žádné problémy s distribuovanými systémy
+Funguje se starším kódem
+Nižší síťové režijní náklady
+Snadnější zabezpečení a audit
Souhlasím
−Jediný bod selhání
−Limity upgradu hardwaru
−Často vyžaduje prostoje
−Obtížnější zdůvodnění proměnlivé pracovní zátěže
−Geografická koncentrace
Běžné mýty
Mýtus
Vertikální škálování je vždy levnější, protože kupujete méně strojů.
Realita
I když je seznam faktur kratší, servery podnikové úrovně mají obrovské příplatky. Ve velkém měřítku mohou stovky skromných instancí překonat výkon a zároveň podhodnotit cenu jednoho superpočítače. Skutečný kalkul závisí na vašich specifických vzorcích pracovní zátěže a na tom, jak efektivně je každý zdroj využíván.
Mýtus
Horizontální škálování znamená, že vaše aplikace se automaticky stane spolehlivější.
Realita
Distribuce zlepšuje spolehlivost pouze tehdy, je-li správně navržena. Špatně navržený horizontálně škálovaný systém může katastrofálně selhat, pokud všechny uzly sdílejí jedno úzké hrdlo databáze nebo pokud se samotný nástroj pro vyrovnávání zátěže stane zranitelností.
Mýtus
Musíte si vybrat jeden přístup a toho se trvale držet.
Realita
Většina produkčních prostředí dynamicky kombinuje obě strategie. Bezstavové komponenty se škálují horizontálně, zatímco perzistentní datová úložiště se mohou škálovat vertikálně, dokud se sharding nestane nezbytným. Hranice se s vývojem systémů posouvá.
Mýtus
Vertikální škálování je v cloudové éře zastaralé.
Realita
Poskytovatelé cloudových služeb silně podporují horizontální škálování, ale vertikální škálování zůstává nezbytné. Mnoho spravovaných databázových služeb se před horizontálním ...
Mýtus
Horizontální škálování okamžitě řeší všechny problémy s výkonem.
Realita
Přidání serverů pomůže pouze tehdy, pokud je vaším úzkým hrdlem výpočetní kapacita. Pokud je vaše aplikace pomalá kvůli neefektivním dotazům, únikům paměti nebo blokujícím operacím, další servery vaše problémy jen znásobí. Profilování a optimalizace musí předcházet rozhodnutím o škálování.
Často kladené otázky
Co je horizontální škálování vs. vertikální škálování v jednoduchých termínech?
Horizontální škálování znamená zvládnout více práce přidáním více počítačů do vašeho fondu, například najmutím více pracovníků pro továrnu. Vertikální škálování znamená zesílení výkonu stávajícího počítače, například poskytnutím lepších nástrojů a steroidů vašim pracovníkům. Obojí zvyšuje kapacitu, ale implementace a údržba se zdají být velmi odlišné.
Kdy mám použít vertikální škálování místo horizontálního?
Vertikální škálování vyniká u stavových aplikací, které nebyly vytvořeny pro distribuci, jako jsou tradiční relační databáze nebo starší podnikový software. Je také vhodnější, když by síťová komunikace mezi uzly způsobovala nepřijatelnou latenci nebo když vašemu týmu chybí odborné znalosti pro správu složitosti distribuovaných systémů.
Vyžaduje horizontální škálování speciální návrh aplikace?
Obecně ano. Vaše aplikace musí zpracovávat požadavky bez závislosti na stavu lokálního serveru. Uživatelské relace by měly být uloženy ve sdílených mezipamětech, jako je Redis, nahrávání souborů vyžaduje centralizované úložiště, jako je S3, a vaše databáze musí zpracovávat připojení z více aplikačních serverů. To nejsou nemožné požadavky, ale je třeba je plánovat od raných fází vývoje.
Mohu kombinovat horizontální a vertikální škálování?
Rozhodně a většina organizací přesně tohle dělá. Běžný vzorec škáluje webové servery horizontálně, zatímco databáze vertikálně, dokud je absolutně nepotřebují shardovat. Tento hybridní přístup umožňuje každé vrstvě používat nejvhodnější model škálování pro svá omezení a přístupové vzorce.
Který přístup ke škálování je nákladově efektivnější?
Záleží výhradně na charakteristikách vaší pracovní zátěže a trajektorii růstu. Stabilní a předvídatelný růst může upřednostňovat jednoduchost vertikálního škálování. Vysoce variabilní nebo rychle rostoucí pracovní zátěže se často ukážou jako levnější díky granulární kontrole nákladů horizontálního škálování. Před zahájením práce proveďte podrobnou analýzu skutečných vzorců využívání zdrojů.
Jak funguje automatické škálování s horizontálním škálováním?
Automatické škálování monitoruje metriky, jako je využití CPU, hloubka fronty požadavků nebo vlastní obchodní metriky. Při překročení prahových hodnot automaticky zřídí nové instance a přidá je do vašeho nástroje pro vyrovnávání zátěže. Při poklesu poptávky instance odstraní, aby se ušetřily peníze. Tato elasticita je klíčovou vlastností horizontálního škálování v cloudových prostředích.
Jaká jsou hlavní rizika vertikálního škálování?
Největším rizikem je narazení na limit dostupného hardwaru. Jakmile si koupíte nejvýkonnější možný server, uvíznete. Je tu také prostoje potřebné k upgradu, koncentrace rizika na jednom počítači a obtížnost ospravedlnění drahého hardwaru pro pracovní zátěže, které nepředvídatelně rostou.
Je horizontální škálování pouze pro velké podniky?
Už ne. Cloud computing demokratizoval přístup k horizontálnímu škálování. Startup může nakonfigurovat automatické škálování v režimu Infrastruktura jako kód stejně snadno jako společnost z žebříčku Fortune 500. Skutečnou překážkou jsou architektonické znalosti, nikoli rozpočet ani velikost organizace.
Jak se vyrovnávače zátěže hodí do horizontálního škálování?
Vyrovnávače zátěže jsou směrovače provozu, které umožňují horizontální škálování. Distribuují příchozí požadavky v rámci vašeho fondu serverů, monitorují stav a automaticky odstraňují selhávající uzly. Bez nich by uživatelé přímo kontaktovali jednotlivé servery, což by mařilo účel používání více počítačů.
Co se stane s mými daty, když je škáluji horizontálně?
To je klíčová otázka. Data aplikací v databázích musí zůstat přístupná ze všech uzlů, obvykle prostřednictvím centralizované databáze nebo databázového clusteru. Soubory nahrané uživateli se přesouvají do sdíleného úložiště. Data relací se přesouvají do Redisu nebo podobného úložiště. Kód vaší aplikace se stává bezstavovým, zatímco data se nacházejí ve vyhrazených, často vertikálně škálovaných datových vrstvách.
Může vertikální škálování někdy dosáhnout stejného výkonu jako horizontální škálování?
Pro určité úlohy ano. Jeden stroj s masivním CPU, pamětí a rychlým lokálním úložištěm může překonat distribuovaný systém u úloh, které vyžadují náročnou komunikaci mezi procesy nebo častou lokalizaci dat. Vědecké výpočty, vykreslování videa a některé analýzy databází někdy upřednostňují vertikální škálování i ve velkém měřítku.
Jak se rozhodnu, s jakou strategií škálování začít?
Začněte s omezeními. Pokud máte starší aplikaci a omezený čas na vývoj, vertikální škálování vám pomůže rychleji se posunout vpřed. Pokud vytváříte nový cloudový software, navrhujte horizontální škálování od prvního dne. A co je nejdůležitější, mějte vše pod kontrolou a nechte se řídit reálnými daty o výkonu, spíše než teoretickými předpověďmi.
Rozhodnutí
Horizontální škálování zvolte při vytváření moderních cloudových aplikací, které vyžadují elastický růst a vysokou dostupnost. Vertikální škálování zvolte při práci se staršími systémy, komplexními stavovými úlohami, jako jsou tradiční databáze, nebo když jednoduchost převažuje nad potřebou neomezeného škálování. Většina vyspělých architektur nakonec oba přístupy kombinuje.