leistungssport - oio · 1 orientation in objects gmbh weinheimer str. 68 68309 mannheim version:...

30
Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] Version: 0.3 Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte 2 © 2009 Orientation in Objects GmbH Performance-Aspekte großer JSF-Projekte Die Sprecher - Oliver Wolff & Christian Dedek

Upload: others

Post on 27-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

1

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]: 0.3

LeistungssportPerformance-Aspekte großer JavaServer-Faces-Projekte

2

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Die Sprecher - Oliver Wolff & Christian Dedek

Page 2: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

2

3

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

) Competence Center)) Object Rangers )

Java, XML und Open Source seit 1998

• Schulungen, Coaching, Weiterbildungsberatung, Train & Solve-Programme• Methoden, Standards und Tools für die Entwicklung von offenen, unternehmens- weiten Systemen

• Unterstützung laufender Java Projekte

• Perfect Match• Rent-a-team• Coaching on the project• Inhouse Outsourcing

• Schlüsselfertige Realisierung von Java Software

• Individualsoftware• Pilot- und Migrationsprojekte• Sanierung von Software• Software Wartung

) Software Factory )

4

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Die Themen

Beyond JSF

State SavingAjax

Wundertüte

Page 3: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

3

5

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Was ist Groß?

100 Views100 Views

500 Benutzer500 Benutzer100 MB/h Durchsatz100 MB/h Durchsatz

100 Entwickler100 EntwicklerViel zu teuerViel zu teuer

6

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Performance und Skalierung

Wicket ist 2-4 malschneller als JSF

Wicket ist 2-4 malschneller als JSF

Blog Peter Thomas

Struts ist 4-9 malschneller als JSF

Struts ist 4-9 malschneller als JSF

Entwickler.de

JSF ist nur etwasfür das Intranet

JSF ist nur etwasfür das Intranet

Man darf das Backend nicht vergessen

Man darf das Backend nicht vergessen

Page 4: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

4

7

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Entwicklungs- vs. Laufzeitskalierung

• Komponentenmodel– Beschleunigt die Entwicklung– Laufzeit– Kein Zauberstab

• Lebenszyklus– Laufzeit– Zeit zum Verständnis: immediate?– Definiert Ablauf

8

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Übersicht

State Saving

Page 5: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

5

9

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Übersicht

• Zustand einer Anwendung

• Beinhaltet– Infrastruktur: Komponenten, Views, ...– Daten / Beans– !! Serialisierung von Beans

• Beobachtete State-Größen– 100 KB– 250 KB– 2 MB

10

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Server vs. Client

Server

Anwendung

Client

Zustand

Zustand

Server

Anwendung

Client

RealmRealm

RealmRealmZustand

Page 6: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

6

11

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Server vs. Client

• Server Side:– Context Incomplete: Back Button & Reload,..– Ist die Regel– Bessere Antwortzeiten– Skaliert schlechter

• Client Side:– Context Complete– Besser für Clustering– Kein Speicherverbrauch zwischen Requests– Braucht mehr Bandbreite– Zusätzlichen Aufwand für Sicherheit

12

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Server 3

jsf-state

Server 2

jsf-state

Server 1

jsf-state

State bei Clustering von HTTP Anfragen

Loadbalancer DB

AJP

AJP

AJP

HTTP

jsf-statejsf-state

jsf-statejsf-state

jsf-state

Page 7: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

7

13

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Optimierung I

• Session möglichst klein halten

• Verbesserung durch alternativen SerialisierungsProvider– Beispiel JBossSerializationProvider– Bei vielen parallelen Benutzern: bis 30% weniger CPU-Last

• Baum (De-) Serialisierung sehr teuer (CPU)

• „Je Ajax, desto Server“– Zumindest bei JSF-Ajax

14

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Optimierung II

• Serialiserung, auch serverseitg– com.sun.faces.serializeServerState– org.apache.myfaces.SERIALIZE_STATE_IN_SESSION

• Komprimierung– com.sun.faces.compressViewState– org.apache.myfaces.COMPRESS_STATE_IN_SESSION

