![Page 1: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/1.jpg)
Sessionmanagement für skalierbare Web-Projekte
Martin Schönert – Frank Celler
Sessionmanagement für skalierbare Web-Projekte
Martin Schönert – Frank Celler
Sessionmanagement für skalierbare Web-Projekte
Martin Schönert – Frank Celler
![Page 2: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/2.jpg)
About.usMartin Schönert
• Dipl.-Mathematiker
• triAGENS, Köln
• #nosql #C #shakespeare #running #architecture
121.08.20112011 © triAGENS GmbH |
Frank Celler
• Dr. rer. nat.
• triAGENS, Köln
• #nosql #c #c++ #dylan #pathfinder
![Page 3: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/3.jpg)
Agenda
1. Sessionmanagement – Probleme und Lösungsansätze
2. Demo SessionVOC & Node.js
3. Q&A
221.08.20112011 © triAGENS GmbH |
![Page 4: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/4.jpg)
Zuerst ein paar Buzzwords…
321.08.20112011 © triAGENS GmbH |
![Page 5: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/5.jpg)
Sessionmanagement - ein Überblick
421.08.20112011 © triAGENS GmbH |
Wer ist der
Benutzer?
Hat er sich
eingeloggt?
Was ist im
Warenkorb?
![Page 6: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/6.jpg)
Wo speichern wir die Sessiondaten?
521.08.20112011 © triAGENS GmbH |
Cookies
• Größe �
• Sicherheit �
Lokales Filesystem
•Stickyness �
Zentraler
Server ☺
![Page 7: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/7.jpg)
Performanz
621.08.20112011 © triAGENS GmbH |
• Viele Requests/Durchsatz
• Viele Webserver und Applicationserver
• Latenz
• hauptspeicherbasiert
• non-blocking/event-basiert/multi-threaded
• 100.000 req/s
• < 1ms Response Time
![Page 8: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/8.jpg)
Zuverlässigkeit
721.08.20112011 © triAGENS GmbH |
• Ausfall des Servers
• Ausfall des Racks
oder des Rechenzentrums...
• Master/Master Replikation
• asynchrone Replikation
• Funktioniert auch mit mehreren RZ
Aus Business-Sicht
beurteilen!
![Page 9: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/9.jpg)
Housekeeping
821.08.20112011 © triAGENS GmbH |
• Sessions enden häufig durch Timeout
• Aktualisierung des Last-Access-Timestamps
• Autom. Aktualisierung des Last-Access
• Automatische on-the-fly Garbage Collection
• Callbacks
![Page 10: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/10.jpg)
Cachen
921.08.20112011 © triAGENS GmbH |
• 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
![Page 11: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/11.jpg)
Transiente Information
• Informationen in mehrschrittigen Prozessen managen
• Hidden-Field-Ping-Pong
1021.08.20112011 © triAGENS GmbH |
• Formdata als Teilobjekt einer Session
• muss nur einmal validiert werden
• eigenes Timeout
![Page 12: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/12.jpg)
Wildwuchs
Lösung: Sessions haben eine Struktur
1121.08.20112011 © triAGENS GmbH |
Ach, so ein
Attribut gibt es
schon?
Wird das Attribut
überall aktuell
gehalten?
Kann ich das
löschen?
Organisatorisches Problem �
Organisatorische Lösung
![Page 13: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/13.jpg)
Heterogener Einsatz
1221.08.20112011 © triAGENS GmbH |
• Webauftritt verwendet Mix
- aus Programmiersprachen
- aus Frameworks
• Interoperabilitätsprobleme
• Programmiersprachen-agnostischer Ansatz
![Page 14: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/14.jpg)
Authentifizierung
1321.08.20112011 © triAGENS GmbH |
• 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
![Page 15: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/15.jpg)
Noncen
1421.08.20112011 © triAGENS GmbH |
• Ungewolltes mehrfaches Auslösen der gleichen Aktion
• Noncen (only once) in den URLs
• Unbegrenzt viele Noncen in begrenztem Speicher
(fragt mich ;-)
Wie geht
das?
![Page 16: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/16.jpg)
Fragen so weit?
else {
this.startDemo();
}
1521.08.20112011 © triAGENS GmbH |
![Page 17: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/17.jpg)
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 World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
1621.08.20112011 © triAGENS GmbH |
![Page 18: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/18.jpg)
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
1721.08.20112011 © triAGENS GmbH |
![Page 19: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/19.jpg)
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);
1821.08.20112011 © triAGENS GmbH |
![Page 20: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/20.jpg)
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);
1921.08.20112011 © triAGENS GmbH |
![Page 21: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/21.jpg)
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);
2021.08.20112011 © triAGENS GmbH |
![Page 22: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/22.jpg)
Ansonsten:
Download: http://www.sessionvoc.org
2121.08.20112011 © triAGENS GmbH |
Danke für Eure Aufmerksamkeit!
Fragen? Anmerkungen?
Jetzt – oder später am Stand bei der Carrera-Bahn!
The End.
![Page 23: Session Management for scalable web projects (Froscon 2011 talk in german)](https://reader035.vdocuments.net/reader035/viewer/2022081404/559c64fd1a28abc10c8b47ab/html5/thumbnails/23.jpg)
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.
About us
Created by:
Dr. Frank Celler and Martin Schoenert
triAGENS GmbHBrüsseler Straße 89-93D-50672 Köln
www.triagens.de
2221.08.20112011 © triAGENS GmbH |