2. Agenda
1. Anforderungen an moderne Web-Anwendungen
2. Das Play!-Framework
3. Beispiel Preisberechnungen
4. Zusammenfassung
2 msg systems ag, 20.09.2012
3. Anforderungen an moderne Web-Anwendungen
Für moderne Web-Anwendungen sind die Nutzungsszenarien von
größerer Bedeutung als eine umfassende Dialogsteuerung
Betrieb
• IaaS / PaaS
• schwankende
Nutzung
Akka
Skalierbarkeit Integration
• fluktuierende Play • Apps
Nutzung • Mash-Ups
• Wechselnder
Bedarf
3 Autor/Datum über „Einfügen“ -> „Kopf-/Fußzeile“ anpassen msg systems ag, tt.mm.jj
4. Der Typesafe-Stack
Play
Fokus
Akka
Scala
Java Virtual Machine
4 msg systems ag, 20.09.2012
5. Das Play!-Framework
• Basiert auf
• Implementiert in
• Bietet
Enge Integration mit dem Aktoren-Framework Akka
JPA Persistenz
Schlanke, gekapselte Laufzeit-Umgebung
• Ermöglicht
Horizontale, elastische Skalierbarkeit
5 msg systems ag, 20.09.2012
6. Das Play!-Framework
• Convention over Configuration
• play new
• play start
• Einheitliches Projekt-Layout
• Kurze Roundtrip-Zyklen (automatische
Übernahme von Code-Änderungen)
6 msg systems ag, 20.09.2012
7. Ein Play!-Projekt
Quelltext und
Test-Klassen
Konfiguration für
die Applikation
Konfiguration für
den Build
öffentliche
Ressourcen
7 msg systems ag, 20.09.2012
8. Ein Beispiel - Preisberechnungen
Szenario
Use-Cases
Vorgehen
Ergebnis
8 msg systems ag, 20.09.2012
9. Preisberechnung – das Szenario
Szenario
• Pflege von Produkten, Komponenten und deren
Preise
• Produktpreise hängen maßgeblich von
funktional Komponentenpreisen ab
• Neuer Preis für eine Komponente
Preisaktualisierung für alle betroffenen Produkte
• Regelmäßige, schwankende Abfrage von
Produktpreisen
nicht-funktional • Unregelmäßige Aktualisierung von
Komponentenpreisen im Batch
9 msg systems ag, 20.09.2012
10. Preisberechnung – ein paar Anwendungsfälle
• Abfrage von Produktpreisen
• Abfrage von aktuellen Komponentenpreisen
• Aktualisieren eines Komponentenpreises
• …
10 msg systems ag, 20.09.2012
11. Preisberechnung – das Vorgehen
• Vorstellung der Gesamt-Architektur
• Definition der API
• Durchführung der Berechnung
11 msg systems ag, 20.09.2012
12. Preisberechnung – das Vorgehen
• Vorstellung der Gesamt-Architektur
Nur URL Design HTML, JavaScript, etc.
keine GUI
Controller
Fokus
Aktoren / Akka
ausgespart JPA
Persistenz
12 msg systems ag, 20.09.2012
13. Preisberechnung – das Vorgehen
• Definition der API – das Routing
13 msg systems ag, 20.09.2012
14. Preisberechnung – das Vorgehen
• Definition der API – das Routing
14 msg systems ag, 20.09.2012
15. Preisberechnung – das Vorgehen
• Definition der API – das Routing
Die URL inklusive dynamischer
Parameter
/product/:name/price
/product/Rasenmaeher/price
15 msg systems ag, 20.09.2012
16. Preisberechnung – das Vorgehen
die zugeordnete Handler-
• Definition der API – der Handler Methode
16 msg systems ag, 20.09.2012
17. Preisberechnung – das Vorgehen
die zugeordnete Handler-
• Definition der API – der Handler Methode
17 msg systems ag, 20.09.2012
18. Skalierbarkeit mit Play
• keine umfangreichen Sessions dafür Caching
• Wiederverwendung instanziierter Klassen für beliebige Aufrufe
keine lokalen Variablen oder ähnliches
Shared Nothing Ansatz
Beliebige Anzahl von Play-Instanzen können nebeneinander betrieben
werden
18 msg systems ag, 20.09.2012
19. Preisberechnung – das Vorgehen
• Vorstellung der Gesamt-Architektur
Nur URL Design HTML, JavaScript, etc.
OK
Controller
Fokus
Aktoren / Akka
ausgespart JPA
Persistenz
19 msg systems ag, 20.09.2012
20. Preisberechnung – das Vorgehen
• Durchführung der Berechnung
• Verwendung von Aktoren
Aktor repräsentiert eine Produkt-/Komponenteninstanz
Aktor wird über Nachrichten angesprochen (vgl. Messaging/JMS)
Aktor arbeitet gleichzeitig nur eine Nachricht ab
• Es kann pro Objekt-Instanz eine Aktor-Instanz geben mit einer
eigenen Message-Queue
• Skalierbarkeit wird über Intra-JVM
und Inter-JVM Verteilung erreicht
20 msg systems ag, 20.09.2012
21. Preisberechnung – das Vorgehen
• Durchführung der Berechnung
Component Asynchron!
Controller
Recalculate
Component
ProductActor
ProductActor
Actor (Instance)
ProductActor
Product
Update
Actor (Instance)
Asynchron!
Persistenz
21 msg systems ag, 20.09.2012
22. Skalierbarkeit mit Aktoren
• Verwendung von Akka in einer JVM
• Verteilung über mehrere JVM
• Verwendung von Messaging (ZeroMQ)
• Verwendung von Akka Cluster
22 msg systems ag, 20.09.2012
23. Preisberechnung – Gesamtübersicht
Lesender Teil Schreibender Teil
Product Component
Asynchron!
ComponentActor
Asynchron!
Synchron!
ProductActor
Persistenz
23 msg systems ag, 20.09.2012
24. Preisberechnung – Deployment
Ist die Domäne isoliert
fängt man klein an …
Persistenz
24 msg systems ag, 20.09.2012
25. Preisberechnung – Deployment
Ist die Domäne isoliert
… und wächst
Elastizität durch Hinzufügen
von Play-Instanzen.
Jede weitere Instanz über-
nimmt Last.
Einsatz eines zentralen Caches Persistenz
möglich.
25 msg systems ag, 20.09.2012
26. Preisberechnung – Deployment
Gibt es Restriktionen
… werden Teile zusammengefasst
Bei sehr vielen Aktoren können
diese zentralisiert werden.
Play bedient die Clients und
interagiert mit den (verteilten)
Aktoren. Persistenz
26 msg systems ag, 20.09.2012
27. Zusammenfassung
• Das Play!-Framework bietet eine solide Basis für moderne Web-
Anwendungen
„Shared Nothing“ Ansatz
Fokus auf API-Design anstelle von GUI
Integration mit Akka
• Sehr kompakte und elegante Möglichkeit, Anwendungen auf
verschiedene Cloud-Szenarien zu deployen
Projekt-Beispiel und Folien:
https://github.com/axelirriger/Informatik2012
27 msg systems ag, 20.09.2012
28. Vielen Dank für Ihre Aufmerksamkeit
Axel Irriger
GB Telecommunications & Media
Lead IT Consultant
Telefon: +49 6196 7750-5418
axel.irriger@msg-systems.com
www.msg-systems.com
www.msg-systems.com
28 msg systems ag, 20.09.2012