Content-Management zwischen Standard und Flexibilität
50'000 Inhaltsseiten, 14 Sprachen, 22 Märkte, 400'000 Bilder und Videos: Ein beeindruckendes Mengengerüst für eine Content-Management-Plattform. Peter Burkhalter, Senior Application Engineer, war verantwortlich für den technischen Aufbau und die Weiterentwicklung der komplexen Sitecore-Umgebung. Im Interview erzählt er von Multi-Level-Language-Fallback, anspruchsvollem CDN-Handling und dem detaillierten Go-live-Plan.
Komplexer Multi-Language-Fallback
MySwitzerland.com will sozusagen die ganze Welt für die Schweiz begeistern. Dies stellt extrem hohe Anforderungen an ein Content-Management-System im Bereich Multimarktfähigkeit und Mehrsprachigkeit. Wie einfach lassen sich diese Themen in Sitecore lösen?
Sitecore ist eine mächtige Plattform und bietet grundsätzlich viel Unterstützung, um Sprachen und Regionen zu managen. Zentrales Element ist der Language Fallback. Bei MySwitzerland.com nutzen wir diesen Mechanismus extensiv: Wird ein Inhalt in einer Sprache aufgerufen, in der er nicht existiert, wird der Inhalt automatisch in der definierten «Fallback»-Sprache angezeigt. Bei ganzen Seiten funktioniert das relativ einfach. Wenn es aber um einzelne Teile einer Seite geht wie bspw. Textlinks, die in einer bestimmten Sprache nicht extistieren, kann dies sehr komplex werden.
Um die Matrix von 14 Sprachen und 22 Märkten zu managen, haben wir einen Multi-Level-Language-Fallback aufgebaut. Der Fallback umfasst maximal 3 Levels und funktioniert auf ganzen Seiten aber auch für einzelne Felder. Damit haben wir die Standard-Funktion von Sitecore sicherlich bis zum Äussersten ausgereizt.
Und welchen Herausforderungen seid ihr beim Language Fallback begegnet?
Das Handling von so vielen Sprachen stellt grosse Anforderungen an die Performance. Bei jedem Bild, jedem Wort und jeder Komponente wird über mehrere Stufen überprüft, in welcher Sprache der Content verfügbar ist. Diese Herausforderung lösen wir, indem wir vieles der Indexierung überlassen. Bereits beim Speichern und Publizieren von Content läuft ein Cache Ahead. So können Szenarien vorberechnet und Ladezeiten optimiert werden.
Allerdings besteht immer ein Trade-off zwischen der Performance beim Abrufen und der Performance beim Speichern und Publizieren durch die Autorinnen und Autoren. Wir müssen deshalb immer abwägen, wo wir den grösseren positiven Impact haben, wenn wir Berechnungen vor- oder nachlagern.
Konntet ihr also alles mit dem Standard-Baukasten von Sitecore lösen?
Nein, an einigen Orten müssen wir mit Custom Code eingreifen, damit es den Anforderungen von Schweiz Tourismus entspricht und auch genügend performant ist. Den Language Fallback haben wir beispielsweise mit einem eigenen Konstrukt ergänzt: Es gibt für jede Seite ein Feld, das «Allowed Languages» heisst. Darin können die Autorinnen und Autoren oder das System definieren, in welcher Sprache und in welchem Markt dieser Inhalt angezeigt werden darf. Damit übersteuern wir gewissermassen den Language Fallback in speziellen Fällen. Dies ist ein technisch extrem anspruchsvolles Konstrukt und erweitert die Sitecore-Funktionalität durchgängig.
Flexible Contentaufbereitung
Die Autor:innen haben also ganz viel Freiräume bei der Contentaufbereitung.
Die Contentbewirtschaftung bei Schweiz Tourismus ist sehr agil und dynamisch. Bis zu 50 Autorinnen und Autoren sind weltweit verteilt und publizieren rund um die Uhr Content. Deshalb müssen die Autorenserver 24/7 zur Verfügung stehen. Sitecore unterstützt die Contentaufbereitung mit spezifischen Workflows, Check-Out-Prozessen, Freigabeprozessen und einem komplexen Berechtigungssystem. Die Autorinnen und Autoren sind sehr flexibel. Sie können Content individuell auf Sprachen und Märkte abstimmen. Dies bedingt allerdings ein grosses Bewusstsein für die Sprachvielfalt: Sie müssen sich immer überlegen, für welche Märkte der Content, den sie erfassen, relevant ist.
Die Übersetzung in so viele Sprachen ist ein riesiger Aufwand und wichtiger Faktor für die Time-to-Market. Wie wurde der Übersetzungsprozess implementiert?
Das Redaktionsteam kann dank dem nahtlos integrierten Übersetzungsmodul Lionbridge direkt im Content-Management-System Übersetzungen auslösen und überwachen. Sobald die Übersetzung vorliegt, wird der Text vollautomatisch im CMS hinterlegt und kann dort von der Autorin oder dem Autoren überprüft und freigegeben werden. Dies verkürzt die Time-to-Market für Content massiv.
Und wie stellt ihr sicher, dass die User:innen den Content in der für sie richtigen Sprache erhalten?
Wir versuchen für neue User so gut wie möglich herauszufinden, welches die richtige Sprache und der richtige Markt ist. Dafür haben wir einen speziellen Mechanismus: Wir arbeiten mit einer spezifischen Geolocation, die basierend auf den Browsereinstellungen und der IP-Adresse den User so genau wie möglich identifiziert.
Multi-CDN-Lösung
Die Besucher:innen von MySwitzerland.com stammen aus der ganzen Welt. Welche Vorkehrungen habt ihr getroffen, um diese speziellen Anforderungen an die Performance sicherzustellen?
Um die Verfügbarkeit sicherzustellen und die Response Time auf der ganzen Welt möglichst gering zu halten, setzen wir auf eine Multi-CDN-Lösung mit Fastly und Quantil. Diese beiden CDNs managen wir über eine Schnittstelle von Cedexis.
Mit Quantil haben wir für China ein dediziertes CDN evaluiert, welches erlaubt, Inhalte auf dem chinesischen Festland zu speichern und somit hinter der «Great wall of China» auszuliefern. Hierzu musste eine spezifische ICP-Lizenz beantragt und es mussten diverse technische Anpassungen im Frontend und Backend vorgenommen werden, so dass keine Google- und Facebook-Lösungen eingesetzt werden.
Wie managt man eine solch vernetzte Architektur?
Beim CDN-Handling gab es mehrere technische Knackpunkte, die wir mit Custom Code lösen mussten, um in Standard-Sitecore-Automatismen einzugreifen:
Eine besondere Herausforderung ist die Identifikation des Traffics, der über die CDNs zu uns kommt. Wir haben einen Custom http Header eingebaut zur Identifikation von Requests, die über ein CDN zu uns kommen. Einen zweiten Custom http Header haben wir eingeführt zur Identifikation von Client-IP-Adressen.
Genauigkeit und Performance sind zwei zentrale Treiber beim Management der CDNs. Eine weitere Herausforderung ist deshalb die Invalidierung von Content auf dem CDN. Zu diesem Zweck haben wir einerseits eine regelbasierte Logik zum Managen des «Shared Max Age» entwickelt. Sie definiert, wie lange eine Seite auf einem CDN gültig ist, und ist komplett anpassbar für das Redaktionsteam von Schweiz Tourismus: Es kann das Shared Max Age individuell für Seitentypen, einzelne Seiten oder Contentteile über die Rules Engine von Sitecore steuern. Damit stellen wir sicher, dass möglichst aktuelle Daten auf dem CDN sind, reduzieren aber gleichzeitig die Anzahl Requests auf dem Delivery-Server.
Entspannter Go-live
Was sind deine Learnings aus dem Go-live ? Welches Erlebnis ist dir besonders geblieben?
Für mich haben sich anlässlich des Go-lives zwei Erfolgsfaktoren herauskristallisiert:
Der erste Erfolgsfaktor ist der Zusammenhalt im Team: Es war unglaublich, wie alle am gleichen Strick gezogen haben. Das ist in einem so grossen Projekt mit so vielen verschiedenen Disziplinen nicht selbstverständlich. Über Länder- und Fachgrenzen hat man sich unterstützt und stets pragmatische Lösungen gesucht. Wir konnten uns hundert Prozent aufeinander verlassen. Jede:r hat sich stets überlegt, was das Beste fürs Projekt ist, und Partikularinteressen aussen vor gelassen.
Der zweite Erfolgsfaktor ist die detaillierte Planung des Go-lives: Alle Stakeholder waren in diesen Prozess involviert. Jede Person wusste genau, was sie beitragen muss, und alle Eventualitäten wurden berücksichtigt: Wer macht wann was, welche Entscheidungen müssen wann gefällt werden, was sind die Entscheidungsgrundlagen. Diesen Plan haben wir 1:1 auf der Integrationsebene getestet inklusive Rollback-Szenario. Voraussetzung dafür war, dass die technische Integrationsebene identisch mit der Produktionsebene aufbaut ist: Derselbe Content, die gleichen Zugriffe, das gleiche Security-Konzept, die gleichen Ressourcen, die gleichen CDNs. Das ist zwar kostspielig, bedeutet aber eine enorme Risikominimierung.
Alle diese Faktoren haben zu einem sehr entspannten Go-live-Prozess geführt. Es gab keine hektischen Entscheidungen, weil wir alles bereits vorausgedacht haben. Mit dieser Sicherheit konnten wir im Entwicklungs- und Architektur-Team nur wenige Stunden vor dem Go-live einwilligen, ein neues Build mit einem neuen Feature zu integrieren, das für Schweiz Tourismus zentral war. Diese Flexibilität wurde von den Kund:innen sehr geschätzt.
Kontakt für Ihre digitale Lösung mit Unic
Termin buchenSie möchten Ihre digitalen Aufgaben mit uns besprechen? Gerne tauschen wir uns mit Ihnen aus.
Wir sind da für Sie!
Termin buchenSie möchten Ihr nächstes Projekt mit uns besprechen? Gerne tauschen wir uns mit Ihnen aus.