Peter Burkhalter, Senior Application Engineer, Unic
Magazin & Blog

MySwitzerland.com: 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 Autorinnen und Autoren 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.

Übersetzungsprozess. Quelle: Schweiz Tourismus
Übersetzungsprozess. Quelle: Schweiz Tourismus

Und wie stellt ihr sicher, dass der User den Content in der für ihn richtigen Sprache erhält?

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 Besucherinnen und Besucher 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.

Multi-CDN-Lösung. Quelle: Schweiz Tourismus
Multi-CDN-Lösung. Quelle: Schweiz Tourismus

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:

  1. 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. Jeder und jede hat sich stets überlegt, was das Beste fürs Projekt ist, und Partikularinteressen aussen vor gelassen.
  2. 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 vom Kunden sehr geschätzt.

Interview MySwiterland.com

Experten-Blog MySwitzerland.com: Eine Architektur wie ein Schweizer Uhrwerk

MySwitzerland.com beeindruckt mit einer unglaublichen Reichhaltigkeit an Informationen zum Reiseland Schweiz. Die vernetzte Content-Hub-Plattform mit zahlreichen Daten-Import und -Export-Schnittstellen zu Umsystemen funktioniert wie ein Schweizer Uhrwerk. Daniel Rey, Expert Application Architect, hat die Konzeption und Realisierung der technischen Architektur verantwortet. Im Interview erzählt er, welche Überlegungen zur Lösung geführt haben und wie die verschiedenen Systeme zusammenspielen.

Unsere Casestudy zur neuen Website von Schweiz Tourismus

Schweiz Tourismus Verliebt in die Schweiz

Für MySwitzerland.com sind wir verantwortlich für die technische Konzeption und Architektur, die komplexe Backend-Entwicklung und die Integration der bestehenden Umsysteme sowie den Betrieb und das georedundante Hosting der Infrastruktur. Für das Projekt haben wir einen Sitecore Experience Award 2020 gewonnen!