# ApplicationServer vs. Tomcat



## Olel (21. Okt 2008)

Hallo zusammen,

ich bin gerade dabei mir eine Systemarchitektur für eine Webanwendung zu überlegen. Dabei stoße ich auf die Frage, ob es sinnvoll ist einen "echten" ApplicationServer einzusetzen (wie JBoss, Geronimo/WAS CE, Glassfish) oder ob ein "einfacher" Tomcat ausreicht.

Ich versuche mal kurz die Anwendung zu umreißen, damit man ein Bild von den Anforderungen bekommt.

Die Anwendung wird zentral auf einem Server (oder vermutlich eher auf einer Server-Farm) laufen und von schätzungsweise 10.000 Clients genutzt, wobei wir von ungefähr 1.000.000 Anfragen pro Tag ausgehen. Die Anfragen werden alle lesend sein, schreibende Zugriff werden sehr selten (ca. 10/Tag) erfolgen.

Die Anwendung soll mit Spring/Hibernate implementiert werden.
Die Anwendung ist technologisch nicht besonders anspruchsvoll; der Anspruch besteht eher darin, dass relativ hohe Zugriffszahlen erreicht werden und dabei sehr gute Anwortzeiten notwendig sind.

Ich gehe also davon aus, dass wir serverseitig einen Cluster aufbauen werden und vermutlich auch einen Datenbank-Cluster (was relativ gut skalieren müsste, da zu 99% Lesezugriffe erfolgen werden). Die Frage ist nun, ob wir für die Cluster-Lösung (oder aus anderen Gründen) auf einen "echten" ApplicationServer setzen sollten/müssen oder ob für die Anforderungen auch Tomcat ausreicht.
Tomcat ist ja sogar performanter als alle echten AppServer. Was mich stutzig macht ist, dass es z.B. hier (http://www.javaworld.com/javaworld/jw-12-2007/jw-12-appservers.html?page=1) heißt, dass Tomcat nur bedingt clusterfähig ist. Dabei ist mir bisher aber noch nicht klar geworden, wo denn nun die Grenzen liegen.

Für ein bisschen Untersützung wäre ich daher sehr dankbar.

Gruß,
Ole


----------



## ps (21. Okt 2008)

Nun.. das Tomcat performanter ist als ein "echter" Appserver bezweifle ich bei den neueren Generationen. Glassfish soll sogar einiges performanter sein als Tomcat. Die Zeit der überladenen, monolithischen Appserver ist spätestens seit GFv3 vorbei 

Clustering ist wieder etwas komplexer - ich persönlich würde dafür auf EJB setzen. Mit einer reinen Hibernate/Spring Lösung kenne ich mich einfach zu wenig aus um dir da irgendwie weiterzuhelfen.


----------



## SnooP (21. Okt 2008)

Ich kann dir nur raten und auf einen AS zu verzichten. Alles was ich bisher mit AS gesehen hab, ist doch eher unbefriedigend  ... EJB auch in Version 3.0 ist nicht das, was man wirklich möchte als Entwickler... alles was ein AS kann, kann man mit Spring genauso gut liefern - wie z.B. JTA. Das Clustering wird mit Load-Balancern und Tomcat ebenfalls sehr performant möglich sein - hier kann ein guter AS sicher vermutlich noch mehr tun... aber der Aufwand ist ungleich höher...


----------



## ps (21. Okt 2008)

SnooP hat gesagt.:
			
		

> Ich kann dir nur raten und auf einen AS zu verzichten. Alles was ich bisher mit AS gesehen hab, ist doch eher unbefriedigend  ...
> ...
> hier kann ein guter AS sicher vermutlich noch mehr tun... aber der Aufwand ist ungleich höher...



Findest du? Ich finde den Aufwand um zB. Spring zu konfigurieren um _einiges_ höher als einen AS wie glassfish zu konfigurieren. Das liegt vor allem daran das ich bei Spring unmengen an XML Dateien habe, beim AS eine hübsche Weboberfläche zum konfigurieren ;-)


----------



## Olel (21. Okt 2008)

Erstmal danke für die Antworten so weit, aber es ging mir hier eigentlich nur um eine Diskussion Hibernate/Spring vs. EJB 3.0 (dazu kann man hier ja auch schon genug lesen :wink.

Das wir Hibernate und Spring verwenden werden ist bereits sicher. Aber niemand hält mich ja davon ab auch das in einem AS zu tun. Die Frage ist eher ob es notwendig ist. Dabei haben wir keine Angst vor der Konfiguration eines AS - ich habe schon einen WAS 5 und 6 konfiguriert, da werde ich mit JBoss und Konsorten schon fertig - mir geht es eher um die Frage, was ein AS und bieten kann was uns Tomcat nicht bietet und ob das auch anders ersetzt werden kann.
Und da ist mir halt im Moment insbesondere das Clustering ins Auge gefallen wegen des oben schon erwähnten Vergleichs (www.javaworld.com/javaworld/jw-12-2007/jw-12-appservers.html?page=1) in dem es heißt, Tomcat sei bedingt clusterfähig - was meint hier "bedingt"?

Zur Performance: Im Vergleich zu Geronimo 2.0 und JBoss 4.2 gewinnt Tomcat 6 (siehe auch der Link oben) scheinbar und ob der Tatsache, dass Tomcat eben erheblich schlanker ist, würde mich das auch nicht wundern.


----------



## SnooP (24. Okt 2008)

Tomcat6 ist ja auch erheblich schneller als der Tomcat 5.5 - der imho im Jboss4 eingebaut ist.. von daher ist es nur logisch, das er hier gewinnt  ..

das "bedingt" clusterfähig würde mich auch interessieren... - vor allem solltet ihr halt genau auf dem Punkt hin evaluieren was ihr überhaupt braucht... und dann kann man sich mit load-balancing und clustering auseinandersetzen...

ich persönlich würde so lange ich denn kann auf einen AS verzichten... - ich habe bislang noch keinen zwingenden Grund dafür gesehen - bzw. es hat mir niemand einen zeigen können.

Ich persönlich finde die xml-konfiguration von spring doch recht easy... die Konzepte hinter einem komplexen AS sind häufig schwieriger zu verstehen... vor allem hat man alles auf einmal, während du bei spring einfach komponenten hinzupacken kannst, wenn du sie brauchst...


----------

