facebook LinkedIN LinkedIN - follow
IT SYSTEMS 4/2015 , ITSM (ITIL) - Řízení IT

Srovnání Java aplikačních serverů



ProfinitProč srovnávat? Výběr aplikačního serveru je důležitým rozhodnutím, které má velký vliv na architekturu i průběh zákaznických projektů. V prostředí, kde zákazník nemá jednoznačnou preferenci, je třeba mít kritéria a vodítka, jak aplikační server vybrat. Představení takových kritérií je cílem tohoto článku.


Výsledkem srovnání není jednoznačně vyhodnocený nejlepší kandidát. Bez zohlednění konktextu konkrétního zákazníka a projektu takový výběr není možný. Cílem článku je proto představení srovnávacích kritérií, jejich stručná diskuze a návod, jak je pro konkrétní projekt použít.

Jak vypadá typová aplikace?

Požadavky konkrétní aplikace jsou pro výběr aplikačního serveru zásadní. Vybrané technologie, požadovaná dostupnost nebo prostředí zákazníka volbu do značné míry předurčují. Při srovnávání serverů jsme uvažovali „typovou“ aplikaci popsanou následující obrázkem 1.

Obr. 1: Schéma typové aplikace použité pro srovnání aplikačních serverů
Obr. 1: Schéma typové aplikace použité pro srovnání aplikačních serverů

Uvažujeme tedy webovou aplikaci, intranetovou nebo internetovou, se kterou uživatelé pracují prostřednictvím webového prohlížeče. Aplikace může publikovat REST nebo SOAP rozhraní. Aplikace může přistupovat k několika transakčním zdrojům (databáze, messaging) jako i k netransakčním zdrojům (webové služba). Mezi časté otázky, které musí návrh typické aplikace řešit, patří:

  • Staví aplikace více na technologiích z JEE specifikace nebo je postavená na frameworku jako je Spring? Použití technologií jako EJB nebo JMS výběr značně zužuje.
  • Pracuje aplikace nad více transakčními zdroji? Požadavek na podporu distribuovaných transakcí výběr opět zužuje.
  • Vyžaduje aplikace komfortní administrátorské rozhraní pro infrastrukturu aplikačního serveru?
  • Vyžaduje nasazení aplikace složitější cluster a jeho detailní monitoring? 

Co je Java aplikační server?

Pro potřeby tohoto srovnání je aplikačním serverem cokoliv, co implementuje Java EE specifikaci nebo její část. Jednoznačně proto odpovíme na otázku, zdali je Tomcat aplikační server. I když je tato otázka je oblíbeným předmětem vyhrocených diskuzí, pro potřeby tohoto srovnání Tomcat aplikačním serverem je.

Servery ve srovnání

Do srovnání jsem zahrnul čtyři servery, se kterými se na projektech ve firmě potkáváme.

  • Apache Tomcat
  • JBoss Application Server
  • IBM WebSphere Application Server
  • Oracle WebLogic
loga

JBoss je nově přejmenovaný na WildFly, ale v tomto srovnání zůstanu u starého označení. A proč ne Glassfish? Od konce roku 2013 už Oracle nenabízí komerční podporu pro Glassfish server. Glassfish do budoucna zůstane referenční implementací Java EE specifikace.

Skupiny kritérií

Různí lidé mohou mít na výběr aplikačního serveru výrazně odlišná kritéria. Obchodníky bude zajímat cena a možnost podpory, architekty podporované technologie a možnosti nasazení, vývojáře zejména rychlost serveru při vývoji. Srovnávací kritéria jsem proto rozdělil do čtyř skupin:

  • Nákup – Nutnost licence, komerční podpora, cena, ...
  • Technologie – Messaging, distribuované transakce, skriptování, monitoring, Java EE?
  • Dostupnost (HA) – Load balancing, failover, replikace sessions?
  • Vývoj – Rychlost startu serveru, redeploymentu aplikací, podpora v IDE, ...

Srovnání – Nákup

Tab. 1
Tab. 1

Pro ukotvení představy o ceně poslouží srovnání JBoss EAP, WebSphere ND a WebLogic Enterprise pohledem firmy RedHat (dodavatel JBoss serveru). RedHat uvádí následující kalkulace pro scénář 16 jader procesorů Intel a ceny licencí a podpory na 2 roky (ceníkové ceny z ledna 2014).

Tab. 2
Tab. 2

Pro detaily viz JBoss EAP Calculator.

Porovnání nezohledňuje možná cenová zvýhodnění a další náklady jako školení, rychlost serverů, náklady na administraci prostředí a náklady spojené s řešením chybových stavů serveru JBoss. To jsou argumenty, kterými bude ve srovnání oponovat IBM. Pro detaily viz IBM WebSphere® Application Server V8.5 vs. JBoss® Enterprise Application Platform V6 TCO Analysis.

Srovnání - Technologie

Tab. 3
Tab. 3

Aplikační servery samozřejmě implementují více specifikací a nabízí množství dalších technologií. Cílem srovnání bylo omezit se na technologie, kde se projeví výraznější rozdíly.

Chleba se láme na podpoře messagingu a distribuovaných transakcí. Zatímco WebSphere a WebLogic nabízí „osvědčená“ řešení a množství referencí, u JBoss serveru jsem přesvědčivé reference nenašel. To samozřejmě neznamená, že JBoss není v tomto ohledu kvalitní produkt. Tomcat messaging a distribuované transakce nenabízí vůbec, ale je možné použít produkty třetích stran.

V případě IBM je právě spolehlivost JBoss transakčního manažeru otázkou, do které se trefují jejich srovnávací studie, které tvrdí že JBoss je výrazně pomalejší a chybovější. Pro detaily viz IBM WebSphere® Application Server V8.5 vs. JBoss® Enterprise Application Platform V6 TCO Analysis.

