dagblog.
← Archiv

Třívrstvá architektura v kostce I.


Úvod

Ač vědomě či nevědomě se s produkty postavenými podle moderního scénáře business

aplikací, též nazývaného třívrstvá architektura, setkáváme na každém kroku.

Nevěříte, tak si položte otázky, jestli jste někdy používali online shop,

eleketronickou rezervaci hotelu, letenky či ubytování nebo jste využili servis některého

zpravodajského portálu. Pokud je vaše odpověď ano, pak jste s pravděpodobností

hraničící s jistotou, narazili na třívrstvou, někdy též nazývanou vícevrstvou,

architekturu.

Proč tři a ne dvě?

Model třívrstvé architektury je přímou evolucí, z dnešního pohledu již koncepčně

zastaralé, dvouvrstvé architektury. Dvouvrstvá architektura vychází z

vrstvy klientské a vrstvy datové, jak ukazuje následující obrázek.

Obrázek ukazuje dvě vrstvy, vrstvu klientskou a datovou
Obrázek se nepodařilo načíst. Obrázek ukazuje dvě vrstvy, vrstvu klientskou a datovou
↗ Medium

Klient obsahuje většinu aplikační logiky, se kterou pracuje přímo nad datovým

zdrojem. V mnoha scénářích je zdroj dat reprezentován relační databází a klient

využívá jazyk SQL pro práci s daty. Mezi další typy datového zdroje patří soubory a

nebo jiné aplikace např. informační systémy.

Nevýhody tohoto modelu se ukázaly při vzrůstající komplexností klientských

aplikací. Se složitostí aplikací vzrůstaly výkonové nároky na klientské počítače což

byl jeden faktor. Další faktory přímo vyplynuly z masivního rozšíření aplikací,

softwárové firmy byly nuceny pružně reagovat na poptávku a tím pádem se snažit

operativně plnit přání zákazníků. Z těchto business procesů byly definovány požadavky na budoucí aplikace. Například

nutnost sdílení zdrojů, omezení datového přenosu atd., diky kterým se začalo

uvažovat o architektuře, která by tyto požadavky pokryla.

Řešení se našlo v podobě přidání třetí — střední vrstvy (middle tier). Samozřejmě

se nejednalo pouze o přidání vrstvy, bylo nutno specifikovat jednotlivé vrstvy resp.

jejich role v architektuře. Třívrstvou architekturu znázorňuje následující obrázek.

Obrázek ukazuje tři vrstvy, vrstvu klientskou, </p><p>aplikační a datovou
Obrázek se nepodařilo načíst. Obrázek ukazuje tři vrstvy, vrstvu klientskou, </p><p>aplikační a datovou
↗ Medium

Staronový význam jednotlivých vrstev

S přechodem na třívrstvou architekturu se posunul i význam jednotlivých vrstev,

nejmarkantněji se to projevilo u vrstvy klientské. Díky nově definované aplikační

vrstvě bylo možné aplikační logiku, která do té doby ležela na klientu, přesunout na

aplikační server. Díky tomuto tahu se klientům značně ulevilo neboť veškerý

výpočetní výkon byl přesunut na výkonné servery.

Diky přesunutí aplikační logiky na jedno místo bylo možné dosáhnout jejího sdílení

a lepší správy a dostupnosti. Aplikační vrstva prezentovaná aplikačním serverem mohl a nabídnout služby v

podobě rozložení zátěže (load balancing) či výpadku (fail over). Významnou měrou se

podařilo redukovat datový přenos, jehož těžiště se přesunulo na trasu mezi aplikačním

serverem a datovým zdrojem. Spojení aplikačního serveru a datového zdroje bylo možno

realizovat vhodným přenosovým připojením. Snížení datového přenosu přímo ovlivnilo

rychlost odezvy klientů a umožnilo jejich připojení na linkách s omezenou přenosovou rychlostí .

Tenký a Tlustý klient

Takto “očesaní” klienti možná zavdali příčinu k jejich pojmenování na tenké klienty

(thin client) . Obecně byla ovšem klientská vrstva definována jako vrstva, která je určena

pouze k prezentaci dat uživateli. Tenký klient je proto takový klient, který neobsahuje

žádnou aplikační logiku. Aplikační logiku mu zprostředkuje aplikační server, ke

kterému tenký klient přistupuje. Naopak tlustý klient, v dvouvrstvém modelu pouze

klient, obsahuje většinu aplikační logiky. Ve skutečnosti i tenký klient musí

nějakou aplikační logiku obsahovat, ale oproti tlustému klientu je to naprosto

zanedbatelná část.

A co webový prohlížeč?

Webový prohlížeč, v rámci předchozí definice, spadá do skupiny tenkého klienta. Já

osobně rozlišuji mezi prohlížečem a tenkým klientem. Prohlížeč postavený na

standardech webu používá pro popis grafického uživatelského rozhraní (GUI) jazyk

HTML a CSS. Jazyk HTML v kombinaci s CSS nenabízí takové možnosti oproti tenkým

klientům, aby bylo možné popsat složitější rozhraní. Další nevýhodou prohlížeče je

svázání s modelem žádost/odpověď (request/response) nastaveným HTTP protokolem.

Tyto odlišnosti mě vedou k rozlišování pojmu webový prohlížeč a tenký klient
v kontextu třívrstvé architektury. Mezi častý omyl patří rozlišování tenkých a

tlustých klientů podle toho jestli se jedná o webový prohlížeč. K tomuto bych rád

podotknul, že klíčovým faktorem není to jestli se jedná ve výsledku o prohlížeč či nikoliv, ale

rozložení aplikační logiky.

Datová vrstva

U datové vrstvy též nazývané backend nedošlo v třívrstvém modelu k žádnému posunu.

Tato vrstva slouží jako datová základna a lhostejno jestli je v pozadí relační

databáze, souborový
 systém, webová služba či jiná aplikace.

Aplikační vrstva

Jak již bylo vzpomenuto o pár odstavců výše, aplikační vrstva v

podstatě tvoří skořápku pro aplikační logiku. Tato vrstva resp. aplikační logika zajišťuje přístup k datům,

práci s daty a z jejich vystavení ve vhodném formátu (XML, HTML) pro klient vrstvu.

Z pohledů doby zaznamenala aplikační vrstva právě nejbouřlivější vývoj. Jako

nejjednodušší realizaci aplikační vrstvy můžeme považovat webový server s CGI

rozhraním, jehož pomocí se volaly výkone rutiny prezentované spustitelnými soubory a

později serverovými skripty.

Komplexnost aplikační vrstvy vedla k jejímu dalšímu rozdělení na vrstvy. Toto

rozčlenění pomohlo definovat odpovědnosti jednotlivých vrstev v rámci aplikační

vrstvy. Vrstvy jsou definovány jako prezentační (presentation), aplikační (business)

a datová (persistence). Na pomezí těchto vrstev leží například MVC (Model View

Controller), ORM atd., ale o tom v příštím díle. Samozřejmě pokud bude zájem.

Verze na Medium

Související články

Související epizody CZ Podcastu