• Abwägen: Speicher vs. CPU

Page 8: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

8

15

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Session Size bei serverseitiger Skalierung

• Speicher begrenzt Zahl der möglichen Sitzungen pro Knoten• GC-Overhead steigt mit Größe des Heap

• 32-Bit– bis zu 1,5 GB Heapsize problemlos nutzbar– oft bessere Antwortzeiten pro Request– geringerer GC-Overhead

• 64-Bit– Verfügbarkeit und Reife der Kombination J2EE-Server/JVM/OS ?– GC-Overhead– teilweise schlechtere Antwortzeiten(Prozessor-Taktraten)– Kosten ?

16

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Skalierungsproblem Session Replication

TCP Loadbalancer

ReplicationValve

ReplicationManager

Context /app

Name Wert

umsatz 5000

datum 28.9.2003

positionen

10, Tee

2, Kaffee

50, Lolly

Session

ReplicationValve

ReplicationManager

Context /app

Name Wert

umsatz 5000

datum 28.9.2003

positionen

10, Tee

2, Kaffee

50, Lolly

Session

ReplicationValve

ReplicationManager

Context /app

Name Wert

umsatz 5000

datum 28.9.2003

positionen

10, Tee

2, Kaffee

50, Lolly

Session

Multi-cast

Multi-cast

Page 9: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

9

17

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Lösungssszenario: Partitionierung von Zuständen

Partition „Share 1“Partition „Share 1“

Knoten A

Sub-Partition „Share 2“Sub-Partition „Share 2“Sub-Partition „Share 1“Sub-Partition „Share 1“

Knoten A Knoten B

Knoten A Knoten B Knoten X Knoten Y

18

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Best Practices - Umgang mit Managed Beans

• Eine Request-Scope-Bean / View

• Eine SessionBean pro Anwendung / Modul

• Definierter Dialog-Mechanismus– Shale, Orchestra, Seam, ...

• PageScope über Erweiterung– JSFTemplating– PrimeFaces Optimus: ViewScope– JSF 2.0

Page 10: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

10

19

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Anforderungen an die Zukunft I

• Überdenken Konzept der Zustandsbehaftung– REST ist in aller Munde– RestFaces / PrettyFaces– Mainstream WebBeans / Seam

• Zielrichtung für JSF-Anwendungen?

• Scope– PageContext: JSF 2.0– Dialog

20

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Anforderungen an die Zukunft II

• Tokenize a´la ADF– Zumindest „Context Complete“ für Server Side

• Implementierungen– (De-) Serialisierung– Speicherverbrauch: Bravo MyFaces– Fokus auf Client

• Delta-State-Saving

Page 11: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

11

21

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Übersicht

Ajax

22

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Spannungsfelder Ajax - Übersicht

• Ajax verstehen– Eye Candy vs. Usability

• Nicht alles Mögliche ist sinnvoll

• Sinnvolles muß möglich sein

• Einheitliche Verwendung

• Kapselung reicht nicht aus– Verständnis muß gegeben sein

Page 12: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

12

23

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Spannungsfelder Ajax - Übersicht II

• Unterschiedliche Ansätze– Selten kompatibel– Möglichkeit der Vereinheitlichung

• JSF 1.2: invokeOnComponenet() & DynaFaces

• RichFaces & IceFaces?

• Kapselung gegenüber Handarbeit

• Woodstock & DojoInitializer?

24

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Spannungsfelder Ajax - Aus der Praxis

RichFacesrockt!

RichFacesrockt!

Echte Männernehmen Dojo

Echte Männernehmen Dojo

Page 13: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

13

25

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Ajax Strategien - Dick & Dünn

ProgrammierModell?

ProgrammierModell?

? ?

Dojo

JSF-Stub

FatClient

Ajax-Servlet

DatenDaten

Ajax?DHTML?Ajax?

DHTML?

Ajax-ServletAjax-Servlet

Ajax-Servlet

Ajax-Komponenten

Anwendung

Client

RealmRealm

RealmRealm

