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í.