50,000 content pages, 14 languages, 22 markets, 400,000 images and videos: These are impressive quantities for a content management platform. Peter Burkhalter, Senior Application Engineer, was in charge of technical design and the adaptation of the complex Sitecore environment for MySwitzerland.com. In this interview, he talks about multi-level language fallbacks, sophisticated CDN handling and a detailed go-live plan.
Complex Multi-language Fallback
MySwitzerland.com essentially wants to make the whole world fall in love with Switzerland. This places high demands on the content management system in terms of multi-market capabilities and multilingual content. How easy is it to implement this in Sitecore?
Sitecore is a powerful platform and offers impressive support for the management of languages and regions out of the box. The core element is the language fallback feature. We make extensive use of this mechanism on MySwitzerland.com: If content is retrieved in a language in which it doesn’t exist, it is automatically displayed in the pre-defined fallback language. For full pages, this is fairly simple. But if we are looking at individual page elements, such as text links that do not exist in a certain language, things can get pretty complex.
To manage the matrix of 14 languages and 22 markets, we set up a multi-level language fallback mechanism. The fallback covers a maximum of 3 levels and works for full pages, but also for individual fields. I’m sure we pretty much exhausted the standard Sitecore functionality with that.
What are the challenges you encountered when you set up the language fallback?
Handling so many languages is a challenge in terms of performance. For every image, word and component, we perform a multi-level check to identify the languages in which the content exists. This is a challenge we mastered by leaving a lot to indexing. We use ahead caching when content is saved and published. This way, scenarios can be pre-computed and load times can be optimised.
However, there is always a trade-off between the performance at retrieval and the performance when authors save and publish content. That is why we always have to evaluate where we can generate a greater positive effect by computing up- or downstream.
So, were you able to solve it all with out-of-the-box Sitecore features?
No, in some places we had to add custom code to meet the requirements of Switzerland Tourism and keep the system performing well. For instance, we created an addition to the language fallback: Every page has a field called “Allowed Languages”. Authors or the system can use this to define in which language and in which market the content may be displayed. This allows us to overwrite the language fallback in specific cases. It is a very sophisticated technical creation and a general addition to the Sitecore functionality.
Flexible Content Editing
So, authors have a lot of freedom in their content editing.
The content management at Switzerland Tourism is very agile and dynamic. Over 50 authors publish content around the clock and around the world. That is why the author servers need to be available 24/7. Sitecore supports content editing with specific workflows, check-out processes, approval processes and a complex rights system. The authors have a lot of flexibility. They can tailor content to certain languages and markets. This, however, requires an awareness of the multilingual environment: They always have to consider for which markets the content entered by them is relevant.
The translation into so many languages is a herculean task and a major factor for the time to market. How did you implement the translation process?
Thanks to the seamless integration of the Lionbridge translation module, the editorial team can trigger and monitor translations directly in the content management system. As soon as the translation is available, the text is automatically fed into the CMS and can be checked and approved by the author. This significantly shortens the time to market for content.
And how do you ensure the user receives the content in the right language?
For new users, we try to identify the right language and right market as best we can. We have a special mechanism for this: We work with a specific geolocation which identifies the user as accurately as possible, based on their browser settings and IP address.
Visitors to MySwitzerland.com come from all over the world. What provisions did you make to meet the performance requirements?
To ensure availability and keep response times low everywhere in the world, we chose a multi-CDN solution with Fastly and Quantil. We manage these two CDNs via a Cedexis interface.
We evaluated Quantil as a dedicated CDN for China, which allows us to host content on the Chinese mainland and serve it from behind the “Great Firewall of China”. To make this possible, we had to file for a specific ICP license and make certain technical adjustments in the frontend and backend to ensure that no Google or Facebook solutions were being used.
How do you manage such intricate architecture?
With the CDN handling, there were several technical obstacles we had to solve with custom code to change default Sitecore automations:
A particular challenge is in identifying the traffic we get via the CDNs. We built in one custom http header to identify requests we receive via a CDN. We introduced a second custom http header to identify client IP addresses.
Accuracy and performance are two key drivers in CDN management. That is why the invalidation of content in the CDN is another challenge. For this purpose, we built in rule-based logic to manage the “shared max age”. This determines how long a page remains valid in a CDN and can be adapted by the Switzerland Tourism editorial team: They can define the shared max age individually for page types, specific pages or content parts via the Sitecore rules engine. This way, we ensure that the data in the CDN remains current and at the same time reduce the number of requests to the delivery server.
What did you take away from the go-live? Any events or incidents that stayed with you?
There are two success factors that I learned about during the go-live:
The first success factor is team spirit:
It was incredible how everyone pulled together. This is not something I take for granted in such a large project with so many different disciplines. There was a lot of mutual support across national borders and specialisations, and the team always tried to find a pragmatic solution. We could rely on one another one hundred per cent. Everyone always focused on what is best for the project and set aside particular interests.
The second success factor is a detailed plan for the go-live:
All stakeholders were involved in this process. Everyone knew exactly what they had to contribute, and we were prepared for all contingencies: Who does what when, which decisions need to be made when, and what the criteria are for each decision. We tested the exact same plan to the last detail on the integration level, including a rollback scenario. A precondition was to have a technical integration level which is set up identically to the production level. The same content, the same accesses, the same security concept, the same resources, the same CDNs. This is costly, but it considerably mitigates the risk.
All these factors led to a very relaxed go-live process. There were no frantic decisions because we had anticipated and planned everything. Knowing this, the development and architecture team were able to agree just hours before the go-live to integrate a new build with a new feature that was central for Switzerland Tourism. Our customer very much appreciated the flexibility.
Contact for your Digital Solution with UnicBook an appointment
Are you keen too discuss your digital tasks with us? We would be happy to exchange ideas with you: Jörg Nölke and Gerrit Taaks (from left to right).
Contact for your Digital SolutionBook an appointment
Are you keen to talk about your next project? We will be happy exchange ideas with you: Melanie Klühe, Stefanie Berger, Stephan Handschin and Philippe Surber (clockwise).