session management for scalable web projects (froscon 2011 talk in german)

Post on 08-Jul-2015

1.239 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

• m.schoenert@triagens.de

121.08.20112011 © triAGENS GmbH |

Frank Celler

• Dr. rer. nat.

• triAGENS, Köln

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

• f.celler@triagens.de

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 |

top related