Nächste Woche startet das Frühjahrsfachgespräch 2013. Wir verkürzen Euch (und uns) nun die Wartezeit und stellen einige der Referenten & Themen, die Euch in Frankfurt erwarten, im GUUG-Blog vor. Nach Erkan Yanar, Udo Seidel und Martina Diel geht es heute mit Stefan Neufeind weiter, den viele von Euch von vergangenen FFGs kennen werden. Ich habe mit ihm über seinen diesjährigen Vortrag gesprochen.
Stefan, Hochverfügbarkeit – also absolut zuverlässiges Arbeiten von Webservern besonders in Spitzenzeiten – ist ein Top-Thema auf dem FFG. Du stellst dazu in Deinem Vortrag das Caching-Tool Varnish vor. Wie arbeitet Varnish und wie bewährt es sich – Deiner Erfahrung nach – in der Praxis?
Als klassischen Proxy mit eingebauter Caching-Funktionalität werden viele sicherlich als erstes an Squid denken, welcher grundsätzlich auch als Reverse-Proxy, also vor einem Webserver betrieben werden kann. Auf Grund seiner Historie und Funktionsvielfalt hat sich in unserer Praxis jedoch gezeigt, dass ein auf diesen Einsatzzweck spezialisiertes Werkzeug klare Vorteile bringt.
Varnish ist vom Konzept her auf die Aufgaben als Proxy vor einem Webserver ausgerichtet und optimiert. Es meistert seine Aufgaben auch unter Last zuverlässig und performant. Zu den Grundfunktionen von Varnish gehören die Verwaltung von Verbindungen, speziell auch z. B. bei Verwendung von HTTP-Keepalives, das Beantworten von Anfragen aus dem Cache und bei Bedarf ein intelligentes Durchreichen von Anfragen an Backends, die eigentlichen Webserver. Die Konfiguration, z. B. welche Inhalte wie lange gecached werden dürfen oder anhand welcher Eigenschaften Anfragen gecached werden sollen, lässt sich flexibel anpassen. Beispielsweise ist es möglich nur gewünschte Headerzeilen oder Cookies durchzulassen, so dass Anfragen möglichst „ähnlich“ sind und effektiv gecached werden können. Auch können Anfragen anhand bestimmter Merkmale an spezielle Backend-Server weitergeleitet werden – etwa Anfragen für statische Inhalte an hierfür optimierte Webserver-Prozesse.
Durch den gezielten Einsatz von z. B. Varnish lassen sich eine Vielzahl von Requests bereits vor den Webservern performant beantworten. In Kundenprojekten ließen sich hier teilweise Cache-Hits von 95% und mehr realisieren. Die verbleibenden Anfragen können intelligent an die Backends weitergereicht werden. Im Ergebnis werden Anfragen wesentlich schneller beantwortet und die Backend-Server können sich auf die eigentliche Business-Logik konzentrieren.
Die Performance des Webservers steigt also – aber bekommen meine Blogleser und Website-Besucher auch immer die aktuellsten Beiträge angezeigt?
Dies lässt sich über verschiedene Wege erreichen – abhängig davon, wie viel Einfluss man auf die zu cachende Applikation hat bzw. wie stark man per Konfiguration auf deren spezifische Bedürfnisse optimieren möchte/kann.
Der einfachste, aber zugleich auch nicht allzu optimale Ansatz wäre es je nach Inhalten für bestimmte Elemente kurze Cache-Haltezeiten von beispielsweise wenigen Minuten zu definieren. Auch könnte man bei den Backend-Systemen eine Last-Modified-Abfrage auslösen und Cache-Inhalte ausliefern sofern diese noch gültig sind.
Schon eine Stufe besser wäre es, bei bestimmten Anfragen – wie etwa dem Abschicken eines Blog-Kommentars – einzelne Cache-Inhalte für ungültig zu erklären.
Sofern man Einfluss auf die Applikation hat, kann diese dem Cache sogar aktiv signalisieren, welche Inhalte des Cache aktualisiert wurden. Hier kann die Applikation zusammen mit den Inhalten auch „Tags“ ausliefern und anhand dieser dann eine ganze Reihe von Inhalten über eine einfache Abfrage aus dem Cache entfernen.
Du bist ein seit Jahren anerkannter TYPO3-Experte – ich nehme also an, Varnish harmoniert besonders mit TYPO3?
Beim Einsatz zusammen mit einem CMS-System ist es häufig gewünscht, dass durch einen Redakteur mit wenigen Mausklicks geänderte Inhalte möglichst zeitnah auf der Website erscheinen. Für TYPO3 existiert ein Modul, welches die aktive Benachrichtigung an Varnish bei geänderten Inhalten übernimmt. Dies ermöglicht die Verwendung langer Cache-Haltezeiten und die selektive Löschung bei Änderungen. Je nach verwendeten Inhalten/Modulen ist eine entsprechende Konfiguration TYPO3-seitig notwendig um ein entsprechendes Cache-Verhalten möglichst optimal auszunutzen – eine geeignete Knobelaufgabe für TYPO3-Experten 🙂
Kommen wir mal auf das FFG zu sprechen: Du hast die GUUG-Konferenz schon in den vergangenen Jahren besucht bzw. Vorträge gehalten. Was schätzt Du am FFG bzw. der GUUG?
Im Rahmen der GUUG und speziell auch des FFG kommen eine Vielzahl von Experten der unterschiedlichsten Disziplinen zusammen. Viele teilen eine Begeisterung für Details, verfügen über praktische Erfahrung auf ihrem Gebiet und haben Spaß, daran jenes Wissen weiterzugeben sowie sich mit anderen auszutauschen. Hierbei stehen auf technischer Seite oft offene und flexible Systeme im Vordergrund. Der Austausch mit Besuchern des FFG und Kollegen ist für mich wichtig, bringt neue Sichtweisen und Ideen hervor – oder man knüpft Kontakte zu verwandten Ansätzen und Projekten.
Stefan, vielen Dank für das Gespräch – wir sehen uns zu Deinem Vortrag am Freitag, d. 1. März um 16 Uhr. (Mehr Infos –>)
Interview: Corina Pahrmann