Elastische Skalierbarkeit für Web-Anwendungen
    Das Play!-Framework




1                                               msg systems ag, 20.09.2012
Agenda



        1. Anforderungen an moderne Web-Anwendungen

        2. Das Play!-Framework

        3. Beispiel Preisberechnungen

        4. Zusammenfassung




2                                                     msg systems ag, 20.09.2012
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
Der Typesafe-Stack




                                Play
        Fokus
                                Akka


                                Scala


                         Java Virtual Machine




4                                               msg systems ag, 20.09.2012
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
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
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
Ein Beispiel - Preisberechnungen




          Szenario
                            Use-Cases




                                        Vorgehen



                                                   Ergebnis




8                                                  msg systems ag, 20.09.2012
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
Preisberechnung – ein paar Anwendungsfälle




          •   Abfrage von Produktpreisen

          •   Abfrage von aktuellen Komponentenpreisen

          •   Aktualisieren eines Komponentenpreises

          •   …




10                                                       msg systems ag, 20.09.2012
Preisberechnung – das Vorgehen




          •   Vorstellung der Gesamt-Architektur

          •   Definition der API

          •   Durchführung der Berechnung




11                                                 msg systems ag, 20.09.2012
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
Preisberechnung – das Vorgehen



          •   Definition der API – das Routing




13                                               msg systems ag, 20.09.2012
Preisberechnung – das Vorgehen



          •   Definition der API – das Routing




14                                               msg systems ag, 20.09.2012
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
Preisberechnung – das Vorgehen


                                                 die zugeordnete Handler-
          •   Definition der API – der Handler   Methode




16                                                                     msg systems ag, 20.09.2012
Preisberechnung – das Vorgehen


                                                 die zugeordnete Handler-
          •   Definition der API – der Handler   Methode




17                                                                     msg systems ag, 20.09.2012
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
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
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
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
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
Preisberechnung – Gesamtübersicht




                Lesender Teil                         Schreibender Teil


          Product     Component



                                Asynchron!
                                                   ComponentActor
                                                                       Asynchron!




                Synchron!
                                                                ProductActor
                                      Persistenz



23                                                                         msg systems ag, 20.09.2012
Preisberechnung – Deployment


                              Ist die Domäne isoliert
                                 fängt man klein an …




                                      Persistenz


24                                                      msg systems ag, 20.09.2012
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
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
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
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

Elastische Skalierbarkeit für Web-Anwendungen

  • 1.
    Elastische Skalierbarkeit fürWeb-Anwendungen Das Play!-Framework 1 msg systems ag, 20.09.2012
  • 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 moderneWeb-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 – dasSzenario 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 – einpaar Anwendungsfälle • Abfrage von Produktpreisen • Abfrage von aktuellen Komponentenpreisen • Aktualisieren eines Komponentenpreises • … 10 msg systems ag, 20.09.2012
  • 11.
    Preisberechnung – dasVorgehen • Vorstellung der Gesamt-Architektur • Definition der API • Durchführung der Berechnung 11 msg systems ag, 20.09.2012
  • 12.
    Preisberechnung – dasVorgehen • 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 – dasVorgehen • Definition der API – das Routing 13 msg systems ag, 20.09.2012
  • 14.
    Preisberechnung – dasVorgehen • Definition der API – das Routing 14 msg systems ag, 20.09.2012
  • 15.
    Preisberechnung – dasVorgehen • 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 – dasVorgehen die zugeordnete Handler- • Definition der API – der Handler Methode 16 msg systems ag, 20.09.2012
  • 17.
    Preisberechnung – dasVorgehen 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 – dasVorgehen • 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 – dasVorgehen • 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 – dasVorgehen • 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ürIhre 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