Úvod
Technológie a internet sa stali ústrednou súčasťou nášho bežného, akademického a profesionálneho života. Preto nie je prekvapením obrovské množstvo webových stránok a aplikácií, ktoré existujú súčasne. Ak podnikáte, určite chcete mať pridruženú webovú platformu. Aplikácia vám umožňuje jednoducho propagovať a poskytovať vaše služby cieľovým zákazníkom.
Bez ohľadu na dôvod, prečo vytvárate webovú aplikáciu, musíte určiť, ako ju vytvoríte. Pokiaľ ide o výber najlepšieho nastavenia servera, máte k dispozícii mnoho možností. Architektúra servera, pre ktorú sa rozhodnete, určí, ako budete spúšťať a spravovať všetko vo vašom prostredí. Preto sa toto rozhodnutie musí urobiť po dôkladnom zvážení.
Ako si vybrať správne nastavenie servera
Ako sa teda rozhodnúť, ktorá architektúra je pre vašu aplikáciu tá „správna“? Aby ste tak mohli urobiť, musíte najprv premyslieť, aké sú požiadavky na vašu webovú aplikáciu. Musia existovať určité funkcie, ktoré musíte začleniť, aby fungovala efektívne pre váš konkrétny prípad použitia. Možno sa napríklad snažíte o aplikáciu, ktorú je ľahké škálovať. Alebo možno potrebujete, aby vaša aplikácia fungovala hladko v prehliadačoch aj na mobilných zariadeniach. Zároveň môže byť vašou prvoradou starosťou aj rozpočet.
Bez ohľadu na to, aké sú vaše požiadavky, mali by ste vedieť, že pre svoju aplikáciu môžete vytvoriť vlastné riešenie. V tomto návode preskúmame rôzne typy serverov, ktoré ľudia bežne používajú pre svoje webové aplikácie. Povieme si o rôznych prípadoch použitia a o tom, kedy je najlepšie použiť konkrétne nastavenie. Aby sme vám pomohli rozhodnúť sa, či je pre vás vhodné, uvedieme aj niekoľko výhod a nevýhod každej architektúry servera.
1. Všetko na jednom serveri
Ako napovedá samotný názov, celé prostredie nahráte na jeden jediný server. Prostredie by zahŕňalo váš webový server, aplikačný server, ako aj databázový server. Funguje to napríklad na konfigurácii balíka Linux, Apache, MySQL, a PHP (LAMP). Môžete postupovať podľa našich návodov, ako nainštalovať balík LAMP na server Ubuntu a ako nainštalovať balík LAMP na CentOS.

Kedy ho použiť:
Tento typ usporiadania funguje najlepšie, ak máte málo času. Nastavenie je jednoduché a rýchle. Preto funguje pre zjednodušené webové aplikácie.
Výhody:
- Jednoduché a ľahko pochopiteľné a implementovateľné.
- Nastavenie v celej svojej dĺžke zaberie málo času.
Nevýhody:
- Neumožňuje horizontálnu škálovateľnosť.
- Ponúka len veľmi málo z hľadiska izolácie komponentov.
- Aplikácia a databáza v podstate súperia o rovnaké zdroje, keďže sú na jednom serveri.
- V dôsledku toho môžete zaznamenať slabý výkon.
2. Samostatný databázový server
Hlavným problémom pri používaní jedného servera je súťaž o obmedzené zdroje. Toto nastavenie má za cieľ tento problém vyriešiť. Tu je systém riadenia bázy dát alebo DBMS, oddelený od aplikačého servera. Databázový server je v súkromnej sieti a má vlastné zdroje. Výsledkom je lepší výkon a vyššia bezpečnosť.