Komponente

DatenDaten, HtmlJavaScript

26

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Ajax Strategien - Woodstock - Dojo

Page 14: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

14

27

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Spannungsfelder Ajax - Auflösung

• Es gibt keine perfekte Bibliothek

• Am Framework vorbei skaliert schlecht: Dojo, jMaki

• Mehrere gleichzeitige Ansätze sind tödlich

• Wenn FatClient, dann richtig: Woodstock

28

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Anti-Patterns - Partial Form Processing

...<h:inputText value="#{messageBean.message}" id="nameInput">

<a4j:support event="onkeyup"/><f:validateLength minimum="3" />

</h:inputText>

...

<a4j:support event="onblur"/>

Page 15: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

15

29

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Best Practices - Partial Page Rendering

• Ziel: Desktopanwendung– Fenster nur verändert

• Ajax: Partial Page Rendering

• Entwickler müssen in passenden Strukturen denken– Modularisierung der Seite in beide Richtungen

• Beispiel: RichFaces reRender-Attribut– Nicht vergessen: Gesendete Daten– Hilft weniger bei Client Side State Saving

30

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Ajax Optimierung, Beispiel RichFaces

• Wichtige Attribute:– reRender, ajaxRendered– a4j:region, renderRegionOnly, limitToList– ajaxSingle, process– eventQueue, requestDelay, ignoreDupResponses

• Auswahl des richtigen Filters– Tidy: Korrigiert sehr aufwändig– Neko: Korrigiert weniger aufwändig, deutlich schneller– None: Macht gar nichts, schnellste Variante– forceparser

Page 16: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

16

31

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Anforderungen an die Zukunft

• Kompletter AjaxStack als Teil der Implementierung JSF 2.0

• Zusammenarbeit Komponentenentwickler– Austauschbarkeit– ziemlich naiv

• Schnelle Integration neuer Technologien

32

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Übersicht

Wundertüte

Page 17: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

17

33

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Der richtige ViewHandler

ShaleICEFaces

JSF Core

Facelets JSFTemplatingJSP

Laufzeitgewinn: 10-30%

X

34

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Context Parameter - Response Buffer

• Produktive Anwendung, oberer Lastbereich• Responsezeiten, Angaben in Prozent

facelets.BUFFER_SIZE=50k responseBufferSize=50k

10092,8

64,4

0

20

40

60

80

100

120

Page 18: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

18

35

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Passende Designs - Datentabelle - Übersicht

• Datentabelle

• Häufige Anforderung: 100 Zeilen+

• Problem: Vielfache EL-Evaluierung, einige Sekunden Ladezeit

Lösung: „Richtige“ Datentabelle

36

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Passende Designs - Datentabelle - Woodstock

Page 19: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

19

37

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Komponenten vs. Anwendungsframework

• JSF ist ein UI-Framework für Webanwendungen“

• JSF Design:– Fokus auf Komponenten-APIs– Lebenszyklus nicht perfekt– Aber: Alle Framework-Aspekte leicht erweiterbar

Grundlage für Anwendungs-Frameworks

JSF = Komponenten-Framework

Ziel: Anwendungsframework für konkretes Projekt– Architektur, kein Wildwuchs– Schulung der Entwickler

38

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Übersicht

Beyond JSF

Page 20: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

20

39

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Schlüsselqualifikationen

• Qualifikation im JSF-Dschungel

• Reproduzierbarkeit im nichtfunktionalen Systemchaos– Teststrategien– deduktive Systematik

• Kommunikation und Feedback– Einsatz von Issuetrackern– Produktion Management-Summaries und Reports

40

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Probleme mit 3rd Party

• Apache Datenbankpool hat nicht skaliert– fixed mit dbcp-1.2.2, pool-1.3,collections-3.2 Mitte 2006

• Concurrency issue (race condition) in unserem ApplicationFramework– z.B. Hibernate HHH-1486 fixed 3.2.0 Feb. 2006– Trat nur im stochastischen Lastverhalten auf– nicht deduktiv reproduzierbar

Page 21: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

