Session Management for scalable web projects (Froscon 2011 talk in german)
-
Upload
triagens -
Category
Technology
-
view
1.239 -
download
0
description
Transcript of Session Management for scalable web projects (Froscon 2011 talk in german)
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
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
Agenda
1. Sessionmanagement – Probleme und Lösungsansätze
2. Demo SessionVOC & Node.js
3. Q&A
221.08.20112011 © triAGENS GmbH |
Zuerst ein paar Buzzwords…
321.08.20112011 © triAGENS GmbH |
Sessionmanagement - ein Überblick
421.08.20112011 © triAGENS GmbH |
Wer ist der
Benutzer?
Hat er sich
eingeloggt?
Was ist im
Warenkorb?
Wo speichern wir die Sessiondaten?
521.08.20112011 © triAGENS GmbH |
Cookies
• Größe �
• Sicherheit �
Lokales Filesystem
•Stickyness �
Zentraler
Server ☺
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
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!
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
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
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
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
Heterogener Einsatz
1221.08.20112011 © triAGENS GmbH |
• Webauftritt verwendet Mix
- aus Programmiersprachen
- aus Frameworks
• Interoperabilitätsprobleme
• Programmiersprachen-agnostischer Ansatz
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
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?
Fragen so weit?
else {
this.startDemo();
}
1521.08.20112011 © triAGENS GmbH |
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 |
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 |
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 |
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 |
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 |
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.
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 |