SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
Sessionmanagement für skalierbare Web-Projekte
          Martin Schönert – Frank Celler
About.us
                    Martin Schönert

                    • Dipl.-Mathematiker

                    • triAGENS, Köln

                    • #nosql #C #shakespeare #running #architecture

                    • m.schoenert@triagens.de


Frank Celler

• Dr. rer. nat.

• triAGENS, Köln

• #nosql #c #c++ #dylan #pathfinder

• f.celler@triagens.de


                                                      2011 © triAGENS GmbH |   21.08.2011   1
Agenda

1. Sessionmanagement – Probleme und Lösungsansätze

2. Demo SessionVOC & Node.js

3. Q&A




                                          2011 © triAGENS GmbH |   21.08.2011   2
Zuerst ein paar Buzzwords…




                             2011 © triAGENS GmbH |   21.08.2011   3
Sessionmanagement - ein Überblick

                Hat er sich
                eingeloggt?

                              Was ist im
  Wer ist der
                              Warenkorb?
  Benutzer?




                                           2011 © triAGENS GmbH |   21.08.2011   4
Wo speichern wir die Sessiondaten?




     Cookies
     • Größe
     • Sicherheit



                             Lokales Filesystem               Zentraler
                             •Stickyness                       Server ☺




                                  2011 © triAGENS GmbH |   21.08.2011   5
Performanz

        • Viele Requests/Durchsatz

        • Viele Webserver und Applicationserver

        • Latenz



              • hauptspeicherbasiert

              • non-blocking/event-basiert/multi-threaded

              • 100.000 req/s

              • < 1ms Response Time

                                          2011 © triAGENS GmbH |   21.08.2011   6
Zuverlässigkeit

          • Ausfall des Servers                 Aus Business-Sicht
                                                   beurteilen!
          • Ausfall des Racks
           oder des Rechenzentrums...



                • Master/Master Replikation

                • asynchrone Replikation

                • Funktioniert auch mit mehreren RZ



                                              2011 © triAGENS GmbH |   21.08.2011   7
Housekeeping

        • Sessions enden häufig durch Timeout

        • Aktualisierung des Last-Access-Timestamps




             • Autom. Aktualisierung des Last-Access

             • Automatische on-the-fly Garbage Collection

             • Callbacks



                                         2011 © triAGENS GmbH |   21.08.2011   8
Cachen

         • Wiederholter Zugriff auf dieselben Informationen

         • Z.B. Name des Benutzers, Benutzereinstellungen...




              • Caching von benutzerbezogenen Informationen

              • Autom. Laden in die Session

              • Zurückschreiben per Write Through
                oder Write Back

                                           2011 © triAGENS GmbH |   21.08.2011   9
Transiente Information

          • Informationen in mehrschrittigen Prozessen managen

          • Hidden-Field-Ping-Pong




               • Formdata als Teilobjekt einer Session

               • muss nur einmal validiert werden

               • eigenes Timeout



                                         2011 © triAGENS GmbH |   21.08.2011   10
Wildwuchs


                                        Kann ich das
       Ach, so ein
                                         löschen?
     Attribut gibt es
         schon?
                                                       Organisatorisches Problem
                                                       Organisatorische Lösung
                        Wird das Attribut
                         überall aktuell
                           gehalten?




Lösung: Sessions haben eine Struktur




                                                       2011 © triAGENS GmbH |   21.08.2011   11
Heterogener Einsatz

          • Webauftritt verwendet Mix
           - aus Programmiersprachen
           - aus Frameworks

          • Interoperabilitätsprobleme


               • Programmiersprachen-agnostischer Ansatz




                                         2011 © triAGENS GmbH |   21.08.2011   12
Authentifizierung

         • Webserver als Einfallstor für globale Sicherheitslücken




              • Keine Möglichkeit, Sessions aufzulisten

              • Nur kontrollierte Änderungen von Sessions

              • Challenge Response Verfahren

              • Auch als Authorisierungsserver einsetzbar


                                            2011 © triAGENS GmbH |   21.08.2011   13
