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

Proč 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.

Srovnání bylo původně připravené jako prezentace na setkání firemní Java komunity a jeho podstatnou část tvořila diskuze.

Původní prezentace je ke zhlédnutí na slideshare.net.

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.

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?

Srovnání technologických kritérií následuje dále v kapitole Srovnání – Technologie.

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.

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


JBoss je nově přejmenovaný na WildFly, ale v tomto srovnání zůstanu u starého označení.

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

Kritérium Tomcat JBoss WebSphere WebLogic
Nutnost licence Ne Ne Ano Ano
Komerční podpora Ano Ano Ano Ano
České zastoupení Ne Ano Ano Ano
Cena ? ? ? ?

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).

JBoss EAP WebSphere ND WebLogic Enterprise
$12000 annually $24000 – two-year total 6,6% z licencí WebSphere 8,3% z licencí WebLogic $304000 – first year $60800 – second year S&S (20% license)$364800 – two-year total $200000 – software license $44000 – first year support $44000 – second year support (22% licence)$288000 – two-year total

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

Kritérium Tomcat JBoss WebSphere WebLogic
Messaging Ne Ano (HornetQ) Ano (WebSphere MQ) Ano
Distribuované transakce / dvoufázový commit Ne Ano Ano Ano
Monitoring Ne (přes JMX) Ano (JBoss Admin Console) Ano (Tivoli Performance Viewer) Ano (WL Console + Enterprise Manager)
Skriptování konfigurace Ne Ano (jboss-cli) Ano (wsadmin) Ano (Scripting Tool)
JEE Ne (pouze servlety a JSP) Ano (EAP – Java EE 6, WildFly – Java EE 7) Ano (Java EE 6) Ano (Java EE 6)

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)

Kritérium Tomcat JBoss WebSphere WebLogic
Load balancing Apache httpd + mod_jk, mod_proxy Apache httpd / JBoss Web + mod_cluster IBM HTTP Server + WAS plugin GridLink for RAC
Failover Ano Ano Ano GridLink for RAC
Replikace sessions Ano Ano Ano Ano

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

Kritérium Tomcat JBoss WebSphere WebLogic
Deployment aplikace nakopírováním Ano Ano Ne Ano (Upload Directory)
Exploded deployment / Hot deploy Ano Ano Ano Ano (Fast Swap)
Rychlost startu serveru Good Good Bad Ok
Rychlost redeploymentu aplikace Ok Ok Bad Ok
Podpora buildovacích nástrojů Ano Ano Ano Ano
Podpora v IDE Ano Ano Ano Ano

Kritéria rychlosti – Bad / Ok / Good

Porovnání rychlosti serverů a 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ě:

  • Zákazník má jasnou preferenci / existující licence
    • Výběr podle požadavků zákazníka
    • Výběr je na nás
      • Pokud nepotřebujeme podporu messagingu, distribuovaných transakcí nebo EJB
        • Tomcat + Apache httpd
  • Pokud jsou messaging, distribuované transakce nebo EJB potřeba
    • JBoss + Apache httpd
    • Glassfish ne, protože Oracle už nenabízí komerční podporu (Listopad 2013)

Co si myslí svět?

Výběr serveru neřešíme sami.

Porovnání ZeroTurnaround

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.

Jak jsou na tom servery s používaností?

Leden 2012 – Průzkum newrelic.com – The Death of WebSphere and WebLogic App Servers

Tomcat (54.16%), Jetty (16%), JBoss (9.69%), jiné (17.98%), Glassfish (2.82%), WebSphere (1.66%), WebLogic (0.51%)

Květen 2012 – Průzkum ZeroTurnaround – Developer Productivity Report

Tomcat (59%), JBoss (28%), Jetty (27%), WebLogic (14%), Glassfish (11%), WebSphere (10%)

Květen 2014 – Průzkum ZeroTurnaround – Java Tools and Technologies

Tomcat (50%), JBoss (16%), Jetty (12%), Glassfish (7.5%), WebLogic (6%), WebSphere (4%)


Podobné průzkumy se samozřejmě dají různě zpochybňovat, ale jistě potvrzují, že Tomcat používaný je a je používaný velmi.

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 prosazuje koncept container-less webových aplikací a jejich distribuce ve formě „obyčejných jarů“. Příkladem je server Jetty a spuštění HTTP serveru z main metody Java aplikace:

public static void main(String[] args) throws Exception {

Server server = new Server(8080);

server.start();

server.join();

}

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]   https://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