Definícia
V informatike je klient-server model softvérovej architektúry pozostávajúci z dvoch častí, klientskych systémov a serverových systémov, ktoré komunikujú prostredníctvom počítačovej siete alebo na tom istom počítači. Aplikácia klient-server je distribuovaný systém zložený zo softvéru klienta aj servera. Aplikácia klient-server poskytuje efektívne rozdelenie pracovného zaťaženia: klientsky proces vždy iniciuje spojenie so serverom, zatiaľ čo serverový proces čaká na požiadavky od klientov a následne ich spracuje a vráti výsledok.
Pracovný princíp
Vzťah medzi klientom a serverom popisuje spôsob, akým klient zadáva požiadavku na službu serveru a ako server túto požiadavku prijme, spracuje a odpovie. Interakcie sa často modelujú pomocou sekvenčných diagramov, ktoré sú štandardizované v jazyku Unified Modeling Language (UML). Protokoly bežne používané v klient-server komunikácii zahŕňajú TCP/IP, HTTP, HTTPS, SMTP a ďalšie, ktoré definujú formát správ a pravidlá výmeny dát.
Nasadenie a varianty
Ak je klientsky proces aj proces servera spustený na tom istom počítači, nazýva sa to nastavenie na jednom mieste. V praxi sa však bežne používa distribuované nasadenie, kde sú klienti a servery na rôznych strojoch alebo v rôznych sieťach.
Okrem základného modelu existujú aj rozšírenia a varianty:
- Dvojúrovňová (two-tier) architektúra – využíva iba dva typy hostiteľov: klientov a servery. Klient spracováva prezentáciu a aplikačnú logiku môže byť čiastočne na klientovi, zatiaľ čo server spravuje údaje a ich trvalé uloženie.
- Viacvrstvová (n-tier) architektúra – aplikačná logika je rozdelená do viacerých vrstiev (prezentačná, aplikačná, dátová), čo zlepšuje škálovateľnosť, údržbu a bezpečnosť.
- Peer-to-peer (P2P) – alternatívny prístup, v ktorom každý hostiteľ môže byť súčasne klientom aj serverom. Tento prístup nie je centralizovaný, pretože každá inštancia aplikácie môže vykonávať obidve úlohy. Architektúry typu peer-to-peer sa často označujú skratkou P2P.
Výhody a nevýhody
- Výhody:
- Centralizovaná správa dát a služieb (jednoduchšia údržba a zálohovanie).
- Možnosť škálovania serverov podľa záťaže (vertikálne i horizontálne).
- Jasné oddelenie zodpovedností medzi klientom a serverom.
- Nevýhody:
- Server môže byť jedným bodom zlyhania, ak nie je vhodne zabezpečený a replikovaný.
- Vyššie nároky na infraštruktúru a sieť pri veľkom počte klientov.
- Latencia pri sieťovej komunikácii v porovnaní s lokálnymi riešeniami.
Bežné príklady použitia
Softvérová architektúra klient-server sa stala jedným zo základných modelov sieťových počítačov. Mnohé bežné internetové a podnikové aplikácie sú postavené na tomto modeli. Medzi štandardné sieťové funkcie založené na modeli klient-server patria napríklad:
- výmena e-mailov,
- prístup na web (HTTP/HTTPS),
- databázy, sú (prístup k relačným a NoSQL databázam cez klientské knižnice alebo cez DB servery),
- webové služby a REST/GraphQL API, ktoré umožňujú komunikáciu medzi mobilnými aplikáciami, webovými klientmi a servermi,
- podnikové aplikácie (ERP, CRM) s centrálne spravovanými dátami.
Napríklad webový prehliadač je klientský program na počítači používateľa, ktorý pristupuje k informáciám na webovom serveri. Server spracuje požiadavku (napr. požiadavku HTTP), vráti HTML, CSS a skripty a klient ich vykreslí.
Bezpečnosť a spoľahlivosť
Pri návrhu klient-server systémov je potrebné venovať pozornosť bezpečnosti (overovanie, autorizácia, šifrovanie prenosu prostredníctvom TLS/SSL) a spoľahlivosti (replikácia, zálohovanie, load balancing). Ochrana pred útokmi, ako sú DoS, útoky na webové aplikácie alebo neoprávnený prístup k dátam, patrí medzi kľúčové požiadavky produkčných systémov.
Zhrnutie
Architektúry klient-server aj P2P sú dnes široko používané a každá z nich sa hodí pre iný typ riešenia. Klient-server model je veľmi flexibilný — od jednoduchých dvojúrovňových systémov až po komplexné viacvrstvové aplikácie bežiace v cloude — a zostáva jedným z pilierov moderného návrhu sieťových aplikácií.