Noncen

         • Ungewolltes mehrfaches Auslösen der gleichen Aktion




                                                    Wie geht
                                                     das?

              • Noncen (only once) in den URLs

              • Unbegrenzt viele Noncen in begrenztem Speicher
                (fragt mich ;-)



                                         2011 © triAGENS GmbH |   21.08.2011   14
Fragen so weit?




          else {

              this.startDemo();

          }




                                  2011 © triAGENS GmbH |   21.08.2011   15
NODE.JS
                      “influenced by systems like Ruby's Event Machine
                    or Python's Twisted”
                      “presents the event loop as a language construct
                    instead of as a library”
                      “HTTP is a first class protocol in Node”



var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello Worldn');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');




                                                 2011 © triAGENS GmbH |   21.08.2011   16
Interoperabilität PHP und NODE.JS

 NODE.JS ist noch recht volatil, aber z. B. Push leicht möglich

 Session-Management in Connect rudimentär

 Verwendung von PHP für Web-Seite

 Verwendung NODE.JS für Spezial-Aufgaben, z. B. Push

 Gemeinsame Sessionverwaltung mittels SessionVOC




                                                2011 © triAGENS GmbH |   21.08.2011   17
Connect
                       “App = structured like an onion”
                       “Every request enters the onion at the outside and traverses
                     layer by layer till it hits something that handles it and
                     generates a response.”
                       “In Connect: ‘filters and providers’”

var Connect = require('connect');

module.exports = Connect.createServer(
  Connect.logger(), // Log responses to the terminal using Common Log Format.
  Connect.responseTime(), // Add a special header with timing information.
  Connect.conditionalGet(), // Add HTTP 304 responses to save even more bandwidth.
  Connect.cache(), // Add a short-term ram-cache to improve performance.
  Connect.gzip(), // Gzip the output stream when the browser wants it.
  Connect.staticProvider(__dirname) // Serve all static files in the current dir.
).listen(1338);




                                                         2011 © triAGENS GmbH |   21.08.2011   18
Express
 Vergleichbar Ruby Sinatra   var express = require('express');

                             var app = express.createServer(
                                   express.logger()
                                 , express.bodyParser()
                               );

                             app.put('/user/:id', function(req, res){
                               res.send('updating ' + req.user.name);
                             });

                             app.get('*', function(req, res){
                               res.send('what???', 404);
                             });

                             app.listen(3000);




                                                  2011 © triAGENS GmbH |   21.08.2011   19
Installation
    curl -L http://install.sessionvoc.org/ | sh
    curl http://npmjs.org/install.sh | sh

    npm install connect -g
    npm install connect-sessionvoc -g

var connect = require('connect'),
    sessionvoc = require('connect-sessionvoc').sessionvoc;

connect(connect.cookieParser(),
        sessionvoc(),
        function(req, res, next) {
          var sess = req.session
          res.setHeader('Content-Type', 'text/html');
          res.write('<p>Name: '+(sess && sess.uid ? sess.name : "-")+'</p>');
          res.end();
        }).listen(3000);


                                                       2011 © triAGENS GmbH |   21.08.2011   20
The End.

                  Danke für Eure Aufmerksamkeit!
                  Fragen? Anmerkungen?
                  Jetzt – oder später am Stand bei der Carrera-Bahn!




Ansonsten:

Download: http://www.sessionvoc.org




                                                2011 © triAGENS GmbH |   21.08.2011   21
About us
The triAGENS GmbH is a service company in the area of complex IT Systems and web
based business solutions with high requirements on performance, scalability and security.

triAGENS supplies high performance databases based on NoSQL database technology,
which is utilized for example at the Deutsche Post.




Created by:

Dr. Frank Celler and Martin Schoenert


triAGENS GmbH
Brüsseler Straße 89-93
D-50672 Köln

www.triagens.de




                                                                                     2011 © triAGENS GmbH |   21.08.2011   22

Más contenido relacionado