Kedy ho použiť:
Opäť platí, že ak chcete nasadiť rýchle nastavenie, konfigurácia je pomerne jednoduchá. Je to ideálne riešenie, ak sa obávate, že databáza a aplikácia budú súperiť o rovnaké zdroje.
Výhody:
- Samostatné, vyhradené systémové zdroje pre aplikáciu a databázu, vrátane CPU, pamäte, I/O atď.
- Väčší potenciál pre škálovateľnosť v aplikačnej aj databázovej vrstve.
- Zdroje môžete pridávať a odoberať podľa potreby.
- Ak odstránite databázu z verejného internetu, môžete tiež zvýšiť svoju bezpečnosť.
Nevýhody:
- O niečo zložitejšie ako nastavenie s jedným serverom.
- Nízka šírka pásma alebo vysoká latencia sieťového pripojenia medzi týmito dvoma servermi môže spôsobiť problémy s výkonom.
3. Reverzný proxy server alebo nástroj na vyrovnávanie záťaže
Tu prichádzajú na rad nástroje na vyrovnávanie záťaže prichádzajú na scénu. Load balancery sa zvyčajne používajú v serverových prostrediach na zlepšenie výkonu a spoľahlivosti. Robia to „vyrovnávaním záťaže“, t. j. distribúciou pracovného zaťaženia medzi pole serverov.

Kedy to použiť:
Load balancery sú mimoriadne užitočné, keď potrebujete vykonať horizontálne škálovanie. Horizontálne škálovanie v podstate znamená pridanie ďalších serverov do prostredia. Môžete tiež použiť reverzné proxy na aplikačnej vrstve na obsluhu niekoľkých aplikácií naraz pomocou jednej domény a portu. HAProxy, Nginx, a Varnish sú príkladmi softvéru, ktorý umožňuje vyrovnávanie záťaže pomocou reverzného proxy.
Výhody:
- V prípade, že jeden server v rade zlyhá, ostatné servery kompenzujú jeho funkciu vyrovnávaním pracovného zaťaženia.
- Umožňuje vám vykonávať horizontálne škálovanie na zvýšenie alebo zníženie kapacity prostredia.
- Obmedzuje tiež pripojenia klientov, čo ponúka ochranu pred útokmi DDOS.
Nevýhody:
- V prípade, že systémové prostriedky nie sú dostatočné, load balancer môže obmedziť výkon vašej aplikácie.
- Na zabezpečenie správneho výkonu je potrebná správna konfigurácia.
- Výrazne komplexnejšie ako nastavenia s jedným serverom alebo samostatnými servermi.
- Musíte vziať do úvahy faktory, ako je ukončenie SSL a aplikácie, ktoré vyžadujú sticky sessions.
- Hlavným dôvodom na obavy pri používaní load balancerov je to, že predstavujú jediný bod zlyhania (single point of failure). To znamená, že ak load balancer prestane fungovať, celá vaša služba vypadne.
4. HTTP akcelerátor alebo reverzné proxy s vyrovnávacou pamäťou
Toto je nastavenie, ktoré môžete použiť na zvýšenie rýchlosti, s akou doručujete obsah používateľovi vašej aplikácie. Využíva rôzne techniky na skrátenie tohto času. Najdôležitejšou z nich je ukladanie odpovede z aplikačného servera do vyrovnávacej pamäte. Akcelerátor uloží obsah do svojej pamäte, keď oň používateľ požiada prvýkrát. Preto, keď prídu akékoľvek podobné budúce požiadavky, poskytne obsah rýchlo bez interakcie s aplikačným serverom. Nginx, Varnish aj Squid sú schopné HTTP akcelerácie.

Kedy to použiť:
Pochopiteľne, toto nastavenie je najvhodnejšie pre súbory a obsah, ktoré používatelia požadujú veľmi často. Veľmi dobre funguje aj pre dynamické webové aplikácie s veľkým množstvom obsahu.
Výhody:
- Ukladanie do vyrovnávacej pamäte a kompresia výrazne zvyšujú rýchlosť aplikácie a spracovania požiadaviek.
- Zníženie zaťaženia procesora tiež zlepšuje výkon stránky.
- Môžete to použiť aj ako load balancer s reverzným proxy.
Nevýhody:
- Musíte ho dobre vyladiť, aby ste z neho získali najlepší výkon.
- V prípade nízkej miery zásahov vyrovnávacej pamäte (cache-hit rate) môžete zaznamenať slabý výkon.
5. Replikácia databázy typu Primary-Replica
Nastavenie replikácie databázy typu primary-replica je zvyčajne veľmi užitočné pre systémy, ktoré vykonávajú viac čítaní ako zápisov. Takúto architektúru môžu napríklad skutočne využiť systémy na správu obsahu (CMS). Na replikáciu potrebujete jeden primárny uzol a jeden alebo viac replikačných uzlov. Čítania sa distribuujú medzi všetky uzly. Aktualizácie smerujú iba do primárneho uzla.

