• Werbung

    Unabhängige Unterstützung beim Software Audit U-S-C GmbH aus München.
  • Vor- und Nachteile einer Individualentwicklung gegenüber OpenSource-CMS – 3

    12. XML-Dateien für Übersetzungen
    Die Übersetzung von Texten, die innerhalb von Extension für verwendet werden, sind in XML-Dateien Organisiert. Das hat zur folge, dass diese nicht direkt vom Redakteur oder Übersetzer bearbeitet werden können. Hierfür ist zwar ein Plugin verfügbar, jedoch ist die Bedienbarkeit dieses Plugins nicht optimal. Die Übersetzungen müssen vom Redakteur nacheinander eingegeben werden. Es ist nicht möglich, einen Text gleichzeitig in diverse Sprachen übersetzt einzugeben. Innerhalb unserer Individualentwicklung haben wir alle verwendeten Texte in einer Datenbanktabelle abgelegt. Diese wird über einen Memcache zwischengespeichert, wodurch wir die Performance zusätzlich erhöhen. Die gesamte Übersetzung der Texte erfolgt innerhalb des Backends durch den Redakteur. Eine Suchfunktion und direkte anzeige aller Übersetzungen hilft dabei, den gewünschten Text schnell und effektiv zu finden.

    13. Server
    Die Webserver, die in einer Amazon-Cloud in Irland gehostet sind, werden entsprechend über ein Amazon Loadbalancing angesprochen. Vor den Webservern ist jeweils ein Varnish-Cache vorgeschaltet, der die meisten CSS- und JS-Dateien sowie Icons zwischenspeichert. Die Datenbanken sind analog dazu gleichermaßen verteilt. Es gibt eine Master-Datenbank, die für Schreibzugriffe verwendet, also überwiegend über das redaktionelle Backend angesprochen wird. Dazu ist derzeit eine Read-Only Datenbank geclustert, um die Performance zu erhöhen. Das System lässt sich sowohl seitens der Server als auch im sehr einfach um eine Datenbank erweitern. Die Datenbanken werden alle in einer Konfiguration erfasst und per Zufallszahl wird eine Verbindung ausgewählt. Für den Memcache haben wir uns auf einen einzigen Memcache-Server verständigt, wobei es einfach möglich wäre, weitere Server einzubinden, sollte die Auslastung der Server dies Erfordern. Des weiteren haben wir das System so konzipiert, dass der Ausfall des Memcaches das Portal lediglich verlangsamt, aber nicht zu Fehlern oder gar Unerreichbarkeit führt. Solle die Verbindung zu einer Datenbank fehlschlagen, wird eine andere Verbindung versucht. Das Amazon Loadbalancing reagiert entsprechend der aktuellen Situation, sollte ein Webserver nicht mehr erreichbar sein. Dadurch ist gewährleistet, dass das Portal bei Ausfall eines Webservers, eines Datenbankservers oder des Memcaches auch weiterhin erreichbar ist. Die Konfiguration eines TYPO3-Systems per Extensions dahingehend zu erweitern, dass es mehrere Datenbankverbindungen unterstützt, wovon nur eine für Schreibzugriffe verwendet werden kann, ist nahezu unmöglich, da die Verbindung zur Datenbank als globale Variable im System zur Verfügung steht und an diversen Stellen darauf zugegriffen wird. Man müsste also alle Vorkommen dieser Verbindung separat anpassen und sicherstellen, dass keine Abhängigkeit Vergessen wurde.

    14. Performance
    WordPress ist für eine derartige Umsetzung nicht ausgelegt und könnte die Anforderung der Besucherzahlen grundlegend nicht erfüllen. Die Tag-Cloud und nicht öffentliche Post sind nicht Performanceoptimiert implementiert. Auch Bilder werden in der Datenbank gespeichert (deren Pfad und Metadaten). Ungünstigerweise findet hier keine Trennung der Bilder, Vorschaueinträgen und den Live-Inhalten statt. Bei TYPO3 besteht hier ein ähnliches Problem. Gelöschte und versteckte Einträge sind zwischen den Live-Inhalten in der Datenbank gespeichert. Die Flexibilität des Systems hinsichtlich der geforderten Skalier- und Erweiterbarkeit wurde somit sichergestellt. Hierbei wurde auf den Einsatz von insgesamt vier Subdomains gesetzt: www für Webinhalte an sich, den HTML-Code. Die Subdomain css für CSS-Dateien und im CSS verknüpfte Bilder, welches in der Regel kleine Icons oder Hintergrundgrafiken sind. Diese ändern sich selten, haben eine sehr geringe Dateigröße und werden daher direkt über den Webserver ausgeliefert. Eine weitere Subdomain js ist für Javascript zuständig. Diese liefert JS-Dateien und eine swf-Datei, welche für den verwendeten Videoplayer benötigt wird. Die vierte Subdomain img liefert nur die Bilder und Videos, die im Amazon S3-Storage gespeichert sind. Diese Subdomain wird direkt von Amazon bedient und verursacht somit keinen Traffic und keine Last auf den eigentlichen Webservern.

    15. Caching
    Durch ein Caching-System, welches pauschal alle Datenbankabfragen zwischenspeichert und diverse systemrelevante Daten im Cache vorhält, z.B. die Konfiguration und Übersetzungen, sind pauschale Datenbankverbindungen unnötig. Häufig abgerufene Seiten werden fast ausschließlich über Caches ausgeliefert. Dadurch wird ein Maximum an erreicht.

    16. Sessions
    Die Session Verwaltung wurde per Memcache realisiert, um diese zentral abhandeln zu können. Dadurch stehen User-Sessions auf allen Servern zur Verfügung, und das Loadbalancing muss hierfür nicht speziell konfiguriert werden. Für den Memcache haben wir uns ebenfalls aus Performance-Gründen entschieden, da Datenbank und Dateisystem deutlich langsamer arbeiten.

    17. Bessere Suchfunktion
    Innerhalb der Individualentwicklung kann eine bessere Suchfunktion, im Frontend sowie im Backend implementiert werden, da die Felder und deren Relevanz für die Suche klar definiert sind. Innerhalb eines fertigen CMS ist dies nur bedingt der Fall, da die Felder nicht alle gleich wichtig, bzw. mit unterschiedlichen Daten befüllt sind. Bei TYPO3 wird die fertig generierte Seite für die Frontendsuche in einer separaten Datenbanktabelle gespeichert. Diese wird über die Suchfunktion abgefragt und die verknüpfte Seite wird in der Suchergebnisliste angezeigt. Dadurch ist es nicht mehr möglich, z.B. Titel oder Überschrift der Seite bei der Errechnung der Relevanz stärker zu gewichten. Für das Frontend haben wir zusätzlich Filter nach Datum und Kategorie implementiert um dem User das Auffinden eines bestimmten Eintrags zu erleichtern.

    nächster Teil

    Dieser Beitrag wurde unter Sonstiges abgelegt und mit , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.