Diplomarbeit: Open Source Rapid Web Development Frameworks - Eine Untersuchung der Skalierungsstrategien Ergebnispräsentation Kolloquium Ralf Geschke FOM Köln 27.04.2009
Gliederung Einleitung Vorgehensweise Ergebnisse Ausblick 2
Einleitung Motivation und Zielsetzung Web 2.0 Technologien Konzepte Aktive Teilnahme Software Entwicklungsprozess Dienstleistung beta Flexibilität Wachstum Erstellung von skalierbaren und flexiblen Web- Anwendungen mit Open Source Frameworks 3
Einleitung Skalierbarkeit Definition: Hinzufügen von Ressourcen führt zu einer proportionalen Leistungssteigerung des Systems vertikale Skalierbarkeit Einsatz leistungsfähigerer Komponenten Vorteil: schnell, einfach Nachteil: Kosten, Leistungsgrenzen horizontale Skalierbarkeit Hinzufügen weiterer Einheiten Auslagerung Dienste Nachteil: höherer Aufwand in Applikationsebene Vorteil: nahezu unbegrenzt möglich, einzig echtes Verfahren 4
Vorgehensweise Auswahl Frameworks Ruby on Rails (Ruby) Django (Python) Symfony (PHP) Grails (Groovy / Java) Anwendungsfall News-System Erstellung mit PHP und Frameworks ohne Optimierungen mit Optimierungen Messung der Performance Nutzwertanalyse 5
Vorgehensweise Anwendung Screenshot 6
Vorgehensweise Optimierung und Messung Optimierung PHP: Memcache für Listen und Datensätze, File-Cache für Seiten Frameworks Rails: Action-Caching Django: Site-Cache Symfony: Action-Caching Grails: kein Caching, Optimierung ORM Benchmark-Test Tool Siege Zugriff auf Übersichtsseiten, Detailseiten, Kommentarabgabe parallele Requests Lastverhalten 7
Vorgehensweise Nutzwertanalyse Zielkriterien: Entwicklung Funktionalität Geschwindigkeit Support Zwei Szenarien Hohe Geschwindigkeit Geringer Entwicklungsaufwand 8
Ergebnisse nicht optimierte Anwendung 100 90 80 70 60 Requests/s 50 40 30 20 10 0 10 20 50 100 200 500 700 Parallele Requests PHP Rails Django Symfony Grails 9
Ergebnisse optimierte Anwendung 900 800 700 600 Requests/s 500 400 300 200 100 0 10 20 50 100 200 500 700 Parallele Requests PHP Rails Django Symfony Grails 10
Ergebnisse Geschwindigkeitssteigerung 40 35 30 Steigerung Anzahl Requests/s 25 20 15 10 5 0 10 20 50 100 200 500 700 Parallele Requests PHP Rails Django Symfony Grails 11
Ergebnisse Nutzwertanalyse 4 3,5 3 2,5 Nutzwert 2 1,5 1 0,5 0 Hohe Performance Szenarien Geringer Entw.-Aufwand Django Symfony Rails Grails PHP-Lösung 12
Ergebnisse und Beurteilung PHP Symfony schnellste Anwendung nach Optimierung gute Strukturierung möglich Geschwindigkeit in Ordnung Entwicklung subjektiv holprig Rails Grails sehr langsam Entwicklung in Ordnung Django wenige Optimierungsmöglichkeiten Entwicklung gut schnellstes Framework subjektiv: funktioniert! 13
Ausblick Frameworks Weiterentwicklung Frameworks Verschmelzung Rails und Merb: Rails 3 = Merb 2 PHP-Frameworks, z.b. Standard Zend Framework SilverStripe CMS Framework viele weitere... Django Conditional View Processing Multiple Database Support (GSOC 2009) Grails 1.1: Batch Fetching (Optimierung Lazy Loading) 14
Ausblick Hot Topics (verteilte) Key-Value-Speichersysteme Google BigTable Amazon SimpleDB Open Source: CouchDB, MongoDB, Project Voldemort... Asynchrone Systeme Vor-Generierung von Daten (Cronjob) Message-Queues Google App Engine Web Applications innerhalb Google Infrastruktur Python / Java Entwicklungs- und Laufzeitzumgebung Web-Server: Nginx, Lighttpd 15
Vielen Dank......für Ihre Aufmerksamkeit! 16