No results found.

Platform Engineering

CI runners, preview environments, self-hosting and observability. The platform work behind keeping agency ecommerce stores shipping.

The official ways to scale self-hosted CI runners assume Kubernetes, so I built GitHub and Bitbucket runner images that scale on a plain Docker host. The error and CSP reporting our client stores send would cost over $2,700 a month on sentry.io, so we self-host Sentry on a £30 server instead, and I wrote up what broke along the way.

Shared staging was the bottleneck in code review, so every pull request now gets its own preview environment: a full Magento stack seeded with anonymised production data, live in about five minutes and torn down on merge. QA and clients test the real change, not screenshots of it.

Magento is where most of it runs, so the Magento-specific side lives on the Magento DevOps hub. This page covers the parts that apply to any stack.

What I've built

Platform and delivery work from agency projects.

All work

Centralised Backup with Cold Storage & Anonymised Dev Access

A centralised backup system spanning all managed Magento stores — automated snapshots, tiered cold storage, integrity verification on every backup, and a sanitised developer data pipeline that provides realistic local data without handling real customer PII.

Centralised Playwright E2E Framework

A shared Playwright test framework with per-store override layers — core checkout, account, and catalogue suites inherited by every client store on day one, with store-specific extensions layered on top.

CI Pipelines with Multi-Dimensional Quality Gates

CI pipelines gating on APM performance regression, Core Web Vitals delta, security scanning, static analysis, E2E tests, and peer review — nothing reaches production without passing every gate.

Ephemeral Feature Branch Environments

On-demand per-PR Magento environments provisioned automatically on pull request open, seeded with anonymised production data, and torn down on merge — giving every code review a live working environment to test against.

High-Availability Magento Hosting Platform

Designed a flexible Magento hosting platform with support for high availability, autoscaling, and enterprise-grade performance at a fraction of the cost of enterprise hosting providers

Magento Infrastructure Migrations

Multiple full-stack migrations from legacy single-server and cPanel hosting to modern containerised multi-service architectures — zero-downtime DNS cutover, incremental data sync, and post-migration monitoring with warm standby rollback capability.

Self-Hosted Internal Tooling

Replaced SaaS subscriptions for error tracking, log aggregation, VPN, and CI runner capacity with self-hosted equivalents — maintaining full observability and security posture at a fraction of the equivalent SaaS cost.

Zero Downtime Deployment Pipeline

Replaced manual SSH-based Magento deployments with a fully automated pipeline — pre-deploy validation, symlink-based atomic cutover, and automatic rollback on health check failure — achieving zero deployment-window downtime.

Tools & projects

Open-source infrastructure and CI tooling.

All projects

Articles

Write-ups on CI, deploys, infrastructure and monitoring.

All DevOps posts

Magento 2 E2E Testing: A Playwright Suite You Configure, Not Fork

An open source Playwright end to end testing suite for Magento 2.4.7 to 2.4.9 and Mage-OS, with Luma and Hyvä supported out of the box, adapted to a store through five JSON config files instead of a per-client fork.

· 5 min
  • magento2
  • testing
  • devops
  • +2

m2-meta-security-patches Swaps vaimo for a New Patch Installer

m2-meta-security-patches now applies patches through samjuk/magento-patch-installer instead of vaimo/composer-patches. Two config lines, one composer update, and it coexists with vaimo or cweagans.

· 6 min
  • magento2
  • security
  • adobe-commerce
  • +2

StyleSmuggler and September's Isolated Patch Land in m2-meta-security-patches

Adobe shipped two Magento 2 security patches a day apart — the StyleSmuggler emergency fix (VULN-39341 / APSB26-146) and September's routine isolated patch (2026-09-001 / APSB26-138). Both are now wired into m2-meta-security-patches.

· 6 min
  • magento2
  • security
  • adobe-commerce
  • +2

APSB26-92: Adobe Commerce's August 2026 Isolated Patch

APSB26-92 is Adobe Commerce's August 2026 isolated security patch, stacking on top of July's. Here's what's in it, WAF rules for the account takeover, the July packaging problems now fixed properly, and a vaimo/composer-patches bug that silently reverts your patches.

· 8 min
  • magento2
  • security
  • adobe-commerce
  • +2

APSB26-73: How to Apply Adobe Commerce's July 2026 Isolated Security Patch

APSB26-73 is Adobe Commerce's July 2026 isolated security patch, covering 2.4.6-p15, 2.4.7-p10, 2.4.8-p5 and 2.4.9. Here's what's in it, the non-cumulative gotcha that trips people up, and the fastest way to apply it.

· 4 min
  • magento2
  • security
  • adobe-commerce
  • +2

Operational Maturity Before AI Velocity: What Your Magento Team Needs First

AI is a force multiplier for Magento development — but it multiplies whatever processes you already have. Here's the operational stack your team needs before leaning heavily into AI-generated output.

· 8 min
  • ai
  • ai-assisted-development
  • magento2
  • +3

Copy Fail 2 / DirtyFrag (CVE-2026-31431): Container Escape & LPE Follow-Up

The sequel to CopyFail: DirtyFrag extends the CVE-2026-31431 exploit chain to container escape. Covers the new attack surface, detection, and mitigations beyond the algif_aead workaround.

· 4 min
  • magento2
  • security
  • devsecops
  • +1

CopyFail (CVE-2026-31431): Linux Kernel LPE — Detection, Mitigation & Distro Patch Status

CVE-2026-31431 is a Linux kernel local privilege escalation via algif_aead. Covers exploit mechanics, detection, the algif_aead mitigation, and patch status across Ubuntu, Fedora, Debian, RHEL, and more.

· 3 min
  • magento2
  • security
  • devsecops
  • +1

GitHub Webhook Secret Exposure via x-github-encoded-secret Header

How GitHub accidentally leaked webhook secrets via an erroneous HTTP header, what data was exposed, and the exact steps to rotate your secrets now.

· 4 min
  • github
  • security
  • devsecops

Docs

Reference guides for pipelines, automation and self-hosted services.

All DevOps docs

Platform engineering

I build and run the platform side of agency ecommerce from Cardiff: CI, deploys, hosting, backups and monitoring. Always happy to compare notes with other engineers doing the same.