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.

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.

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.
Související články
Související epizody CZ Podcastu
- #261 · Leadership
O vedení lidí a týmů.
- #217 · Ivo Lukačovič
O Windy, JavaScriptu a budování firem.
- #3 · Java 6 SE, Vývoj webových aplikací
Dagi a Filemon o novinkách v Javě 6 a webových frameworcích.