Similar a Session Management for scalable web projects (Froscon 2011 talk in german)

Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantDeployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantChristoph Möller
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdAOE
 
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsHTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsUlrich Schmidt
 
Windows as a Service - Herausforderungen ohne Windows Desktop Analytics
Windows as a Service - Herausforderungen ohne Windows Desktop AnalyticsWindows as a Service - Herausforderungen ohne Windows Desktop Analytics
Windows as a Service - Herausforderungen ohne Windows Desktop AnalyticsFabian Niesen
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?adesso AG
 
Übersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste SchrittÜbersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste SchrittSDL Language Technologies
 
Continuous Delivery as a Way of Life
Continuous Delivery as a Way of LifeContinuous Delivery as a Way of Life
Continuous Delivery as a Way of LifeKremer Consulting
 
GWAVACon - Secure and managed file transfer - deutsch
GWAVACon - Secure and managed file transfer - deutschGWAVACon - Secure and managed file transfer - deutsch
GWAVACon - Secure and managed file transfer - deutschGWAVA
 
Architektur und Automation als Enabler für DevOps
Architektur und Automation als Enabler für DevOpsArchitektur und Automation als Enabler für DevOps
Architektur und Automation als Enabler für DevOpsmatfsw
 
Challenges in converting from Oracle Forms to Oracle ADF
Challenges in converting from Oracle Forms to Oracle ADFChallenges in converting from Oracle Forms to Oracle ADF
Challenges in converting from Oracle Forms to Oracle ADFUlrich Gerkmann-Bartels
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittdominion
 
Client Technologien - Ein Überblick für Usability Professionals
Client Technologien - Ein Überblick für Usability ProfessionalsClient Technologien - Ein Überblick für Usability Professionals
Client Technologien - Ein Überblick für Usability ProfessionalsThomas Memmel
 
Citrix XenServer 5.6: Die Neuerungen
Citrix XenServer 5.6: Die NeuerungenCitrix XenServer 5.6: Die Neuerungen
Citrix XenServer 5.6: Die Neuerungennetlogix
 
Applikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die CloudApplikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die CloudAarno Aukia
 

Similar a Session Management for scalable web projects (Froscon 2011 talk in german) (20)

Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantDeployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
 
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsHTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
 
Windows as a Service - Herausforderungen ohne Windows Desktop Analytics
Windows as a Service - Herausforderungen ohne Windows Desktop AnalyticsWindows as a Service - Herausforderungen ohne Windows Desktop Analytics
Windows as a Service - Herausforderungen ohne Windows Desktop Analytics
 
XPages - The Basics
XPages - The BasicsXPages - The Basics
XPages - The Basics
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
 
Reactive Programming
Reactive ProgrammingReactive Programming
Reactive Programming
 
Übersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste SchrittÜbersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste Schritt
 
Continuous Delivery as a Way of Life
Continuous Delivery as a Way of LifeContinuous Delivery as a Way of Life
Continuous Delivery as a Way of Life
 
GWAVACon - Secure and managed file transfer - deutsch
GWAVACon - Secure and managed file transfer - deutschGWAVACon - Secure and managed file transfer - deutsch
GWAVACon - Secure and managed file transfer - deutsch
 
DOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best PracticeDOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best Practice
 
Architektur und Automation als Enabler für DevOps
Architektur und Automation als Enabler für DevOpsArchitektur und Automation als Enabler für DevOps
Architektur und Automation als Enabler für DevOps
 
TDD für Testmuffel
TDD für TestmuffelTDD für Testmuffel
TDD für Testmuffel
 
Challenges in converting from Oracle Forms to Oracle ADF
Challenges in converting from Oracle Forms to Oracle ADFChallenges in converting from Oracle Forms to Oracle ADF
Challenges in converting from Oracle Forms to Oracle ADF
 
imatics FormEngine
imatics FormEngineimatics FormEngine
imatics FormEngine
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schritt
 
Client Technologien - Ein Überblick für Usability Professionals
Client Technologien - Ein Überblick für Usability ProfessionalsClient Technologien - Ein Überblick für Usability Professionals
Client Technologien - Ein Überblick für Usability Professionals
 
