How We Run Decoupled Websites with 110 Million Hits per Month

Michael Schmid - CTO Amazee

This is not your standard session

Please ask questions right away

The Projects

  • Ringier Axel Springer
    • Started end 2016
    • Multiple Frontends, single Backend
    • beobachter.ch
      • Consumer Watchdog
    • bilanz.ch, handelszeitung.ch
      • Bloomberg of Switzerland
    • gault-millau.ch
      • Swiss GaultMillau Website
  • Swiss Paraplegic Center
    • 2018
    • Single Frontend
    • paraplegie.ch
  • Infrastructure
  • Platform
  • Code
  • People
  • Learnings

Infrastructure

  • AWS (can be anywhere)
  • Autoscaled
  • Multi AZ

Platform

  • Completely Dockerized
  • Lagoon, Kubernetes, OpenShift
  • Fully Autoscaled

First: Drupal only

Decoupled Drupal

Caching Fun

  • Reverse Proxy Caching at every level

Multi Decouple Drupal

  • Single Drupal Backend
  • Multiple Frontends (Monorepo)
  • All using the same GraphQL API

Multi Decoupled Drupal

Code

  • Monorepo
  • Drupal Backend
    • GraphQL
    • nothing more
  • React Frontend
    • React & Apollo (Next.js)
    • Server Side Rendering
  • Persistent GraphQL

CI/CD

  • Individual Environments for every
    • Branch
    • Pull Request
  • Frontend can point to any Backend
    • PRs Targets
    • Customized
  • TravisCI/CircleCI for Unit Tests, Behat, etc.
    • drupal-dev.io

People

  • Strict PR based deployments
  • Pagerduty Schedule with Developers
    • 1. Developers
    • 2. amazee.io 24/7 Engineers
  • Chat Communication ChatOps

Learnings

NodeJS as a WebServer is hard

  • Developers coming from a Drupal World
    • Concept of NodeJS as a Webserver is not fully understood
    • Issues with Image Cache Headers, Redirects, Basic Auth
  • Implement small nginx container with nodejs container

Learnings

Persistent GraphQL

  • Allow POST GraphQL queries in PR and DEV environments
  • Ensure to have tests for them :)

Learnings

Complexity as a Service

  • CDN functionality and possibilities not fully understood
  • "Works in my PR"
  • Make sure you have access to People and Resources of your external Services

Learnings

Crisis Communication is Key

  • Dedicated communication engineer during incidents
  • Chat & ChatOps helps tremendous
  • Internal Statuspage for Stakeholders

Questions?

How We Run Decoupled Websites with 110 Million Hits per Month

By Michael Schmid

How We Run Decoupled Websites with 110 Million Hits per Month

  • 2,507