- Přehledy IS
- APS (25)
- BPM - procesní řízení (23)
- Cloud computing (IaaS) (10)
- Cloud computing (SaaS) (30)
- CRM (51)
- DMS/ECM - správa dokumentů (19)
- EAM (17)
- Ekonomické systémy (68)
- ERP (87)
- HRM (28)
- ITSM (6)
- MES (33)
- Řízení výroby (53)
- WMS (28)
- Dodavatelé IT služeb a řešení
- Datová centra (25)
- Dodavatelé CAD/CAM/PLM/BIM... (40)
- Dodavatelé CRM (37)
- Dodavatelé DW-BI (50)
- Dodavatelé ERP (63)
- Informační bezpečnost (43)
- IT řešení pro logistiku (48)
- IT řešení pro stavebnictví (26)
- Řešení pro veřejný a státní sektor (27)
CRM systémy
Plánování a řízení výroby
AI a Business Intelligence
DMS/ECM - Správa dokumentů
HRM/HCM - Řízení lidských zdrojů
EAM/CMMS - Správa majetku a údržby
Účetní a ekonomické systémy
ITSM (ITIL) - Řízení IT
Cloud a virtualizace IT
IT Security
Logistika, řízení skladů, WMS
IT právo
GIS - geografické informační systémy
Projektové řízení
Trendy ICT
E-commerce B2B/B2C
CAD/CAM/CAE/PLM/3D tisk
Přihlaste se k odběru zpravodaje SystemNEWS na LinkedIn, který každý týden přináší výběr článků z oblasti podnikové informatiky | ||
Tomcat vládne všem a boří mýty o výběru aplikačního serveru
I když je dnes moderní diskutovat o potřebnosti Java aplikačních serverů vůbec, většina webových aplikací se stále na aplikační server nasazuje. Výběr aplikačního serveru je důležitým rozhodnutím, které má velký vliv na architekturu i na průběh zákaznických projektů.
Při diskuzích s kolegy i zákazníky často slýchám výhrady typu „Tomcat není aplikační server“ nebo „Opravdu velký web nemůže běžet pod Tomcatem“. Tento článek se pokusí podobné a jiné pochyby rozptýlit a ukázat, že pro mnohé projekty je Tomcat výhodnou a plnohodnotnou volbou.
Mýtus první: Tomcat není Java aplikační server?
Ve světle striktní definice Java aplikačního serveru nejde o mýtus, ale o formálně správnou výhradu. Java aplikační server totiž implementuje Java EE specifikaci nebo její část a Tomcat skutečně neimplementuje Java EE specifikaci ani její část zvanou web profil (existuje od verze Java EE 6). Není to tedy certifikovaný Java aplikační server. Je to pouze servlet kontejner s podporou JSP stránek. Stačí to? Pro velkou část webových aplikací ano. Místo o certifikovaných aplikačních serverech proto budu dál hovořit o dobrých aplikačních serverech.
Co dělá aplikační server dobrým aplikačním serverem?
- Dovoluje mi používat nejmodernější technologie.
- Práce se serverem je rychlá a produktivní.
- Server je dobře škálovatelný.
- Má kvalitní dokumentaci a vstřícnou komunitu.
- Mohu používat identický aplikační server pro vývoj i produkční nasazení.
Tomcat tyto atributy splňuje, což se zde pokusím postupně rozebrat.
Mýtus druhý: Standard je nade vše, aneb Java EE vs. Spring
Vhodnost použití Tomcatu pro danou aplikaci hodně souvisí s tím, jestli její architektura staví na Java EE specifikaci nebo používá Spring či jiný open source framework.
Obecně považuji mnohé open source technologie za lety prověřené a stabilní. Kvalitní framework s podporou komunity pro mě znamená víc než standard. U aplikačního frameworku čekám především funkční úplnost, kvalitní dokumentaci a podporu komunity.
Jednotlivé verze Java EE specifikace typicky dělí několik let (Java EE 6 – prosinec 2009, Java EE 7 – červen 2013, Java EE 8 – očekávané uvedení ke konci roku 2016). Jednotlivé verze Spring frameworku také typicky dělí několik let (Spring 3 – prosinec 2009, Spring 4 – prosinec 2013), ale další projekty spadající pod Spring framework mají svůj samostatný životní cyklus (např. Spring Data, Spring Web Services, Spring Boot). Mohou tak rychleji reagovat na nové trendy a především na zpětnou vazbu z Java komunity.
Uvedu dva příklady – depedency injection (vkládání závislostí) a Java 8.
V době, kdy vznikala CDI specifikace, už aplikace postavené na Springu dependency injection několik let používaly. CDI specifikace je sice výborná a v mnoha ohledech lepší než Spring, ale přišla pozdě. Ilustruje to častý přístup posledních verzí Java EE specifikací – kvalitní implementaci již dlouho používaných myšlenek. Inovace přichází z Java komunity a open source projektů. Java EE specifikace trendy nenastavuje, ale pouze dohání.
Druhým příkladem je Java 8, která byla Oraclem uvolněná v březnu 2014. Mohu aplikace se Springem provozovat na Javě 8 a Tomcatu? Ano, prakticky hned od uvolnění Javy 8. Návrh rozhraní ve Springu je výborně kompatibilní s myšlenkou funkcionálních rozhraní (functional interfaces), takže se Springem 4 mohu prakticky hned používat lambda výrazy. Je s Javou 8 kompatibilní i aktuální specifikace Java EE 7? Jistě ano, ale například aktuální verze WebSphere aplikačního serveru 8.5.5 Javu 8 stále nepodporuje. IBM SDK pro Javu 8 je stále horkou novinkou.
Sympatická je mi rovněž nekonfliktní image Spring frameworku, který se vždy prezentoval jako doplněk a nadstavba nad Javou EE. Na druhé straně zastánci Javy EE se s každou novou verzí radují, že už konečně není důvod dál používat Spring.
Mýtus třetí: Open source chybí produktivita, dokumentace a reference
Start Tomcatu i nasazování aplikací je velmi rychlé. Certifikované aplikační servery se většinou marně snaží přiblížit se rychlosti práce s Tomcatem.
K Tomcatu existuje rozsáhlá dokumentace. O ochotě komunity pomáhat s problémy svědčí například otázky na StackOverflow, kde je pro Tomcat evidováno více než 23000 otázek (z toho cca 63% zodpovězených).
V Profinitu Tomcat používáme v produkčním prostředí velkých projektů jak pro státní správu, tak například pro finanční instituce. Na českém trhu roste poptávka po portálových řešeních postavených na Liferay portálu. Považuji Tomcat za dobrou volbu i pro jeho provoz a v praxi už jsme takový projekt dodávali.
Za výbornou referenci pro Tomcat považuji, že dva z velkých hráčů na poli cloudu a integrace – firmy Pivotal a MuleSoft – postavily na Tomcatu svoje komerční řešení Pivotal tc Server a MuleSoft Tcat. Oba servery staví na původní distribuci Tomcatu, ke které přidávají lepší podporu pro pro vysokou škálovatelnost, zejména nástroje pro snadnější administraci velkých clusterů. Pro Tomcat nabízí také placenou podporu.
Mýtus čtvrtý: Opravdu velký web nemůže běžet pod Tomcatem
Setkávám se s názorem, že Tomcat je možná přijatelný pro malé intranetové aplikace, ale rozhodně nezvládne obsluhovat požadavky uživatelů velkého webu na internetu.
Tomcat má výbornou podporu pro škálovatelnost, které se dosahuje vhodnou konfigurací clusteru.
Pro umožnění load balancingu je třeba před cluster Tomcatů umístit vhodný webový server nebo síťový prvek. Typicky se používá webový server Apache httpd. V minulosti jsme dodávali portálový projekt, kde se Liferay portál nasazoval na cluster Tomcat serverů s F5 jako firewallem a load balancerem. Webový server nebo síťový prvek zajišťuje vedle load balancingu i správné chování pro failover.
Replikace HTTP session může být realizována pomocí persistence (sdílený souborový systém, databáze) nebo paměťovou replikací mezi uzly clusteru (každý s každým nebo replikace na záložní uzel).
Obr. 1: Typický deployment Tomcatu v clusteru. Jednotlivé uzly mezi sebou provádí replikaci HTTP session, předřazený Apache web server se stará o load balancing a failover.
V čem jsou lepší jiné servery?
Přímému srovnání Java aplikačních serverů se věnoval můj předchozí článek v IT Systems 4/2015. Tato kapitola má za cíl zopakovat aspekty, které považuji za nejdůležitější.
JBoss / Wildfly
JBoss aplikační server plně implementuje Java EE specifikaci. Pokud uvažujeme aplikaci, která již je provozovaná pod Tomcat serverem, nevidím důvod přecházet na JBoss.
Glassfish
Podobně jako JBoss. Výraznou nevýhodou je, že Oracle už neposkytuje podporu pro Glassfish. Glassfish má sice slíbený další vývoj, ale už jen jako referenční implementace Java EE specifikace.
IBM WebSphere, Oracle WebLogic
Vidím dva opravdu pádné důvody pro nasazení WebSphere nebo WebLogic serverů. Prvním je podpora distribuovaných transakcí. Pokud vaše architektura distribuované transakce používá, transakční manažery ve WebSphere a WebLogic serverech nabízejí jejich robustní a prověřené implementace.
Druhým důvodem pro WebSphere nebo WebLogic je administrace serverů a zejména velkých clusterů. Komfortní administrátorské konzole, zabezpečení práce se servery a nástroje pro automatizaci vytváření běhových prostředí jsou vlastnosti, které Tomcat nemá.
IBM to vidí a nabízí Liberty Profile
I když existují dobré důvody pro použití WebSphere serveru v produkčním prostředí, existuje jenom málo důvodů trápit se s WebSphere serverem při vývoji. Snadnost instalace, HW nároky nebo rychlost startu a nasazování aplikací jsou několika z mnoha důvodů, proč se z pohledu vývojáře nemůže WebSphere s Tomcatem a jinými volně dostupnými servery měřit.
Server Liberty Profile se to snaží změnit. Jeho hlavní motivací je nabídnout vývojářům větší rychlost vývoje a produktivitu. S trochou nadsázky to chápu jako snahu IBM nabídnout vývojářům takový vlastní Tomcat.
Používanost serverů
Kde se vzal sebevědomý nadpis článku, který tvrdí, že Tomcat vládne všem? Jak jsou na tom servery s používaností v reálném světě? Sledováním používanosti aplikačních serverů se dlouhodobě zabývá firma ZeroTurnaround stojící za nástrojem JRebel. Otázka na používaný aplikační server se objevila v jejich průzkumech z let 2012 a 2014. V obou případech byl mezi respondenty ankety Tomcat vybrán nejpoužívanějším serverem.
Květen 2012 – Developer Productivity Report: Tomcat (59%), JBoss (28%), Jetty (27%), WebLogic (14%), Glassfish (11%), WebSphere (10%)
Květen 2014 – Java Tools and Technologies: Tomcat (50%), JBoss (16%), Jetty (12%), Glassfish (7.5%), WebLogic (6%), WebSphere (4%)
Anketa se dále snažila rozklíčovat, jestli je Tomcat používaný pouze při vývoji nebo i v produkčním prostředí. Na otázku, jestli používají stejný aplikační server v produkci i při vývoji, odpovědělo 81% respondentů, že ano.
Zajímavý pohled nabízí i počty otázek evidovaných na webu StackOverflow, který je obecně považovaný za nejlepší volně dostupnou znalostní databázi pro programátory. Různé servery mají svoje vlastní komunity, kde se uživatelé radí o problémech, ale obrovský počet otázek na Tomcat dokládá jeho velkou používanost.
Server | Počet otázek k datu 19. 4. 2015 (procento zodpovězených) |
Tomcat | 23051 (63 %) |
JBoss | 9538 (57 %) |
Glassfish | 5667 (60 %) |
Jetty | 4093 (65 %) |
WebSphere | 3693 (63 %) |
WebLogic | 3543 (55 %) |
Shrnutí
Cílem tohoto článku nebylo přesvědčit, že Tomcat je ve všech ohledech jednoznačně nejlepší Java aplikační server, ale ukázat, že pro mnohé systémy je správnou a stejně dobrou volbou jako řešení, ať už volně dostupná nebo komerční. Myslím, že vnímání Tomcatu se dávno posunulo z pozice alternativy na plnohodnotnou variantu.
Ani jednou jsem nezmínil faktor ceny za licenci. Dříve se často argumentovalo tím, že Tomcat je dobrý, protože je zadarmo. Raději mám formulaci, že Tomcat je dobrý, i když je zadarmo. Považuji ho za kvalitní řešení bez ohledu na cenu.
Nesnažím se argumentovat ve prospěch opouštění jiných aplikačních serverů v prostředích, kde dobře fungují. Každý nový projekt, který spíše než na Java EE specifikaci staví na Spring frameworku, by ale měl vývoj a nasazení pod Tomcatem zvážit.
Tomáš Piňos Autor článku působí ve společností Profinit jako specialista na oblast bankovních aplikací a Java portálů. |
listopad - 2024 | ||||||
Po | Út | St | Čt | Pá | So | Ne |
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
31.3. | HANNOVER MESSE 2025 |
Formulář pro přidání akce
4.12. | Arrow ISV Konference 2024 |
11.12. | Webinář: Dodržování směrnic, compliance, QMS |