Citrix XenServer 5.6: Die Neuerungen
Citrix XenServer 5.6: Die NeuerungenCitrix XenServer 5.6: Die Neuerungen
Citrix XenServer 5.6: Die Neuerungen
 
Cryption proflyer de
Cryption proflyer deCryption proflyer de
Cryption proflyer de
 
Applikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die CloudApplikationsmodernisierung: Der Weg von Legacy in die Cloud
Applikationsmodernisierung: Der Weg von Legacy in die Cloud
 

Session Management for scalable web projects (Froscon 2011 talk in german)

  • 1. Sessionmanagement für skalierbare Web-Projekte Martin Schönert – Frank Celler
  • 2. About.us Martin Schönert • Dipl.-Mathematiker • triAGENS, Köln • #nosql #C #shakespeare #running #architecture • m.schoenert@triagens.de Frank Celler • Dr. rer. nat. • triAGENS, Köln • #nosql #c #c++ #dylan #pathfinder • f.celler@triagens.de 2011 © triAGENS GmbH | 21.08.2011 1
  • 3. Agenda 1. Sessionmanagement – Probleme und Lösungsansätze 2. Demo SessionVOC & Node.js 3. Q&A 2011 © triAGENS GmbH | 21.08.2011 2
  • 4. Zuerst ein paar Buzzwords… 2011 © triAGENS GmbH | 21.08.2011 3
  • 5. Sessionmanagement - ein Überblick Hat er sich eingeloggt? Was ist im Wer ist der Warenkorb? Benutzer? 2011 © triAGENS GmbH | 21.08.2011 4
  • 6. Wo speichern wir die Sessiondaten? Cookies • Größe • Sicherheit Lokales Filesystem Zentraler •Stickyness Server ☺ 2011 © triAGENS GmbH | 21.08.2011 5
  • 7. Performanz • Viele Requests/Durchsatz • Viele Webserver und Applicationserver • Latenz • hauptspeicherbasiert • non-blocking/event-basiert/multi-threaded • 100.000 req/s • < 1ms Response Time 2011 © triAGENS GmbH | 21.08.2011 6
  • 8. Zuverlässigkeit • Ausfall des Servers Aus Business-Sicht beurteilen! • Ausfall des Racks oder des Rechenzentrums... • Master/Master Replikation • asynchrone Replikation • Funktioniert auch mit mehreren RZ 2011 © triAGENS GmbH | 21.08.2011 7
  • 9. Housekeeping • Sessions enden häufig durch Timeout • Aktualisierung des Last-Access-Timestamps • Autom. Aktualisierung des Last-Access • Automatische on-the-fly Garbage Collection • Callbacks 2011 © triAGENS GmbH | 21.08.2011 8
  • 10. Cachen • Wiederholter Zugriff auf dieselben Informationen • Z.B. Name des Benutzers, Benutzereinstellungen... • Caching von benutzerbezogenen Informationen • Autom. Laden in die Session • Zurückschreiben per Write Through oder Write Back 2011 © triAGENS GmbH | 21.08.2011 9
  • 11. Transiente Information • Informationen in mehrschrittigen Prozessen managen • Hidden-Field-Ping-Pong • Formdata als Teilobjekt einer Session • muss nur einmal validiert werden • eigenes Timeout 2011 © triAGENS GmbH | 21.08.2011 10
  • 12. Wildwuchs Kann ich das Ach, so ein löschen? Attribut gibt es schon? Organisatorisches Problem Organisatorische Lösung Wird das Attribut überall aktuell gehalten? Lösung: Sessions haben eine Struktur 2011 © triAGENS GmbH | 21.08.2011 11
  • 13. Heterogener Einsatz • Webauftritt verwendet Mix - aus Programmiersprachen - aus Frameworks • Interoperabilitätsprobleme • Programmiersprachen-agnostischer Ansatz 2011 © triAGENS GmbH | 21.08.2011 12
  • 14. Authentifizierung • Webserver als Einfallstor für globale Sicherheitslücken • Keine Möglichkeit, Sessions aufzulisten • Nur kontrollierte Änderungen von Sessions • Challenge Response Verfahren • Auch als Authorisierungsserver einsetzbar 2011 © triAGENS GmbH | 21.08.2011 13
  • 15. Noncen • Ungewolltes mehrfaches Auslösen der gleichen Aktion Wie geht das? • Noncen (only once) in den URLs • Unbegrenzt viele Noncen in begrenztem Speicher (fragt mich ;-) 2011 © triAGENS GmbH | 21.08.2011 14
  • 16. Fragen so weit? else { this.startDemo(); } 2011 © triAGENS GmbH | 21.08.2011 15
  • 17. NODE.JS “influenced by systems like Ruby's Event Machine or Python's Twisted” “presents the event loop as a language construct instead of as a library” “HTTP is a first class protocol in Node” var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello Worldn'); }).listen(1337, "127.0.0.1"); console.log('Server running at http://127.0.0.1:1337/'); 2011 © triAGENS GmbH | 21.08.2011 16
  • 18. Interoperabilität PHP und NODE.JS NODE.JS ist noch recht volatil, aber z. B. Push leicht möglich Session-Management in Connect rudimentär Verwendung von PHP für Web-Seite Verwendung NODE.JS für Spezial-Aufgaben, z. B. Push Gemeinsame Sessionverwaltung mittels SessionVOC 2011 © triAGENS GmbH | 21.08.2011 17
  • 19. Connect “App = structured like an onion” “Every request enters the onion at the outside and traverses layer by layer till it hits something that handles it and generates a response.” “In Connect: ‘filters and providers’” var Connect = require('connect'); module.exports = Connect.createServer( Connect.logger(), // Log responses to the terminal using Common Log Format. Connect.responseTime(), // Add a special header with timing information. Connect.conditionalGet(), // Add HTTP 304 responses to save even more bandwidth. Connect.cache(), // Add a short-term ram-cache to improve performance. Connect.gzip(), // Gzip the output stream when the browser wants it. Connect.staticProvider(__dirname) // Serve all static files in the current dir. ).listen(1338); 2011 © triAGENS GmbH | 21.08.2011 18
  • 20. Express Vergleichbar Ruby Sinatra var express = require('express'); var app = express.createServer( express.logger() , express.bodyParser() ); app.put('/user/:id', function(req, res){ res.send('updating ' + req.user.name); }); app.get('*', function(req, res){ res.send('what???', 404); }); app.listen(3000); 2011 © triAGENS GmbH | 21.08.2011 19
  • 21. Installation curl -L http://install.sessionvoc.org/ | sh curl http://npmjs.org/install.sh | sh npm install connect -g npm install connect-sessionvoc -g var connect = require('connect'), sessionvoc = require('connect-sessionvoc').sessionvoc; connect(connect.cookieParser(), sessionvoc(), function(req, res, next) { var sess = req.session res.setHeader('Content-Type', 'text/html'); res.write('<p>Name: '+(sess && sess.uid ? sess.name : "-")+'</p>'); res.end(); }).listen(3000); 2011 © triAGENS GmbH | 21.08.2011 20
  • 22. The End. Danke für Eure Aufmerksamkeit! Fragen? Anmerkungen? Jetzt – oder später am Stand bei der Carrera-Bahn! Ansonsten: Download: http://www.sessionvoc.org 2011 © triAGENS GmbH | 21.08.2011 21
  • 23. About us The triAGENS GmbH is a service company in the area of complex IT Systems and web based business solutions with high requirements on performance, scalability and security. triAGENS supplies high performance databases based on NoSQL database technology, which is utilized for example at the Deutsche Post. Created by: Dr. Frank Celler and Martin Schoenert triAGENS GmbH Brüsseler Straße 89-93 D-50672 Köln www.triagens.de 2011 © triAGENS GmbH | 21.08.2011 22