Upload
axel-irriger
View
543
Download
0
Embed Size (px)
DESCRIPTION
Vortrag auf der Informatik 2012 zum Workshop "Architekturen für Services & Cloud Computing" des SOA Innovation Lab E.V.
Citation preview
1
Elastische Skalierbarkeit für Web-Anwendungen
Das Play!-Framework
msg systems ag, 20.09.2012
2 msg systems ag, 20.09.2012
Agenda
1. Anforderungen an moderne Web-Anwendungen
2. Das Play!-Framework
3. Beispiel Preisberechnungen
4. Zusammenfassung
Autor/Datum über „Einfügen“ -> „Kopf-/Fußzeile“ anpassen3 msg systems ag, tt.mm.jj
Für moderne Web-Anwendungen sind die Nutzungsszenarien von größerer Bedeutung als eine umfassende Dialogsteuerung
Anforderungen an moderne Web-Anwendungen
Akka
Play
Betrieb• IaaS / PaaS• schwankende
Nutzung
Integration• Apps• Mash-Ups
Skalierbarkeit• fluktuierende
Nutzung• Wechselnder
Bedarf
4 msg systems ag, 20.09.2012
Bild durch Klicken auf Symbol hinzufügen
Der Typesafe-Stack
Play
Akka
Scala
Java Virtual Machine
Fokus
5 msg systems ag, 20.09.2012
• Basiert auf
• Implementiert in
• Bietet- Enge Integration mit dem Aktoren-Framework Akka- JPA Persistenz- Schlanke, gekapselte Laufzeit-Umgebung
• Ermöglicht- Horizontale, elastische Skalierbarkeit
Das Play!-Framework
6 msg systems ag, 20.09.2012
Das Play!-Framework
• Convention over Configuration
• play new• play start
• Einheitliches Projekt-Layout
• Kurze Roundtrip-Zyklen (automatische Übernahme von Code-Änderungen)
7 msg systems ag, 20.09.2012
Ein Play!-Projekt
Quelltext und Test-Klassen
Konfiguration für die Applikation
Konfiguration für den Build
öffentliche Ressourcen
8 msg systems ag, 20.09.2012
Ein Beispiel - Preisberechnungen
Szenario
Use-Cases
Vorgehen
Ergebnis
9
nicht-funktional
funktional
msg systems ag, 20.09.2012
• Pflege von Produkten, Komponenten und deren Preise
• Produktpreise hängen maßgeblich von Komponentenpreisen ab
• Neuer Preis für eine Komponente Preisaktualisierung für alle betroffenen Produkte
Preisberechnung – das Szenario
• Regelmäßige, schwankende Abfrage von Produktpreisen
• Unregelmäßige Aktualisierung von Komponentenpreisen im Batch
Szenario
10 msg systems ag, 20.09.2012
• Abfrage von Produktpreisen
• Abfrage von aktuellen Komponentenpreisen
• Aktualisieren eines Komponentenpreises
• …
Preisberechnung – ein paar Anwendungsfälle
11 msg systems ag, 20.09.2012
• Vorstellung der Gesamt-Architektur
• Definition der API
• Durchführung der Berechnung
Preisberechnung – das Vorgehen
12 msg systems ag, 20.09.2012
• Vorstellung der Gesamt-Architektur
Preisberechnung – das Vorgehen
Persistenz
Controller
JPA
Aktoren / Akka
HTML, JavaScript, etc.
ausgespart
Fokus
Nur URL Designkeine GUI
13 msg systems ag, 20.09.2012
• Definition der API – das Routing
Preisberechnung – das Vorgehen
14 msg systems ag, 20.09.2012
• Definition der API – das Routing
Preisberechnung – das Vorgehen
15 msg systems ag, 20.09.2012
• Definition der API – das Routing
Preisberechnung – das Vorgehen
Die URL inklusive dynamischer Parameter
/product/:name/price
/product/Rasenmaeher/price
16 msg systems ag, 20.09.2012
• Definition der API – der Handler
Preisberechnung – das Vorgehen
die zugeordnete Handler-Methode
17 msg systems ag, 20.09.2012
• Definition der API – der Handler
Preisberechnung – das Vorgehen
die zugeordnete Handler-Methode
18 msg systems ag, 20.09.2012
• 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
Skalierbarkeit mit Play
19 msg systems ag, 20.09.2012
• Vorstellung der Gesamt-Architektur
Preisberechnung – das Vorgehen
Persistenz
Controller
JPA
Aktoren / Akka
HTML, JavaScript, etc.Nur URL Design
ausgespart
Fokus
OK
20 msg systems ag, 20.09.2012
• 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
Preisberechnung – das Vorgehen
21 msg systems ag, 20.09.2012
• Durchführung der Berechnung
Preisberechnung – das Vorgehen
ComponentActor (Instance)
ProductActor
Recalculate
ProductActorProductActorProductActor (Instance)
Persistenz
ComponentController
Update
Asynchron!
Asynchron!
22 msg systems ag, 20.09.2012
• Verwendung von Akka in einer JVM• Verteilung über mehrere JVM
• Verwendung von Messaging (ZeroMQ)
• Verwendung von Akka Cluster
Skalierbarkeit mit Aktoren
23
Schreibender TeilLesender Teil
msg systems ag, 20.09.2012
Preisberechnung – Gesamtübersicht
Persistenz
ComponentActor
ProductActor
ComponentProduct
Synchron!
Asynchron!
Asynchron!
24 msg systems ag, 20.09.2012
Preisberechnung – Deployment
Persistenz
fängt man klein an …
Ist die Domäne isoliert
25 msg systems ag, 20.09.2012
Preisberechnung – Deployment
Persistenz
… und wächst
Ist die Domäne isoliert
Elastizität durch Hinzufügen von Play-Instanzen.Jede weitere Instanz über-nimmt Last. Einsatz eines zentralen Caches möglich.
26 msg systems ag, 20.09.2012
Preisberechnung – Deployment
Persistenz
… werden Teile zusammengefasst
Gibt es Restriktionen
Bei sehr vielen Aktoren können diese zentralisiert werden. Play bedient die Clients und interagiert mit den (verteilten) Aktoren.
27 msg systems ag, 20.09.2012
• 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
Zusammenfassung
Projekt-Beispiel und Folien:https://github.com/axelirriger/Informatik2012
28
www.msg-systems.com
Vielen Dank für Ihre Aufmerksamkeit
msg systems ag, 20.09.2012
Axel Irriger
GB Telecommunications & Media Lead IT Consultant
Telefon: +49 6196 [email protected]
www.msg-systems.com