Kedy to použiť:
Ako sme spomínali, nastavenie databázy založené na replikácii pomáha zlepšiť výkon čítania systému. Môžete ho použiť pre aplikácie ako CMS.
Výhody:
- Zlepšuje výkon čítania databázy, keďže ho rozdeľuje medzi repliky.
- Ak primárny uzol používate len na aktualizácie, môžete tiež zlepšiť výkon zápisu.
Nevýhody:
- Každá aplikácia, ktorá sa pokúša o prístup k databáze, musí byť schopná rozhodnúť, do ktorého uzla má posielať aktualizácie a požiadavky na čítanie.
- V prípade zlyhania primárnej repliky sa aktualizácie zastavia. Musíte problém vyriešiť, aby aktualizácie mohli pokračovať.
- Neexistuje žiadny mechanizmus prevzatia služieb pri zlyhaní (failover), ktorý by vyriešil potenciálne zlyhanie primárneho uzla.
Kombinované používanie serverových nastavení
Našťastie je tiež možné skombinovať rôzne techniky na dosiahnutie požadovaného výsledku. To znamená, že môžete vyvažovať záťaž aplikačných serverov s caching servermi v jednom prostredí a replikovať databázu. To vám umožní ťažiť z funkčnosti oboch serverov. Nastavenie to však nijako neskomplikuje ani nesťaží.
Príklad:
Pokúsime sa takéto prostredie pochopiť na príklade:

V takomto prostredí bude load balancer posielať statické požiadavky na caching servery.Statický obsah okrem iného zahŕňa napríklad CSS, obrázky a Javascript. Akékoľvek iné typy požiadaviek na obsah namiesto toho nasmeruje na aplikačné servery.
Povedzme, že používateľ požaduje z prostredia nejaký statický obsah. Stalo by sa nasledovné:
- Load balancer najprv určí, či ide o cache-hit alebo cache-miss. Obsah typu cache-hit sa nachádza v cache, zatiaľ čo obsah typu cache-miss tam nie je. Robí to tak, že to overí u cache-backendu.
- V prípade, že ide o cache-hit, load balancer odošle obsah používateľovi.
- V prípade, že ide o cache-miss, cache server prepošle požiadavku na backend aplikácie.
- App-backend vyhľadá a odošle obsah z databázy.
- Cache-backend prijme obsah od load balancera. Tento obsah tiež uloží do cache pred tým, ako ho vráti load balanceru.
- Ten potom prepošle odpoveď používateľovi.
Na druhej strane, ak používateľ požiada o dynamický obsah, stane sa toto:
- Požiadavka príde od používateľa na load balancer.
- Táto požiadavka prichádza na app-backend.
- App-backend lokalizuje požadovaný obsah a vráti ho load balanceru.
- Používateľ dostane obsah.
Jednou z hlavných výhod takéhoto kombinovaného prostredia je, že je spoľahlivejšie. Nielen to, ale má aj vynikajúce výkonnostné schopnosti. Stále však existujú dva jediné body zlyhania – load balancer a primárny databázový server.
Záver
Každé nastavenie servera môžete vo svojom prostredí použiť samostatne. Na druhej strane by ste mohli spojiť aj niekoľko z nich dohromady a vytvoriť tak personalizované riešenie. Neexistuje žiadna „správna“ odpoveď. Všetko závisí od funkčnosti, ktorú chcete z architektúry získať.
Základné znalosti o tom, ako funguje jednotlivé nastavenie servera, vám pomôžu urobiť rozhodnutie pre vašu vlastnú aplikáciu. Najlepšie je začať v malom a jednoducho. S pribúdajúcimi skúsenosťami môžete zložitosť svojho nastavenia postupne zvyšovať.
Príjemnú prácu s počítačom!
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.