21

41

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Stabilitätsproblem Threadlocal

• Bei Analyse des Benchmarks tritt ein moderates memory leak auf.– JDK 1.4 war dagegen fehlertolerant, der Fehler trat erst mit JDK 1.5

auf– Ursache war die falsche Verwendung des „thread local“ API– Der Bug wurde mehrfach wieder geöffnet, weil die API an mehreren

Stellen aufgerufen wurde

• Vergleiche– http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ThreadLocal.html– http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ThreadLocal.html

• Der kleine Unterschied:– public void remove()

• Removes the value for this ThreadLocal

42

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Lost Cleanup - Thread local bug ?

Thread-Local

XY-Scope

CollectionContainer/Framework

Container/Framework

Application

3. cleanup()

1. store()1.x set() 2.x get()

2. get()

Exceptions ?

3.x remove()

Page 22: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

22

43

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Lost Cleanup - Example

Siehe: http://jira.atlassian.com/browse/CONF-14988

44

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

JDK Concurrency Problem ? java.beans.Introspector

Introspector

Bean

Framework

getBeanInfo()Bean

Framework

getBeanInfo()Bean

Framework

getBeanInfo()Bean

Framework

getBeanInfo()Bean

Framework

getBeanInfo()

Frameworks nutzen zum Zugriff auf Beans Reflection über jdk-Utility

Page 23: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

23

45

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

java.beans.Introspector

• Sun-Implementierung:– Zugriff

