Akte Z: Erfahrungsberichte aus der Welt der businesskritischen PHP-Applikationen Von Axel Schinke Senior Manager of Global Operations for Global Services
Über das Webinar Erfahrungsberichte von Zend Consulting Verschiedene Themenbereiche Performance Architecture & Scalability Coaching & Mentoring Zend Software Manchmal ist es gar nicht PHP Anonymisierte Auswahl aus weltweitem Kundenstamm Aus Datenschutzgründen: Keine Erwähnung von Security-Themen Überblick: Zend Consulting 2
Performance
Performance - Fall Nr. 1 Unsere Website läuft stabil, aber langsam. Sie wurde mit einem selbst entwickelten Framework gebaut. Die Site braucht definitiv mehr Hardware-Ressourcen als zur Verfügung stehen. 4
Performance - Fall Nr. 1 3 Tage Time & Material Consulting - Remote Analyse der Architektur Daten wurden teilweise aus Sicherheitsgründen verschlüsselt abgespeichert Erneute Anzeige dieser Daten bremste das System über die Maßen aus Definition und Integration verschiedener Caching-Szenarien (Caching auf der Platte, im Hauptspeicher etc. / u.a. mit Zend Server) Einsatz der JobQueue von Zend Server für Long-Running Tasks 5
Performance - Fall Nr. 2 Wir haben ein Performance-Problem mit unserer Website. Normalerweise die Website sehr performant außer Mittwochs! Wir haben schon sehr viel Aufwand in die Fehlersuche gesteckt, konnten aber nichts finden. 6
Performance - Fall Nr. 2 Performance Audit -Remote Jeden Mittwoch riefen Web-Spiders eine bestimmte Seite mit einer Produktübersicht auf 1.100 DB-Requests pro User pro Seitenaufruf. Die 1.100 Queries wurden auf 11 Queries reduziert (1,5 Sek. an Stelle von 15 Sek./Aufruf). 7
Performance - Fall Nr. 3 Unser Webshop ist in der Weihnachtszeit unter starker Last. Wir müssen sicher gehen, dass in diesem Zeitraum alles performant läuft. Wir nutzen in der Anbindung viele externe Web-Services. Liegt es evtl. daran? 8
Performance - Fall Nr. 3 Performance Audit Remote Ergebnis des Audits: Die per SOAP angebundenen, externen Web-Services liefen über eine sehr langsame Verbindung Gleichzeitig war die Menge der übermittelten Daten sehr groß Lösung: Viele Teile der externen Web-Services wurden lokal abgebildet. Zusätzlich : Implementierung intelligenter Caching-Mechanismen Endergebnis: Die E-Commerce-Website arbeitete 3-10 mal schneller als vorher. 9
Performance - Fall Nr. 4 Unser Portal für Partner/Distributoren hat Performance-Probleme. Manchmal braucht eine Seite 30-60 Sek. Ladezeit anstatt normalerweise 0,5-4 Sek. Unsere Partner beginnen schon sich bei uns zu beschweren 10
Performance - Fall Nr. 4 Performance Audit Remote Ergebnis: Die Konfiguration des Apache Webservers war suboptimal Lösung: Anpassung der Konfiguration brachte die Berechnungszeit der Seite wieder in den normalen Bereich Kleine Änderungen am Datenbank-Setup brachten zusätzliche 0,3 Sekunden Performancegewinn pro Aufruf Nebenher: Diverse Sicherheitsprobleme im Code gefunden und dem Kunden gemeldet. 11
Architecture & Scalability
Architecture & Scalability - Fall Nr. 1 Wir planen eine erweiterte Version unserer Web-Applikation. Die Komplexität wird um den Faktor 10 höher sein. Wir sind unsicher ob unsere bisherige Architektur der Anwendung und der DB dem gewachsen ist. 13
Architecture & Scalability - Fall Nr. 1 Architecture/Scalability Audit Vor Ort Anwendung mit diffizilem Rechtemanagement. Hürde: Verträgt die Datenbank die Last? Ansatz: Analyse des bestehenden Source Codes Lösung: Neue Datenbank-Struktur skizziert, die problemlos mit der neuen Software-Architektur mithalten kann 14
Architecture & Scalability - Fall Nr. 2 Unser neues Web 2.0- Intranet ist seit über 1,5 Jahren online. Manche Seiten brauchen mehr als 10 Sek. Wir haben es mit Zend Framework gebaut, aber zuletzt waren die Antwortzeiten der Seiten nicht mehr akzeptabel. 15
Architecture & Scalability - Fall Nr. 2 5 Tage Time & Material Consulting vor Ort Ansatz: U.a. Nutzung des Profilings von Zend Studio, um die Probleme zu lokalisieren Lösung: Geringe Anpassungen an der Architektur Ergebnis: Antwortzeit von 10 Sek. auf unter eine Sekunde reduziert, ohne die gesamte Applikation neu schreiben zu müssen. Seiteneffekt: Gemeinsam mit dem Entwickler-Team des Kunden weitere Optimierungen an der Architektur vorgenommen 16
Architecture & Scalability - Fall Nr. 3 Eine wichtige interne Applikation braucht manchmal 5 Minuten, um ein Ergebnis zu liefern. Wir haben viele tausend Kunden, die darunter leiden, dass sie nicht mehr zeitnah unseren Service erhalten können. 17
Architecture & Scalability - Fall Nr. 3 3 Tage Time & Material Consulting vor Ort (initial) Vorgaben: Der Zend Consultant hatte ausschließlich Zugriff auf den PHP- Code Änderungen an der Datenbank oder der Architektur waren vom Kunden ausgeschlossen worden. Ansatz: Analyse vor Ort und nachträgliche Remote-Arbeiten Ergebnis: Die Performance konnte um einen Faktor von bis zu 4.100 (!) erhöht werden. Durchschnittlicher Performancegewinn bei den Applikationsmodulen: Faktor 328. 18
Architecture & Scalability - Fall Nr. 4 Unsere Kundenzahl geht in die Millionen. Wir müssen technisch auf dem aktuellsten Stand sein, um weiteres Wachstum zu fördern. Wir haben Probleme mit der Skalierung. Unsere aktuelle Infrastruktur muss überarbeitet und aktualisiert werden. 19
Architecture & Scalability - Fall Nr. 4 5 Tage Time & Material Consulting vor Ort (initial) Grund: Die sehr komplexe Applikation des Kunden wurde immer auf Basis von Kundenwünschen erweitert. Es lag dabei jedoch kein übergreifender Plan oder eine Langzeitvision vor. Die gewachsene Applikations-Struktur hat die Skalierbarkeit verhindert Die ursprüngliche Datenbank-Struktur hat massive Probleme mit der aktuellen Masse an Daten mitzuhalten. Lösung: Kontinuierliche Beratung während der gesamten Zeit der Neuentwicklung 20
Coaching & Mentoring
Coaching & Mentoring - Fall Nr. 1 Unser Entwickler (-Team) kann bereits PHP Wir haben uns auch bereits in Zend Framework eingearbeitet. Wir haben den Eindruck, dass sich unser Entwickler bei der Architektur nicht sicher fühlt 22
Coaching & Mentoring - Fall Nr. 1 3 Tage Time & Material Consulting vor Ort Ausgangssituation: Kenntnisse über Zend Framework waren vorhanden, jedoch wenig Erfahrung in der Architektur von Applikationen Lösung: Der Zend Consultant hat vor Ort innerhalb von 3 Tagen gemeinsam mit dem Entwickler eine tragfähige, skalierbare Struktur definiert, die heute noch im Einsatz ist und ständig vom Entwickler erfolgreich erweitert wird. 23
Coaching & Mentoring - Fall Nr. 2 Wir brauchen einen Prototyp innerhalb kurzer Zeit und das Ganze muss in PHP auf IBM System i laufen. Gleichzeitig muss der PHP- Prototyp aber mit unseren Legacy-Systemen kommunizieren. 24
Coaching & Mentoring - Fall Nr. 2 5 Tage Time & Material Consulting vor Ort Ansatz: Ein Zend Consultant hat gemeinsam mit dem Entwickler des Kunden im Training on the Job eine Anwendung konzipiert Ergebnis: Diese Anwendung war in der Lage war, existierende RPG- Programme anzusprechen und mit ihnen Daten auszutauschen Seiteneffekt: Der Entwickler war im Anschluss in der Lage eigenständig die Anwendung zu erweitern und weitere Legacy-Datenquellen anzubinden. 25
Coaching & Mentoring - Fall Nr. 3 Unsere Applikation, die viele wichtige Kunden einsetzen, ist architektonisch an einem Scheideweg angekommen. Die Applikation ist über die Jahre gewachsen und das Einhalten von Architekturvorgaben wurde nie konsistent überwacht. 26
Coaching & Mentoring - Fall Nr. 3 3 Tage Training und 3 Tage Time & Material Consulting vor Ort 1. Schritt: Vor-Ort-Training Zend Framework Fundamentals für das Entwicklerteam 2. Schritt: Gemeinsame Evaluierung der Applikation Ergebnis: Über 25 Empfehlungen bzgl. der Models, der Datenbank, der Dokumentation, des Unit Testings, des Zend Servers, des Error-Handlings, der Apache-Konfiguration, der ACL-Implementierung etc. Zusätzlich: Die Entwickler konnten im Anschluss problemlos die Applikations-Architektur eigenständig weiter entwickeln 27
Coaching & Mentoring - Fall Nr. 4 Für einen erfolgreichen Projektstart brauchen wir Unterstützung. Wir wollen eine neue Anwendung auf Basis des gesamten Zend-Stacks entwickeln. Die Anwendung soll für 100.000 Anwender bei über 40.000 gleichzeitigen Nutzern arbeiten. 28
Coaching & Mentoring - Fall Nr. 4 10 Tage Time & Material Consulting vor Ort Lösung: Zend Consulting wurde bereits zu Beginn des Projekts beteiligt Ansatz: Implementierung aggressiver Caching-Strategien in die Applikation Außerdem: System- und Code-Integrität wurde in den verschiedenen Phasen des Projekts analysiert und entsprechendes Feedback gegeben. Vor Beginn des Projekts: Installation und optimale Konfiguration der Zend Software auf allen Systemen des Kunden durch einen Zend Consultant 29
Das Maximum aus der Zend Software herausholen
Das Maximum aus der Zend Software herausholen Wir sind unsicher, ob unsere Installation und Konfiguration von Zend Platform sinnvoll ist. aber können wir nicht noch mehr heraus holen? Der Aufruf der aufwändigsten Seite reduzierte sich zwar von 1,5 Sek. auf 180 ms 31
Das Maximum aus der Zend Software herausholen 1 Tag Time & Material Consulting vor Ort Ansatz: Erläuterung der umfangreichen Möglichkeiten der Performance- Optimierung der Zend Software vor Ort durch einen Zend Consultant Optimierung der Konfiguration und des PHP-Codes auf die Kundensituation Ergebnis: Die Rechenzeit der angesprochenen Seite konnte nochmals um über 50% reduziert werden (180 ms 80 ms). Seiteneffekt: Dem Team konnten wertvolle Tipps für das weitere Schreiben performanter PHP-Codes gegeben werden 32
Manchmal ist es gar nicht PHP
Manchmal ist es gar nicht PHP - Fall Nr. 1 Immer, wenn wir einen E- Mail-Newsletter an unsere Kunden schicken, kommen sehr viele Kunden auf unsere Website Leider bricht unter diesem Ansturm regelmäßig unser PHP zusammen und antwortet nicht mehr. 34
Manchmal ist es gar nicht PHP - Fall Nr. 1 Performance Audit Remote Ansatz: Performance Audit Ergebnis: Das unter Windows laufende Kundensystem war bei der Anzahl der erlaubten eingehenden Verbindungen in Bezug auf die Ports limitiert Lösung: Der falsch konfigurierte TCP-Stack wurde neu konfiguriert und das Problem war behoben 35
Manchmal ist es gar nicht PHP - Fall Nr. 2 Unser PHP läuft zu langsam! Der Seitenaufbau in unserer Intranet- Anwendung ist langsam. Bestimmt liegt es daran, dass PHP unter Windows einfach nicht performt. 36
Manchmal ist es gar nicht PHP - Fall Nr. 2 1 Tag Time & Material Consulting vor Ort Ansatz: Profiling der Intranet-Anwendung Lösung: Eingesetzte Datenbank war für den aktuellen Anwendungszweck nicht passend konfiguriert 37
Manchmal ist es gar nicht PHP - Fall Nr. 3 Wir haben ein ganz komisches Problem beim Öffnen von Dateien über PHP Es kommen sehr seltsame Fehlermeldungen, die wir nur auf unserer Produktionsumgebung haben und nicht auf unserem Testsystem 38
Manchmal ist es gar nicht PHP - Fall Nr. 3 1 Tag Time & Material Consulting - Remote Ansatz: Nutzung des Zend Debuggers in Verbindung mit Zend Studio Lösung: Eine PHP-interne Funktion für das Arbeiten mit dem Dateisystem hat unter FreeBSD (Produktion) komplett anders reagiert als unter Linux (Development) trotz gleichem Code und gleicher PHP-Version Resultat: Anpassung des PHP-Codes, da FreeBSD gesetzt war 39
Manchmal ist es gar nicht PHP - Fall Nr. 4 Eigentlich läuft unsere auf PHP basierende Website prima, aber bei vielen Besuchern kann sich manchmal niemand mehr einloggen. Nach einem Neustart des Apache Webservers läuft wieder alles ok, bis die Maschine nach einer halben Stunde wieder still steht. 40
Manchmal ist es gar nicht PHP - Fall Nr. 4 1 Tag Time & Material Consulting - Remote Lösung: Begrenzte Anzahl der Apache-Prozesse. Zusätzlich war die KeepAlive-Time recht hoch. Auf Dauer: Keine neuen Apache-Prozesse stehen zur Verfügung Lösung: Neu-Konfiguration des Webservers Seiteneffekt: Erkennen von Sicherheitsproblemen, die einen Security Audit nachzogen 41
Zend Consulting im Überblick
Vorteile von Zend Consulting Die Zend Consultants haben Zugang zu den Entwicklern von PHP und können nicht nur deshalb mit einem sehr hohen Level an Fachwissen in Bezug auf PHP und LAMP-Umgebungen aufwarten. Der große Erfahrungsschatz wird seit vielen Jahren kontinuierlich ausgebaut. In 2009 wurden z.b. Consulting- Dienstleistungen für mehr als 90 Kunden in den verschiedensten Branchen mit einer großen Vielfalt an Applikationstypen erbracht. Die Zend Consultants setzen intern entwickelte Methodologien und Tools ein, die fortwährend im Laufe der vielfältigen Einsätze optimiert und erweitert werden. 43
Performance Audit Auswahl an Themen, die je nach Kundensituation untersucht werden Identifikation von Applikations- Flaschenhälsen Audit des ausgeführten PHP-Codes selbst Profiling der Skripte / Optimierungspotential der Skripte Wie ist die Performance des Betriebssystems (inkl. Dateisystem)? Ist der Webserver optimal konfiguriert? Was macht die die Datenbank (Query Analyse bzw. -Optimierung)? Untersuchung des ggf. vorhandenen Load Balancings Untersuchung der Caching-Techniken 44
Architecture/Scalability Audit Auswahl an Themen, die je nach Kundensituation untersucht werden Analyse der horizontalen Skalierbarkeit der Applikation Analyse der Skalierbarkeit der eingesetzten Datenbanken Wie gut ist das Session Clustering? Wie gut ist das Load Balancing? Ist die Architektur und Konfiguration des/der Web Server sinnvoll? 45
Security Audit Der Security Audit wird in zwei Abschnitte unterteilt Pre-Audit (1 Tag) Black-Box Test, um einige der offensichtlichen Probleme aufzudecken Kompletter Security Audit (mehrere Tage) Umfassender Security Audit inkl. optionalem Audit des Source-Codes auf Sicherheitslücken 46
Security Audit Auswahl an Themen, die je nach Kundensituation beim kompletten Security Audit untersucht werden Penetration Testing Cross Site Request Forgeries Analyse der PHP-Konfiguration JavaScript Schwachstellen Output Analyse Denial Of Service Analyse Input Filtering Analyse Header Injection SQL Injection Analyse der Skripte Session-Sicherheit Cross Site Scripting Schwachstellen Analyse der Shell Execution Security 47
Zend Audits Vorteile Zum Abschluss erhält der Kunde einen detaillierten, schriftlichen Report mit Empfehlungen: Denn nur wenn die Probleme bekannt sind, kann ein Kunde Entscheidungen bzgl. der nächsten Schritte treffen Nach dem Audit hat der Kunde die freie Wahl, ob er für die Behebung der Probleme weiterhin mit Zend zusammenarbeiten möchte oder lieber mit jemand anderem 48
Custom Consulting Auf Basis von Time & Material, u.a. PHP Applikations-Architektur: Design & Mentoring Zend Framework Applikationen: Design & Mentoring Analyse von Skalierungs- und Performance-Problemen Unterstüzung bei der Integration von Zend Produkten (z.b. Job Queue System-Design, Caching-Optimierung etc.) Audit-Dienstleistungen für Projekte mit mehr als 50K LOC (Lines of Code) 49
Haben Sie Fragen?
Vielen Dank! Kontakt: axel.schinke@zend.com