Sessionmanagement für skalierbare Web-Projekte          Martin Schönert – Frank Celler
About.us                    Martin Schönert                    • Dipl.-Mathematiker                    • triAGENS, Köln   ...
Agenda1. Sessionmanagement – Probleme und Lösungsansätze2. Demo SessionVOC & Node.js3. Q&A                                ...
Zuerst ein paar Buzzwords…                             2011 © triAGENS GmbH |   21.08.2011   3
Sessionmanagement - ein Überblick                Hat er sich                eingeloggt?                              Was i...
Wo speichern wir die Sessiondaten?     Cookies     • Größe     • Sicherheit                             Lokales Filesystem...
Performanz        • Viele Requests/Durchsatz        • Viele Webserver und Applicationserver        • Latenz              •...
Zuverlässigkeit          • Ausfall des Servers                 Aus Business-Sicht                                         ...
Housekeeping        • Sessions enden häufig durch Timeout        • Aktualisierung des Last-Access-Timestamps             •...
Cachen         • Wiederholter Zugriff auf dieselben Informationen         • Z.B. Name des Benutzers, Benutzereinstellungen...
Transiente Information          • Informationen in mehrschrittigen Prozessen managen          • Hidden-Field-Ping-Pong    ...
Wildwuchs                                        Kann ich das       Ach, so ein                                         lö...
Heterogener Einsatz          • Webauftritt verwendet Mix           - aus Programmiersprachen           - aus Frameworks   ...
Authentifizierung         • Webserver als Einfallstor für globale Sicherheitslücken              • Keine Möglichkeit, Sess...
Noncen         • Ungewolltes mehrfaches Auslösen der gleichen Aktion                                                    Wi...
Fragen so weit?          else {              this.startDemo();          }                                  2011 © triAGENS...
NODE.JS                      “influenced by systems like Rubys Event Machine                    or Pythons Twisted”       ...
Interoperabilität PHP und NODE.JS NODE.JS ist noch recht volatil, aber z. B. Push leicht möglich Session-Management in Con...
Connect                       “App = structured like an onion”                       “Every request enters the onion at th...
Express Vergleichbar Ruby Sinatra   var express = require(express);                             var app = express.createSe...
Installation    curl -L http://install.sessionvoc.org/ | sh    curl http://npmjs.org/install.sh | sh    npm install connec...
The End.                  Danke für Eure Aufmerksamkeit!                  Fragen? Anmerkungen?                  Jetzt – od...
About usThe triAGENS GmbH is a service company in the area of complex IT Systems and webbased business solutions with high...
Upcoming SlideShare
Loading in …5
×

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

1,631 views

Published on

Slides of the Froscon 2011 talk about session management for scalable web pro

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,631
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
18
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. Sessionmanagement für skalierbare Web-Projekte Martin Schönert – Frank Celler
  2. 2. About.us Martin Schönert • Dipl.-Mathematiker • triAGENS, Köln • #nosql #C #shakespeare #running #architecture • m.schoenert@triagens.deFrank Celler• Dr. rer. nat.• triAGENS, Köln• #nosql #c #c++ #dylan #pathfinder• f.celler@triagens.de 2011 © triAGENS GmbH | 21.08.2011 1
  3. 3. Agenda1. Sessionmanagement – Probleme und Lösungsansätze2. Demo SessionVOC & Node.js3. Q&A 2011 © triAGENS GmbH | 21.08.2011 2
  4. 4. Zuerst ein paar Buzzwords… 2011 © triAGENS GmbH | 21.08.2011 3
  5. 5. Sessionmanagement - ein Überblick Hat er sich eingeloggt? Was ist im Wer ist der Warenkorb? Benutzer? 2011 © triAGENS GmbH | 21.08.2011 4
  6. 6. Wo speichern wir die Sessiondaten? Cookies • Größe • Sicherheit Lokales Filesystem Zentraler •Stickyness Server ☺ 2011 © triAGENS GmbH | 21.08.2011 5
  7. 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. 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. 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. 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. 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. 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. 13. Heterogener Einsatz • Webauftritt verwendet Mix - aus Programmiersprachen - aus Frameworks • Interoperabilitätsprobleme • Programmiersprachen-agnostischer Ansatz 2011 © triAGENS GmbH | 21.08.2011 12
  14. 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. 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. 16. Fragen so weit? else { this.startDemo(); } 2011 © triAGENS GmbH | 21.08.2011 15
  17. 17. NODE.JS “influenced by systems like Rubys Event Machine or Pythons 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. 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. 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. 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. 21. Installation curl -L http://install.sessionvoc.org/ | sh curl http://npmjs.org/install.sh | sh npm install connect -g npm install connect-sessionvoc -gvar 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. 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. 23. About usThe triAGENS GmbH is a service company in the area of complex IT Systems and webbased 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 SchoenerttriAGENS GmbHBrüsseler Straße 89-93D-50672 Kölnwww.triagens.de 2011 © triAGENS GmbH | 21.08.2011 22

×