WordPress�at Scale
Dominique Quatravaux�EPFL ISAS-FSD
FOSDEM’2026
École�polytechnique�fédérale�de Lausanne
EPFL ISAS-FSD
FOSDEM’26 — Containers track
EPFL�is�… BIG
2
… We have datacenters!
(… with VMs and NFS)
Our team: 8 employees, 5 interns
… for 26 apps (not just WordPress)
EPFL ISAS-FSD
FOSDEM’26 — Containers track
> Serving at Scale
Operating at scale
Developing at scale*
3
EPFL ISAS-FSD
FOSDEM’26 — Containers track
We’ll need… 865 WordPresses.
4
EPFL ISAS-FSD
FOSDEM’26 — Containers track
Attempt #1 (~2019) =
WordPress of the 2000s
Designed and operated as a general-purpose LAMP hosting
5
EPFL ISAS-FSD
FOSDEM’26 — Containers track
… Not really at scale.
6
EPFL ISAS-FSD
FOSDEM’26 — Containers track
In 2025: do it again, do it right
7
EPFL ISAS-FSD
FOSDEM’26 — Containers track
Edge cache
(Disclaimer: not affiliated with Cloudflare in any way, besides being satisfied customers of their service)
8
EPFL ISAS-FSD
FOSDEM’26 — Containers track
9
… How many pods?
EPFL ISAS-FSD
FOSDEM’26 — Containers track
WordPress in a container two containers
We used to require another layer of cache on-premise (varnish). We no longer do.
10
EPFL ISAS-FSD
FOSDEM’26 — Containers track
nginx is boss 👑
11
Each WordPress request is served independently from the others.
EPFL ISAS-FSD
FOSDEM’26 — Containers track
PHP?...
12
A design oversight turned killer feature:
forget everything, every time.
EPFL ISAS-FSD
FOSDEM’26 — Containers track
PHP?...
13
We are effectively
turning the whole WordPress� into a function-as-a-service.�
EPFL ISAS-FSD
FOSDEM’26 — Containers track
Serving at scale
> Operating at Scale
Developing at scale*
14
EPFL ISAS-FSD
FOSDEM’26 — Containers track
The operator is a program
15
All of that is made
EPFL ISAS-FSD
FOSDEM’26 — Containers track
16
EPFL ISAS-FSD
FOSDEM’26 — Containers track
What needs doing on a daily basis?
17
Well… Not a whole lot.
EPFL ISAS-FSD
FOSDEM’26 — Containers track
What needs doing on a daily basis?
18
Well… Not a whole lot.
EPFL ISAS-FSD
FOSDEM’26 — Containers track
… nightly basis?
We moved wp-cron into its own Kubernetes CronJob.
(Solved the 22h22 problem.)
We use that to monitor “slow” metrics into a Prometheus pushgateway: → plugin
19
EPFL ISAS-FSD
FOSDEM’26 — Containers track
Developing at (some) Scale
There’s 13 of us... But we’d welcome more! 😉
20
EPFL ISAS-FSD
FOSDEM’26 — Containers track
wp-dev: jump right in!
21
EPFL ISAS-FSD
FOSDEM’26 — Containers track
Conclusion:�Ready for immediate consumption?
WP-Operator
Dockerfiles
EPFL theme
Plug-ins: from� … to�
WP-dev
WP-Veritas�
22
e.g. pushgateway
Flagship contribution
Coupled with Ansible 🤷♂️
e.g. lunch menus
EPFL ISAS-FSD
FOSDEM’26 — Containers track
Thanks for attending!
… Please get in touch!
23
isas-fsd@groupes.epfl.ch
#2026-containers:fosdem.org
EPFL ISAS-FSD
FOSDEM’26 — Containers track
Future plans
24
EPFL ISAS-FSD
FOSDEM’26 — Containers track
The nginx ingress controller is another program
… that controls nginx, based on Ingress objects in Kubernetes.
We took this one “as-is” from github.com/kubernetes/ingress-nginx (and substituted our own golang template)
25
EPFL ISAS-FSD
FOSDEM’26 — Containers track
Photo Credits
26
EPFL ISAS-FSD
FOSDEM’26 — Containers track