Die Programmiersprache "Java" ist in den letzten 12 Jahren von einer anfäng-
lich belächelten Programmiersprache für Waschmaschinen und Toaster, zu ei-
ner global eingesetzten Technologie für Web -und Desktop-Systeme herange-
reift. Besonders der von den Java-Machern (Sun) entwickelte J2EE Standard
erfreut sich immer größerer Beliebtheit und wird gerade von großen, kommer-
ziellen Internetplattformen wie Amazon, Ebay uvw. eingesetzt.
Die Gründe hierfür liegen auf der Hand:
- Open-Source (kostenfrei erhältlich und keine Lizenzen notwendig)
- Viele kostenlose Frameworks und API's
- Viele Experten (Java als Mainstream )
- Codeingstandards und somit Senkung der Entwicklungskosten und
Einarbeitungszeit für neue Mitarbeiter
Neben den oben beschriebenen Vorteilen existieren mehrere kostenpflichtige
und kostenfreie Implementierungen für den JSR-00154 (Servlet-Spezifikation).
Diese ermöglichen den Einsatz von serverseitigem Java in der Welt des WWW.
Java ist zu 100% objektorientiert und stellt ebenfalls eine Möglichkeit für die
Entwicklung mit Threads (parallele Prozesse) zur Verfügung.
In der Client-Server-Architektur spielt die Verwendung von Server-Threads, hinsichtlich Sys-
tem-Ressourcen, eine zentrale Rolle. Systeme mit hohen Benutzerzahlen benö-
tigen entsprechende System-Ressourcen (Hardware), um gewünschte Antwort-
zeiten zu garantieren. Die entsprechenden Hardware-Bausteine sind sehr kost-
spielig und müssen von Spezialisten gewartet und aufgesetzt werden. Mit er-
höhter Benutzeranzahl steigen auch die Anforderungen an die Systeme. Es
müssen leistungsstärkere Hardware-Bausteine beschafft und die alten ausge-
tauscht werden.
Im Rahmen der hier vorliegenden Arbeit werden diese Anforderungen unter-
sucht und die Grenzen von Hardware-Systemen aufgezeigt. Dabei stehen die
folgenden Fragen im Mittelpunkt:
1. "Was passiert, wenn die Benutzeranzahl einer Webanwendung in kurzer
Zeit dramatisch steigt?"
2. "Welche Möglichkeiten hinsichtlich der Skalierung gibt es für Java-
Anwendungen?"
Häufig werden Web-Projekte mit niedrigem Budget entwickelt und es kann da-
bei nur selten ein komplettes Team aus erfahrenen Software-Architekten einge-
setzt werden. Daher werden nichtfunktionale Anforderungen gerade bei der
Erstentwicklung von Anwendungen oft nur unzureichend beachtet, weil schnell
Ergebnisse erzielt und Investoren überzeugt werden müssen. Steht die Finan-
zierung, werden viele Internetseiten jedoch schon nach den ersten Promotion-
Aktionen (Bannerwerbung, Plakatwerbung etc.) mit der Problematik mangelnder
Performance konfrontiert. Als Ad-hoc-Lösung werden dann häufig leistungs-
stärkere Maschinen eingesetzt. Diese erreichen jedoch ihre Leistungsgrenzen
schnell und es muss eventuell ein weiteres Hardware-Update durchgeführt
werden. Wenn eine einzelne Maschine nicht weiter aufgerüstet werden kann,
muss ein aufwendiger und kostenintensiver Hardware-Cluster aufgesetzt wer-
den. Bei diesem Verfahren gibt es unterschiedliche Varianten (Sticky-Session,
Non-Sticky-Session, Session-Replication, Load-Balancing etc.). Darüber hinaus
muss die Java-Anwendung selbst gewisse Anforderungen erfüllen (z. B. müs-
sen Session-Objekte serialisierbar sein). Neben speziellen Programmiertechni-
ken und Hardware-Loadbalancing werden die Alternativen "Anwendungscluste-
ring" und "Javagrid" beleuchtet. Dieses Verfahren ermöglicht es, beliebig viele
Systeme über eine Anwendungsschicht miteinander zu verbinden und in einem
Grid zu nutzen. Hierbei werden die unterschiedlichen JVMs der Systeme mit-
einander verbunden, in einer Software-Abstraktionsschicht gekapselt und somit
zu einer gemeinsamen Java-Virtual-Machine vereinigt. Die Vorteile dieser
Cluster-Variante sollen den zuvor vorgestellten Techniken gegenübergestellt
und hinsichtlich Kosten, Wartbarkeit und Pflege bewertet werden.
Java Clustering Inhaltsverzeichnis