Anforderungen und Umsetzung – Ein Erfahrungsbericht: Handy-Shop mit TYPO3
Im Jahr 2007 manifestierte sich bei der _dug telecom ag der Wunsch nach einer Ablösung der bestehenden, auf OScommerce basierenden Online-Shop-Lösung, und man begann mit der Entwicklung eines eigenen Shop-Systems. Dieses sollte einerseits genau auf die Bedürfnisse der Mobilfunkbranche zugeschnitten sein und andererseits eine Basis für beliebige Shop-Installationen bilden. Neben dem Shop-Relaunch sollten auch gleichzeitig die eigenen Unternehmensseiten konsolidiert werden.
Die Entscheidung fiel auf die Agentur Votum media und damit zugunsten einer auf TYPO3 basierenden Lösung. Dafür sprachen zum einen die bisherigen positiven Erfahrungen der _dug telecom ag mit Open-Source-Technologien, zum anderen aber auch die technischen Features von TYPO3. Die Möglichkeiten der dynamischen Generierung von Produktabbildungen, das solide TYPO3-eigene Caching, die Möglichkeit der XML-Verarbeitung, das umfangreiche Angebot an bestehenden Extensions und nicht zuletzt die flexible Erweiterung des Grundsystems durch beliebige eigene Extensions waren ausschlaggebend für die Entscheidung. Eine weitere, wenn auch untergeordnete, Rolle spielten die CMS-Funktionalitäten von TYPO3 für die Pflege der Unternehmensseiten.
Shop mit serviceorientierter Architektur im Backend
Das zu implementierende TYPO3-System sollte im Wesentlichen das Frontend für ein zugrunde liegendes Shop-System mit serviceorientierter Architektur (SOA) bilden. Das System ist eine komplette Eigenentwicklung und wurde speziell an die Bedürfnisse der Mobilfunkbranche angepasst. So müssen neben den klassischen Artikeln eines Shops auch die unterschiedlichen Provider und Tarife mitverwaltet werden können. Eine weitere Besonderheit der Branche ist, dass vielen Artikeln mehrere Zubehörartikel zugeordnet sind. Allein die Möglichkeiten der Preisgestaltung inklusive Rabattmöglichkeiten und Sonderaktionen sprengen schon den Rahmen des durchschnittlichen Shop-Systems.
Das Gesamtsystem umfasst daher eine Vielzahl an Einzelsystemen, die als Services zur Verfügung stehen und größtenteils in PHP und Delphi, vereinzelt auch in Java, implementiert sind. Die Kommunikation der einzelnen Services untereinander erfolgt über ein eigenes SOAP-ähnliches Protokoll via XML.
White-Label-Shop mit TYPO3 als Frontend
Ausgehend von den Vorgaben durch das bestehende Shop-System ergaben sich klare Anforderungen an die Implementierung des Frontends mit TYPO3. Es sollte eine White-Label-Applikation entwickelt werden, die durch geringen Anpassungsaufwand für jede Art von Online-Shop verwendbar ist. Für das Shop-Frontend – und damit die TYPO3-Installation – sollten für eine Designanpassung lediglich neue HTML-Templates und eine Änderung der Konfiguration nötig sein, um zusätzlichen Programmieraufwand möglichst komplett zu vermeiden.
Dafür bedurfte es einerseits einer strikten Trennung von Darstellung und Logik durch sauberes Templating in den zu entwickelnden Frontend-Plugins, andererseits musste die Möglichkeit einer zentralen Konfiguration des Shops gegeben sein.
TYPO3 bot an dieser Stelle mehrere Lösungsansätze für die Anforderungen: Die TYPO3-eigene Konfigurationsdatei „localconf.php“ konnte genutzt und um eigene Konfigurationsparameter erweitert werden. Für diese Variante sprach, dass sich die Konfiguration relativ bequem über das Install-Tool oder, bei einzelnen Extensions, über den Extension-Manager vornehmen lässt. Zusätzlich besteht noch die Möglichkeit, die Konfigurationsdatei mit Skripten auszulesen oder selbst Werte zu setzen. Dieser Punkt gewann im Hinblick auf ein späteres automatisiertes Deployment der Shop-Installation besonders an Gewicht. Gegen die Nutzung der zentralen Konfigurationsdatei sprach allerdings die Durchmischung mit der TYPO3-eigenen Konfiguration, die im Gegensatz zu einer reinen Konfiguration des Shop-Frontends höhere Ansprüche an den Administrator stellt.
Die zweite Möglichkeit bestand in der Nutzung des Constant-Editors und TS-Constants, um die Konfiguration bequem über das TYPO3-Backend vornehmen zu können. Ein Vorteil dieses Ansatzes ist die Nutzerfreundlichkeit für den Administrator, der das Shop-Frontend einrichtet: Es lassen sich sämtliche Konfigurationsmöglichkeiten in einem speziell darauf zugeschnittenen Backend-Formular darstellen. Ein Nachteil dieser Variante ist allerdings die recht aufwändige Bearbeitung der Konfiguration durch Skripte, da die Parameter in einer Datenbank und nicht in Dateien gespeichert werden.
Alternativ dazu gab es noch die Möglichkeit der Nutzung eigener Konfigurationsdateien in Verbindung mit einem eigenen Backend-Modul zur Konfiguration des Shop-Frontends. Die Nachteile der beiden vorher genannten Ansätze gibt es bei dieser Variante zwar nicht, allerdings ist es auch der aufwändigste Ansatz.
Die Wiederentdeckung des Constant-Editors
Letztendlich entschied sich Votum media für eine Nutzung der TYPO3-eigenen Möglichkeiten. Die Lösung war eine Kombination aus der Nutzung der zentralen TYPO3-Konfigurationsdatei und des selten genutzten Constant-Editors im Backend. Damit
wurde versucht, sämtliche Frontend- und Template-spezifischen
Konfigurationen über TS-Constants abzubilden. Es lassen sich sämtliche Einstellungen komfortabel über den Constant-Editor anpassen.
Die Konfiguration des Backends und der Kommunikation mit dem zugrunde liegenden Shop-Framework erfolgt dagegen ausschließlich in der zentralen TYPO3-Konfigurationsdatei, wobei einige wesentliche Parameter auch direkt über Formularfelder im Backend gesetzt werden können. So lassen sich beispielsweise die URLs der angesprochenen Services sowie Logging- und Debugging-Funktionen in der Konfiguration der zentralen Service-Extension im Extension-Manager verwalten. Die gesetzten Werte werden direkt in die zentrale TYPO3-Konfigurationsdatei übernommen.
Zentrale Extension erleichtert Fehlersuche
Zur Abbildung der speziellen Anforderungen war die Entwicklung von acht eigenen Extensions nötig, die für die Darstellung des Shops und die Kommunikation mit dem Backend zuständig sind. Die systemeigene PHP-Client-API wurde in einer eigenen Service-Extension gekapselt, die sämtliche Shop-Funktionen für alle anderen Extensions zur Verfügung stellt. Im Verlauf des Projekts ermöglichte dieser Ansatz eine effiziente Entwicklung: Eine Reihe von kleineren Änderungen an der Client-API konnten direkt mit der zentralen Service-Extension abgefangen werden.
Mit der Zeit entwickelte sich aus dieser Extension das Herzstück des gesamten Frontends, das neben einer umfangreichen Klassenbibliothek noch mächtige Funktionen für das Debugging und die Performance-Messungen enthält. Die schnelle Eingrenzung von Fehlern auf das verursachende System kam nicht nur den Entwicklern von Votum media, sondern letztendlich auch den Entwicklern auf Kundenseite bei der Optimierung des Gesamtsystems zugute. Neben den umfangreichen Extensions für die Katalogdarstellung und den Bestellprozess sind ein Handy-Vergleich und ein Tarifberater weitere Highlights des Systems.
Mehrere zehntausend Seiten aus dem Cache
Die Basis für eine gute Performance des Shops auch bei hoher Last bildet neben der flexibel skalierbaren Serverarchitektur der Frontend-Cache. Ein ungecacheter Aufruf einer Produktdetailseite benötigt aufgrund der Komplexität der Shop-Architektur zwischen einer und drei Sekunden. Deshalb soll ein Shop-Kunde idealerweise immer eine gecachete Seite geliefert bekommen, deren Aufruf lediglich 100 bis 200 Millisekunden dauert.
Redaktionelle Updates werden lediglich einige Male im Monat zu besucherarmen Zeiten durchgeführt. Nach jedem erfolgten Update wird ein Ruby-Skript als Crawler angestoßen, das den Frontend-Cache komplett wiederaufbaut.
Die vom Crawler zu durchlaufende Seitenanzahl ist dabei nicht zu unterschätzen. Bei drei Farbvarianten und sechs möglichen Netzanbietern mit zum Teil mehr als 30 verschiedenen Tarifen ergeben sich pro Handy weit über 500 verschiedene Produktdetailseiten für ein einzelnes Gerät. Insgesamt kommen bei ungefähr 60 angebotenen Mobiltelefonen mehrere 10.000 Seiten zusammen.
Fazit
In diesem Projekt wurde deutlich, dass TYPO3 als CMS und grundsolides Web-Framework seine Stärken im Bereich hochwertiger und komplexer E-Commerce-Plattformen ausspielen kann. Die Vorzüge von Features wie dem Constant-Editor, dem performanten Frontend-Caching und den verschiedenen Arten von Extensions zeigen sich gerade in größeren Projekten. Mit der nahtlosen Integration von TYPO3 in eine serviceorientierte Anwendungsarchitektur ist die Umsetzung eines modernen, anwenderfreundlichen und sicheren Shop-Frontends gelungen.