Slovník pojmů

Klient a server

Klient žádá o službu; server ji poskytuje a rozhoduje o jejím výsledku. Tyto role neznamenají jeden prohlížeč proti jednomu fyzickému počítači.

Stručná definice

Role v komunikaci, ne název jedné technologie.

Klientem je software, který službu využívá: nejčastěji prohlížeč, ale také mobilní aplikace, integrační služba, příkazový nástroj nebo automatický import. Server poskytuje funkci nebo data, přijímá požadavky a aplikuje pravidla svého kontraktu.

Za jednou veřejnou adresou může být DNS, reverse proxy, více aplikačních instancí, cache a databázové služby. Naopak jedna serverová aplikace může být klientem jiného API. Označení závisí na konkrétním směru komunikace.

Jaký problém řeší

Rozděluje využití služby od jejího poskytování

Klient-server model umožňuje, aby stejný backend využilo více různých zařízení a automatizovaných systémů.

  • prohlížeč a mobilní aplikace používají stejné API
  • interní administrace, e-shop a partner čtou či mění data přes definovaný kontrakt
  • reverse proxy skryje vnitřní topologii a předá požadavek správné službě
  • server centrálně ověřuje data, identitu a oprávnění, místo aby důvěřoval klientovi
  • monitoring pracuje se stavem odpovědi, latencí a dostupností komunikace

Praktický příklad

Tři klienti jednoho objednávkového API

Webový frontend, mobilní aplikace a interní skladový systém mohou používat stejné API pro načtení objednávky. Každý klient má jiný způsob zobrazení či automatizace, ale server pro všechny ověřuje stejný tenant, identitu a oprávnění.

V odpovědi server vrací HTTP stavový kód, hlavičky a případně JSON. Přijetí odpovědi 202 například může znamenat, že server úlohu přijal ke zpracování, nikoli že skladová synchronizace už skutečně doběhla.

GET /api/orders/ORD-42 HTTP/1.1
Host: api.example.cz
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{"id":"ORD-42","status":"paid"}

Jak funguje

Od URL ke službě a zpět

Zjednodušený tok jedné HTTP komunikace ukazuje, kde vznikají hranice odpovědnosti.

  1. Klient zná URL Prohlížeč nebo jiný program určí zdroj, metodu, hlavičky a případné tělo požadavku.
  2. DNS a HTTPS Doménové jméno se přeloží na síťový cíl a TLS ověří server a chrání přenos.
  3. Veřejná vstupní vrstva Webový server nebo reverse proxy může směrovat požadavek, ukončit TLS a uplatnit technické limity.
  4. Aplikační server Backend provede autentizaci, autorizaci, validaci a business logiku nad daty.
  5. Response pro klienta Server vrátí stav, metadata a obsah. Klient rozhodne, jak výsledek zobrazí nebo automaticky zpracuje.

Důležité pojmy

Klient, server a prostředník mají rozdílné role.

Rozlišení pomáhá správně navrhnout důvěru, chyby i provozní hranice.

Request a response

Požadavek iniciuje klient; odpověď popisuje výsledek. Jejich přesný význam stanoví HTTP a kontrakt dané služby.

User agent

Program jednající za uživatele, často prohlížeč. Uživatel a klient ale nejsou stejné pojmy.

Server jako software i infrastruktura

Může jít o aplikaci, která poskytuje službu, nebo zkráceně o infrastrukturu, kde běží. Kontext rozhoduje o významu.

Proxy

Prostředník může přeposílat provoz, cachovat nebo směrovat requesty. Serverová aplikace musí důvěřovat forwarding hlavičkám jen od známé proxy.

Bezstavové HTTP

HTTP mezi requesty samo nedrží uživatele. Aplikace může použít cookie, session nebo token, ale každý request musí být bezpečně vyhodnocen.

Vztah k podobným pojmům

Klient není frontend a server není nutně backend.

Role komunikace a rozdělení aplikace se často překrývají, ale nejsou totožné.

Klient a uživatel
Jeden uživatel může použít více klientů a automatizovaný klient nemusí reprezentovat člověka.
Server a backend
Backend je aplikační logika; server může být webový server, databáze, proxy nebo fyzická infrastruktura.
Klient a frontend
Frontend je uživatelské rozhraní a často klient API. Worker nebo integrační skript je klient bez grafického rozhraní.
Request a webhook
Webhook je serverem aktivně odeslané oznámení na callback URL; odesílatel tím pro daný tok vystupuje jako klient.

Výhody a omezení

Síťová komunikace přidává sdílení i nejistotu.

Přínosy

  • stejná služba může obsloužit web, mobilní klient i integraci
  • jasný kontrakt odděluje klientské rozhraní od implementace služby
  • infrastruktura může škálovat a chránit vstupní hranici nezávisle na klientovi
  • standardní HTTP nástroje usnadňují cache, monitoring a troubleshooting

Časté chyby

  • důvěřovat hodnotě role, ceny nebo tenanta poslané klientem
  • předpokládat, že odpověď znamená dokončení všech asynchronních následků
  • považovat server za jeden fyzický stroj
  • opakovat mutaci po timeoutu bez idempotence a kontraktu služby

Kdy dává smysl

Je to základní model webu i systémových integrací.

Model klienta a serveru je užitečný všude, kde jedna strana používá funkce druhé – od načtení stránky po předání objednávky dopravci. Pomáhá rozlišit, odkud přichází nedůvěryhodný vstup a kde musí vzniknout autoritativní rozhodnutí.

Pro některé scénáře existují i jiné komunikační modely, například fronty zpráv nebo peer-to-peer. I tehdy ale konkrétní komponenta často zároveň vystupuje jako klient jiné služby a server pro další část systému.

Na co myslet

Síť není bezchybná a klient není důvěryhodný.

Dobrý návrh počítá s výpadkem, zpožděním i změněným požadavkem.

  • validovat a autorizovat data na serveru, ne pouze v prohlížeči
  • používat HTTPS a správně ověřovat důvěryhodné proxy
  • popsat statusy, chyby, timeouty a retry v API kontraktu
  • nevyvozovat dokončení business procesu jen z přijatého requestu
  • logovat korelační informace bez citlivých tokenů a osobních údajů

Časté otázky

Co se o klientu a serveru často plete

Je prohlížeč vždy klient?

V klasické webové komunikaci ano. Klientem ale může být také mobilní aplikace, cron, Postman nebo jiná serverová služba.

Je databáze server?

V databázovém protokolu poskytuje databázová služba serverovou roli. V popisu webu je ale obvykle závislostí aplikačního serveru, ne HTTP serverem pro uživatele.

Je reverse proxy backend?

Je to infrastrukturní prostředník. Může být součástí provozního celku, ale běžně neobsahuje doménovou logiku aplikace.

Může server posílat data bez requestu?

Klasické HTTP je request–response. SSE začíná requestem klienta a WebSocket přechází na jiný obousměrnější provozní model.

Jak pracuji s API v praxi

Komunikaci mezi systémy navrhuji jako jasný kontrakt.

U e-commerce a integrací řeším klienty, API, idempotenci, chyby a provozní chování tak, aby byla komunikace dohledatelná i při výpadcích.

Zavolejte mi

Zavolám vám následující pracovní den mezi 9:00 a 17:00.

Můžete mi také zavolat rovnou.

+420 605 181 728

Nechte mi telefonní číslo a pošlete žádost o zpětné zavolání.

Odesláním souhlasíte se zpracováním údajů pro vyřízení žádosti.