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

23
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

description

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

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

Page 1: 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

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

About.usMartin Schönert

• Dipl.-Mathematiker

• triAGENS, Köln

• #nosql #C #shakespeare #running #architecture

[email protected]

121.08.20112011 © triAGENS GmbH |

Frank Celler

• Dr. rer. nat.

• triAGENS, Köln

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

[email protected]

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

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)

Zuerst ein paar Buzzwords…

321.08.20112011 © triAGENS GmbH |

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

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

Fragen so weit?

else {

this.startDemo();

}

1521.08.20112011 © triAGENS GmbH |

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

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)

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)

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)

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)

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)

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)

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 |