Adapting Drupal Strategies for High Availability: The kino.dk Case Study at Novicell

Adapting Drupal Strategies for High Availability: The kino.dk case study at Novicell  By Mads Nørgaard, Drupal tech lead, Novicell

As a seasoned Drupal developer at Novicell, my journey has evolved from a preference for stable, monolithic architectures to embracing the dynamic, high-availability demands of modern web projects. The development of kino.dk, a Danish top 10 website using Drupal 10, highlights this evolution, showcasing our advanced approach to managing large-scale, high-traffic websites.

As the digital world buzzes with the concepts of Microservices, API-first, Cloud-native, and Headless (MACH), there's a misconception that Drupal, being a traditional CMS, falls behind in this evolution. However, our experience at Novicell, particularly with the kino.dk project tells a different story. Drupal, especially with its latest iteration in Drupal 10, aligns remarkably well with MACH principles, proving its adaptability and forward-thinking design.

Many within our readership, particularly those in the Drupal community, may not be fully acquainted with MACH. MACH stands for Microservices, API-first, Cloud-native SaaS, and Headless. This acronym describes an architectural paradigm in which each business function is represented as a separate cloud service. These services are typically developed and managed by different vendors and are then integrated by the end user to create a cohesive system.

In one of his latest blog posts, Dries Buytaert, founder of Drupal, explains this misconception like this:

“Asserting that traditional CMSes are "monolithic" and "outdated" is a narrow-minded view held by people who have overlooked their evolution. In reality, today's choice is between a purely Headless or a Hybrid CMS.”

(Source: https://dri.es/the-new-old-jamstack-and-mach-journey-towards-traditional-cms-concepts)

Balancing Tradition and Innovation with Drupal 10

Our project with kino.dk coincided with the arrival of Drupal 10, a platform that has redefined the limits of scalability and extensibility in content management systems. A decision in this project was to use and improve on Transform API while hosting everything on the client’s Azure Kubernetes Service (AKS) account. This strategic move was not merely about adopting new technologies but about harnessing a robust infrastructure to ensure unmatched site performance and scalability.

Also Read: Embracing the Future with Drupal 10: Introducing the Transform API

Achieving Remarkable Uptime and Performance

One of the most significant achievements in our work on kino.dk has been maintaining a 100% uptime record. This remarkable feat is a testament to our meticulous planning and execution, particularly in a high-availability environment where even minor downtimes can have significant impacts.

Integrating our self-hosted Nuxt.js frontend with Drupal 10 has been crucial to this success. We initially set up the front end using Netlify, but this was neither fast nor cost-effective for a server-side rendered front end.

Only when switching to our own instances of Nuxt.js did we begin to have the response times we were looking for. By managing our front end independently and leveraging the power of AKS, we've ensured that kino.dk can handle substantial traffic loads and data demands seamlessly, providing a consistently reliable and responsive user experience.

The average response time on the backend is 151ms, and the Vue.js frontend produces a website in 600ms on average—these are the first loads, after which we use Drupal 10’s caching layers to perform donut caching1 and strategically leave out dynamic content.

Drawing of the application architecture

At Novicell, when we evaluate the performance of projects like kino.dk, our primary focus is on the actual user experience, not just the metrics provided by tools like Google PageSpeed. This approach becomes particularly crucial in contexts where the website features numerous advertisements and dynamic content. 

We understand that these elements, essential for the business model, can impact traditional performance metrics. However, our goal is to ensure that these components coexist without compromising the smoothness and responsiveness of the user's journey. By optimizing loading sequences, intelligently managing resources, and employing lazy loading techniques, we strive to deliver a seamless experience that keeps users engaged, irrespective of the complexity of the content.

Our experience, particularly with some modern frontend, has highlighted a common misunderstanding by tools like Google's PageSpeed. These tools tend to measure "time to first byte" (TTFB) as a key performance indicator, which can be misleading for SPAs. SPAs often have a longer TTFB as they load most resources upfront for a smoother user journey afterward. This initial load time, though slightly longer, results in a more fluid experience as users navigate the site. We focus on optimizing this aspect of SPAs, ensuring that while the TTFB might be higher, the overall user experience is superior, marked by quick transitions and minimal loading times as users interact with the site.

Handling a site rich in advertisements and dynamic content, such as kino.dk, requires a nuanced approach to web performance. While these elements are important for commercial viability, they pose unique challenges in maintaining a high-quality user experience. Our strategy involves implementing smart ad-loading techniques that do not hinder the site’s interactivity and responsiveness. We utilize advanced scripting and conditional loading to manage ads and dynamic content efficiently, allowing for a harmonious blend of commercial necessity and user-centric design. This balance is key to delivering a site that meets business objectives without compromising the seamless and engaging user experience visitors expect.

Innovative Deployment and Management Practices

At Novicell, we embrace the principles of Infrastructure as Code (IaC)2 and automated GitOps, which have been instrumental in the development and maintenance of kino.dk. Our full CI/CD pipeline allows for efficient, error-free deployment processes, ensuring that new features and updates are rolled out smoothly and without disrupting the site's availability.

Cloud architecture drawing

Our GitOps approach means that every aspect of the kino.dk infrastructure and deployment is managed through code, providing us with the flexibility to make rapid changes and ensuring that our infrastructure is always in sync with our version-controlled source code. This practice not only improves our operational efficiency but also enhances the security and stability of the site and developer happiness.

Drupal 10: A Catalyst for Advanced Web Solutions

Our experience with Drupal 10 on the kino.dk project has been enlightening. It has allowed us to push the boundaries of what we thought possible with Drupal. Leveraging Drupal 10’s advanced features, such as its enhanced caching mechanisms and database optimizations, we’ve been able to fine-tune kino.dk to meet exact performance and availability targets.

Conclusion: Pioneering the Future of Web Development with Drupal 10

The journey with kino.dk is a landmark in Novicell’s ongoing mission to provide cutting-edge web solutions. It highlights our ability to adapt and innovate using Drupal 10, which is integrated with technologies like Azure Kubernetes Service and Nuxt.js. Our commitment to maintaining 100% uptime through robust CI/CD pipelines, IaC, and GitOps practices sets a new standard in the industry. As we continue to explore and leverage the capabilities of Drupal 10, we remain dedicated to delivering high-performance, high-availability solutions tailored to our clients' unique needs.

  • 1(from stackoverflow:) Donut caching refers to the type of caching that enables you to cache an entire page's output—while leaving a few dynamic region markers to indicate places in the HTML output where you want to dynamically "fill-in" content on later requests (for example, the current user's name). Read more.
  • 2(from Redhat): Infrastructure as Code (IaC) is the managing and provisioning of infrastructure through code instead of through manual processes (Read more).

Note: The vision of this web portal is to help promote news and stories around the Drupal community and promote and celebrate the people and organizations in the community. We strive to create and distribute our content based on these content policy. If you see any omission/variation on this please let us know in the comments below and we will try to address the issue as best we can.

Related Organizations

Advertisement Here

Upcoming Events

Latest Opportunities

Advertisement Here