BeanInfo bi = (BeanInfo)beanInfoCache.get(beanClass); if (bi == null) { bi = (new Introspector(beanClass, null,

USE_ALL_BEANINFO)).getBeanInfo(); beanInfoCache.put(beanClass, bi);

– Deklarationprivate static Map beanInfoCache =Collections.synchronizedMap(new WeakHashMap());

• effektiv führt dies zu einer Synchronisation der Methode

46

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Introspector & JSF

Page 24: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

24

47

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

java.beans.Introspector

• Einfacher Fix:– Hashmap durch ConcurrentHashmap austauschen– im Benchmarkszenario 30% mehr parallele Requests erzielt (dann

war die CPU-Grenze erreicht - keine Lockcontention)

• Aber: SUN kann wegen Seiteneffekt keinen Fix im JDKakzeptieren– eingesetzte HashMap ist eine WeakHashMap die ein Caching

ermöglicht das von GC abgeräumt werden kann– ConcurrentHashMap zeigt anderes Speicherverhalten

• unproblematisch in unserem Fall da Caching klassenweit möglich ist

• Ausblick: Douglas Leas JSR 166x Package enthält möglicheLösung, die beide Spezifikationen erfüllt

48

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Übersicht

Fazit

Page 25: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

25

49

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Persönliche Erfahrung führte zur ICW Gründung

„Es ist Samstagabend: die kleine Tochter von Peter Reuschel hatkrampfartige Hustenanfälle und bekommt kaum noch Luft. Derherbeigerufene Hausarzt kann zwar die akuten Symptome lindern,für eine genaue Diagnose braucht er aber eine Röntgenaufnahmeder Lunge. Das Bild wird in der Notfallambulanz der nächstenKlinik gemacht, doch die Eltern sollen nur einige handschriftlicheStichworte zum Befund mitbekommen. Die Eltern wollen abernicht, dass ihre Kleine nur anhand einiger schwer leserlicherNotizen weiterbehandelt wird, und bitten darum, das Röntgenbildfür den Hausarzt mitnehmen zu dürfen. Doch die Dienst habendeÄrztin antwortet nur, dass der Hausarzt das Bild bei Bedarfanfordern könne und es ihm dann in drei Wochen vorliege. Vonihren gesetzlichen Patientenrechten wissen die Eltern nochnichts.“

http://www.icw-global.com/de/de/unternehmen/gruendungsgeschichte.html

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Screenshot of LifeSensor Fitness.

Links to calendar, medical data, emergency data, documents, personal data,news and account information.

Project: persönliche Gesundheitsakte “LifeSensor®”

• Herzstück der ICW Plattform istLifeSensor, eine patientengeführteGesundheitsakte, die derDatensammlung und-bereitstellung dient.

Page 26: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

26

51

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Integration: Personal Health Record Connected

• Ziel:IntegrationdesvollständigenmedizinischenInformations-flusses mitAnspruchsver-waltung undAbrechnung ineinerpatienten-orientiertenelektronischenAkte

• Ergebnis:Integration mitvielenSystemen undBeteiligten

LifeSensor® fosters platform approach

52

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Siehe http://idn.icw-global.com/solutions/community/conferences/icw-developer-conference-may-2008/conference-proceedings.html

High system complexity

• System nutzt aktuelle Software Komponenten wie z.B:– JSF, Apache Tomcat, Axis, Apache httpd, Spring Framework

• läuft auf verschiedenen Web Browsern mit Html, CSS und Ajax• exponiert Web Services

Page 27: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

27

53

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Ergebnisse ICW Performance Lab bis August 2008

• Ende 2006 Benchmark eingeführt– Konzeption, Implementierung, Test, Übergabe

• Anzahl der parallelen Web GUI user in dieser Phase um Faktor 5erhöht

• Web GUI response time reduziert um 40%

• 2007 Test by SUN Microsystems in Langen– Anzahl der parallelen User noch einmal Faktor 3 erhöht– 6000 parallele User (Spitzenlast)

Quelle: http://www.icw-global.com/de/de/partner/benchmarks/benchmark-tests/lifesensor-with-hp.html

54

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Ergebnisse ICW Performance Lab bis August 2008

• Test mit HP in Böblingen– 10 Millionen Akten (500 Akten pro Professional) ~ 1TB– 8500 (10 000) parallele Benutzer (Spitzen)last– Oracle Database 10gR2 Patch set 10.2.0.4 64bit– Tomcat 6.0.13 Cluster mit 6 Servern– Java 6 Update 6

Page 28: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

28

55

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Best Practices

• Definition einer klaren Statemanagement Strategy– z.B. Konversationskonzept

• Verwendung gut dokumentierter Lösungspatterns– Vermeidung von Standardfehlern– z.B. Datenvisualisierung

• AJAX-Integration– keine gegenläufigen Ansätze– Orientierung auf echte Usability– z.B. RichFaces vs. Dojo

56

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Architektur

• Die JSF Architektur– hat viele „Stellschrauben“ in Bezug auf Performanzaspekte

• oft einfach durch reine Konfiguration• „saubere“ Programmierung vorausgesetzt

– Communities sorgen für Praxisnähe und -einsatz der Ideen

• Starke Architektur-Governance senkt QM-Kosten– z.B. Serializable Issues, ThreadLocal Leaks

Page 29: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

29

57

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Das letzte Wort

Leistungsgrenzen der Kombination– JSF– Integrationframework– OR-Mapper

sind am technologischen Gesamtstack aus– JVM– OS– RDBMS– Netzwerk– IO

angelehnt.

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]: 0.3

Vielen Dank für IhreAufmerksamkeit !

Page 30: Leistungssport - OIO · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 info@oio.de Leistungssport Performance-Aspekte großer JavaServer-Faces-Projekte

30

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]: 0.3

? ?

???

Fragen ?

60

© 2009 Orientation in Objects GmbHPerformance-Aspekte großer JSF-Projekte

Mehr von OIO zum Thema...

• Schulung: JavaServer Faces– http://www.oio.de/java-server-faces.htm

• Schulung: Systematisches Performance Tuning– http://www.oio.de/seminar/entscheider/performance-tuning-schulung.htm

• Beratung zur Performance Optimierung– http://www.oio.de/beratung-consulting/performance-optimierung/index.htm

• Vortrag: Love & Peace & JSF– http://www.oio.de/public/java/jsf-woodstock/JM1.09_Love_Peace_JSF.pdf

• Vortrag: JSF und AJAX– http://www.oio.de/m/konf/oop2007/OOP07_JSF-AJAX.pdf