• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Session Management for scalable web projects (Froscon 2011 talk in german)
 

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

on

  • 1,413 views

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

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

Statistics

Views

Total Views
1,413
Views on SlideShare
1,413
Embed Views
0

Actions

Likes
1
Downloads
16
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • Sessionmanagement für skalierbare Web-Projekte Martin Schönert – Frank Celler
    • 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
    • Agenda1. Sessionmanagement – Probleme und Lösungsansätze2. Demo SessionVOC & Node.js3. Q&A 2011 © triAGENS GmbH | 21.08.2011 2
    • Zuerst ein paar Buzzwords… 2011 © triAGENS GmbH | 21.08.2011 3
    • Sessionmanagement - ein Überblick Hat er sich eingeloggt? Was ist im Wer ist der Warenkorb? Benutzer? 2011 © triAGENS GmbH | 21.08.2011 4
    • Wo speichern wir die Sessiondaten? Cookies • Größe • Sicherheit Lokales Filesystem Zentraler •Stickyness Server ☺ 2011 © triAGENS GmbH | 21.08.2011 5
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • Heterogener Einsatz • Webauftritt verwendet Mix - aus Programmiersprachen - aus Frameworks • Interoperabilitätsprobleme • Programmiersprachen-agnostischer Ansatz 2011 © triAGENS GmbH | 21.08.2011 12
    • 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
    • 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
    • Fragen so weit? else { this.startDemo(); } 2011 © triAGENS GmbH | 21.08.2011 15
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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