Dobrou strategií pro použití distribuovaných transakcí je nepoužívat je. Pokud je použití distribuovaných transakcí opravdu nutností a v úvahu připadá použití JBoss serveru, vidím jako nutné všechny transakční scénáře před konečným rozhodnutím důkladně otestovat.

Srovnání - Dostupnost (HA)

Tab. 4
Tab. 4

Všechny servery ze srovnání umožňují stavbu i velmi složitých clusterů. S rostoucí cenou serveru ale roste i komfort při vytváření a správě clusterových konfigurací.

Srovnání - Vývoj

Tab. 5
Tab. 5

Porovnání rychlosti serverů a použitá stupnice hodnot Bad / Ok / Good nevypadají úplně seriózně, ale odrážejí pocity při práci s jednotlivými servery. Zájemce o podrobnější srovnání včetně konkrétních časů odkazuji na článek The Great Java Application Server Debate.

Jaký server bych použil já?

Kritéria jsou představena, zbývá si vybrat. Rozhodoval bych se následovně. Pokud má zákazník má jasnou preferenci a případně existující licence řídím se samozřejmě podle požadavků zákazníka. Pokud je výběr na nás jako dodavateli, vidím dvě možnosti:

  • Pokud nepotřebujeme podporu messagingu, distribuovaných transakcí nebo EJB, volím Tomcat + Apache httpd.
  • Pokud jsou potřeba messaging, distribuované transakce nebo EJB, volím JBoss + Apache httpd.

Co si myslí svět?

Výběr serveru pochopitelně neřešíme sami. Firma ZeroTurnaround stojící za nástrojem JRebel se Java aplikační servery pokusila porovnat v roce 2013. Průzkum The Great Java Application Server Debate zkoumal servery pohledem vývojářů. Porovnávalo se tedy snadnost získání a instalace serverů, podpora ve vývojářských nástrojích, kompletnost implementace JEE specifikace, kvalita dokumentace nebo rychlost běžných vývojářských úkonů (start serveru, redeployment aplikací, ...). Nejvíce bodů posbíral JBoss (35), potom Glassfish (34.5), Tomcat (34), Liberty Profile (31) a Jetty (29.5). Mimo kategorie zůstaly servery WebSphere a WebLogic, které jsou z pohledu vývojáře „velké a pomalé“ a které by v takto sestaveném porovnání neměli šanci obstát.

Obr. 2: Používanost Java aplikačních serverů podle průzkumu ZeroTurnaround
Obr. 2: Používanost Java aplikačních serverů podle průzkumu ZeroTurnaround - Java Tools and Technologies z května 2014. Výsledky: Tomcat 50%, JBoss 16%, Jetty 12%, Glassfish 7.5%, WebLogic 6%, WebSphere 4%.


Trendy

Velmi mě oslovuje přístup kompletního skriptování vytváření infrastruktury aplikačních serverů jako i každé změny a nasazování nových verzí aplikací. Dobrou motivací je přiblížení se konceptu PhoenixImmutable serverů.

Zatímco pro mnoho projektů má stále smysl otázka „jaký aplikační server vybrat“, je relevantní ptát se, jestli je aplikační server ještě vůbec potřeba. Nabízí se citát předního IT myslitele Neala Forda: „Yesterday's best practice is tomorrow's anti-pattern“. Výrazně se totiž prosazuje koncept container-less webových aplikací a jejich distribuce ve formě „obyčejných jarů“. Příkladem je server Jetty. Vedle Jetty se konceptem container-less aplikací zabývá například projekt spring-boot.

Hlavně pro internetové aplikace může být výhodné nahradit infrastrukturu aplikačních serverů možnostmi „cloudů“. Za zmínku stojí snaha standardizovat specifikace „platform as a service“ a projekt Cloud Foundry.

Závěr

Cílem článku bylo představit kritéria pro porovnání vybraných aplikačních serverů. Zásadní pro výběr jsou požadavky konkrétní aplikace a prostředí zákazníka. Proto nekončí srovnání výběrem jednoznačného vítěze. Trendem je, že použití „drahých“ komerčních serverů jako je WebSphere nebo WebLogic pomalu ztrácí opodstatnění. Jistě zůstávají prostředí a architektury, kde je jejich použití dobrou volbou, ale jednoznačným trendem je posun k jednodušším serverům jako je Tomcat nebo dokonce container-less aplikace a k architekturám, pro které jsou tyto servery vhodnější. Tento trend potvrzují i citované průzkumy firem ZeroTurnaround a NewRelic.

Zdroje:
  1. http://www.slideshare.net/tomaspinos/srovnn-java-aplikanch-server
  2. Developer Productivity Report 2012: Java Tools, Tech, Devs & Data
  3. The Great Java Application Server Debate
  4. Java Tools and Technologies Landscape for 2014
  5. The Death of WebSphere and WebLogic App Servers
  6. Stop Wasting Money On WebLogic, WebSphere, And JBoss Application Servers
  7. Container-less web apps
  8. Glassfish – konec podpory
  9. Ceny licencí a podpory - JBoss EAP Calculator
  10. IBM WebSphere® Application Server V8.5 vs. JBoss® Enterprise Application Platform V6 TCO Analysis
Tomáš Piňos, Profinit Tomáš Piňos
Autor článku je konzultantem společnosti Profinit.
Chcete získat časopis IT Systems s tímto a mnoha dalšími články z oblasti informačních systémů a řízení podnikové informatiky? Objednejte si předplatné nebo konkrétní vydání časopisu IT Systems z našeho archivu.