Web (Site) Engineering (WebSE) Vorlesung 8: Application Server und Architekturen B. Schiemann, P. Reiß Lehrstuhl für Informatik 8 Universität Erlangen-Nürnberg 05. 12. 2006 1 / 33 Übersicht Server-Architekturen Application Server J2EE Framework Zope JBOSS Glassfish 2 / 33 Klassische 1:n-Architektur I Mehrere Male in der Vorlesung angesprochen I 1 Server bedient n Clients I Z.B. Klassischer Webserver I Designattribute/Requirements aus letzter Vorlesung I Bei hoher Serverlast: Flaschenhals I Fazit: Dynamisierung hier nur auf Clientseite 3 / 33 Load Balancing I Erste Technik, um mit hoher Serverlast zurecht zu kommen I „1:n-Architektur“ I Hinter dem einen Server verbergen sich viele I Meistens namensbasiert, da Eindeutigkeit der IP-Adressen 3 Möglichkeiten: I 1. DNS (Round-Robin vs. Cached DNS) 2. Hardwarebasiertes 1-IP-Adresse:n-Server 3. Proxy-Lösungen (Hardware vs. Software) 4 / 33 3-Tier-Architektur 1. Interaction Tier Darstellung der Inhalte, Benutzerinteraktion 2. Application Tier Geschäftslogik 3. Data Tier Datenhaltung, z.B. RDBMS 5 / 33 Multitier Architektur Abbildung: Multitiered Enterprise Applications[Lie04] 6 / 33 Multitier Architektur II I Aktuell als 3-Tier-Architektur verbreitet I „Normale“ dynamische Webseiten, z.B. PHPBB2 haben 4 Schichten Beispiel Tier-Zuordnung: I 1. 2. 3. 4. MySQL-Datenbank → Backend-Tier PHPBB2-Funktionen → Business-Logic-Tier PHPBB2-Templates → Web-Tier Webbrowser → Client-Tier 7 / 33 Multitier Architektur III Abbildung: Tier Separation[Lie04] 8 / 33 Peer-Architektur I Prinzip Peer: 1. Netz- und Peers finden/erkunden 2. Anfragen entgegennehmen/beantworten 3. Anfragen stellen u. Antworten verarbeiten I I Bekannt von Kazaa, Skype, . . . Unterarten nach [FK04]: 1. 2. 3. 4. Zentral-koordiniert oder Semi-P2P Hierarchische P2P-Systeme Dezentralisierte oder reine P2P-Systeme Mischformen 9 / 33 Peer-Architektur II 10 / 33 BitTorrent I Moderne Anwendung I BitTorrent = ¬ Architektur!!! I BitTorrent-Tracker halb Server halb Peer [Bit05] I Damit Repräsentant der Mischformen aus etablierten Architekturen I Nutzt Vorteile der bestehenden Lösungen (mime-type, peer, . . . ) 11 / 33 Fokus auf Application Server I Webserver sind ausreichend gut implementiert → Grundlage I Andere Server ebenfalls vorhanden (Mail, FTP, ...) → modulare Einbindung I Tier-Architektur: Application Server → Business Logik I Skalierbarkeit von der Applikation trennen → Performanz „on demand“ I Kapselung nach „oben“ und nach „unten“ → „Schlanker“ Code !!! 12 / 33 J2EE Framework Übersicht u.a. [SJ06] 13 / 33 J2EE 5 Framework – Was ist drin? [Sun06] I Beispiele und Dokumentation I J2SE SDK 5.0 Java System Application Server Platform (Sun): I I I I I I I J2EE APIs (5.0): u.a. EJB 3.0 (Pers.API), JSF 1.2, JAX-WS 2.0 . . . Java System Application Server (mit command line tool) Java Architecture for XML Binding (JAXB) 2.0 JSP Standard Tag Library 1.2 Streaming API for XML (StAX) 1.0 Weitere: JavaServer Pages (JSP) 2.1, Servlet 2.5, WebServices Metadata 2.0 14 / 33 J2EE Application Model 15 / 33 Application Server Marktanteile 2004 [BZ 04] JBoss 34, 8% ⇑ IBM WebSphere 33, 9% ⇓ Bea Web Logic 28, 7% ⇓ Oracle 8i − 10g 22, 0% ⇓ SUN Java System 13, 8% = Andere grosse ca. 10% ⇓ Restliche ca. 25% Apache Tomcat basiert ⇑ Abbildung: Marktanteil im November 2004 (bei 75%/25% Java/.NET) 16 / 33 Zope [Zop] I Web application server I Open Source I Implementiert in Python I Linux, Windows, Mac OS X, Solaris, BSD, . . . I TTW (Through the Web) Entwicklungsmodell Große Nutzer-Gemeinde I I I I I I Hervorragende Dokumentation Foren Wikis Tutorials (eingebaut) ... 17 / 33 Zope II Alle für Web-Application nötigen Bestandteile integriert. I Transaktionale Objekt-Datenbank I I I Eingebaute Server: I I I I I Intern Externe relationale (z.B. MySQL) FTP WebDAV XML-RPC HTTP Aber auch: Apache oder andere Web-Server möglich 18 / 33 Zope III I Zope Management Interface (ZMI): Anlegen, Bearbeiten und Verwalten der Applikation (TTW) I Unterstützung für Autorenteams: History, Undo, Versionierung I Granulare Sicherheitseinstellungen: Authentifizierung, Rechtevergabe I Erweiterbar (Python) Große Nutzergemeinde −→ Bibliotheken 19 / 33 Zope IV Architektur 20 / 33 Zope V Architektur I ZServer: Interner Server (HTTP, FTP, WebDAV, XML-RPC), ersetzbar I Zope Core: Ansteuerung des Management Interfaces und der Objektdatenbank, Koordination I Object Database: Interne Datenbank, ersetzbar durch z.B. DB2, Oracle, PostgreSQL, Sybase, MySQL, MS SQL Server Auch: Ressourcen aus Dateisystem I ZClasses: Selbstdefinierte Zope-Objekte 21 / 33 Zope VI How it works I Keine Quelldateien/-Verzeichnisse, sondern I Zope-Objekte in Datenbank Generierung der Daten on the fly I I I aus Zope-Objekten in HTML, XML, . . . 22 / 33 Zope VII Objekte I Content: Verzeichnisse, Dateien, Dokumente, Bilder, . . . I Präsentation: Kontrolle des Aussehens durch Templates I I I DTML (Document Template Markup Language) ZPT (Zope Page Templates) Logik: Festlegung des „Verhaltens“ (Eventhandling, ändern, prüfen auf Bedingungen, Loops, DB-Abfragen, . . . ) I I DTML Python, (Perl) 23 / 33 Zope VIII DTML I (DTML Documents vs. DTML Methods) I Klassischer Ansatz I Mix aus HTML und DTML-Erweiterung I Keine klare Trennung zwischen Präsentation und Logik I Beispiel: <h1><dtml-var Test-Variable></h1> 24 / 33 Zope IX ZPT I Moderner Ansatz I Klare Trennung zwischen Präsentation und Logik I XML-Format, TAL-Namespace („Template Attribute Language“) I Beispiel: ... <head> <title < / head> ... t a l : c o n t e n t =" template / t i t l e "> T i t e l < / t i t l e > 25 / 33 Zope X Logik-Objekte I Skript-Objekte I I I I Python-Code Berechnungen, Loops, . . . ermöglichen Dynamik SQL-Methoden 26 / 33 Zope XI Zope ist geeignet für I Rapid Development „Vorzeigbares“ in Minuten I Hochkustomisierte Content-/Document-Management-Lösungen Aber auch größere Umfänge, z.B.: I I I NATO SGI 27 / 33 JBOSS Open Source Application Server I JBOSS ist eine Firma (RedHat) I „Typisches“ Open Source Geschäftsmodell: Produkt frei erhältlich, aber Service & Support wird verkauft I Ärger wegen Markenrecht für Konkurrenten [jvi05] I Kooperation mit Microsoft I ABER Implementierung JBOSS-IDEs auf Eclipse und NetBeans Basis 28 / 33 JBOSS Open Source Application Server II I JBOSS IDE 1.5 & JBOSS 4.0.5 I J2EE 1.4 I Direktes debuggen auf dem Server I Mehrere Versionen des Servers I Einfach entpacken und starten I Default Konfiguration mit JMX Konsole, HSQLDB, . . . I Einstellungen für den Produktiv-Betrieb notwendig 29 / 33 JBOSS Vorteile nach [Wu03] I Vollständige J2EE 1.4 Implementierung I „Hot Deploy“, deploy und undeploy im laufenden Server I Große Anzahl aktiver Entwickler I JMX Architektur mit kleinem Memory-Footprint I Konfigurierbarer Container (Tomcat inkl.) I Performance: Bis zu 1250 Benutzer bei 30 Anfragen/sek. (1.2 GHz P4, 256 MB RAM, JBOSS AS 3) 30 / 33 Glassfish Open Source Application Server [Com05] I JavaTM EE 5 application server (V2 aktuell entwickelt) I Open Source, aber Sun und Oracle involviert I V1 wird innerhalb Sun JavaTM System Application Server PE 9.0 ausgeliefert I V2 beinhaltet u.a.: JavaTM Authentication Service Provider Interface for Containers, JavaTM Business Integration (JBI) plus Reviews von JSF 1.2, JSP, Servlet, JAX-WS 2.0, JSR 109 (EWebSevices) und EJB3 I → neueste Java Technologien 31 / 33 Zusammenfassung Server-Architekturen Application Server J2EE Framework Zope JBOSS Glassfish 32 / 33 Vielen Dank I Für Ihre Aufmerksamkeit! I Fragen? 33 / 33 Inc BitTorrent. BitToRent Protocol, 2005. BZ Media LLC. Fourth Annual Java Use and Awareness Study. http: //www.jboss.com/pdf/bzresearch_study.pdf, 2004. GlassFish Community. GlassFish Community. https://glassfish.dev.java.net, 2005. Stefan Schlott und Jrgen Nagler-Ihlein Frank Kargl. P2P Seminar, 2004. jd von iX. Ärger um Jboss’ Geschäftsmethoden [Update]. http: //www.heise.de/newsticker/meldung/64762, 2005. 33 / 33 Erich Liebmann. Extending enterprise applications with valorized edge servers, 2004. Sun Microsystems, Inc. and JCP. JSR-000244 JavaTM Platform, Enterprise Edition 5 Specification. http://javashoplm.sun.com/ECom/docs/ Welcome.jsp?StoreId=22&PartDetailId= javaee-5.0-fr-eval-oth-JSpec&SiteId= JSC&TransactionId=noreg, 2006. Sun Microsystems, Inc. Java EE 5 SDK and Sun Java System Application Server Platform Edition 9: A Feature Summary. http://developers.sun.com/prodtech/ appserver/reference/techart/app_svr_9.html, 2006. Zhenyu Wu. 33 / 33 Experimentelle Leistungsanalyse und -verbesserung eines Applikations-Server-Caches (Studienarbeit). http://www.ipd.uni-karlsruhe.de/~pfeifer/ other/studienarbeit_wu.doc, 2003. Zope. Zope. http://www.zope.org. 33 / 33