Archive
DevOps
Docker, AWS, CI pipelines, caching, and the PHP runtime.
-
FrankenPHP worker mode, with numbers from a real application
Six weeks replacing PHP-FPM with FrankenPHP worker mode on a Symfony 6.4 back office. The config keys that mattered, the memory leak we caused ourselves, and the p95 and throughput numbers on both sides.
-
The GitHub Actions workflow I keep copying into PHP projects
One CI workflow I have been pasting between PHP repositories for a year and a half, explained line by line: the PHP matrix, Composer caching, a MySQL service container, and the health check that lies.
-
One EC2 box to a load balancer, RDS and S3
A hand-built single server became two instances behind an Application Load Balancer, with RDS, Redis sessions and S3 uploads. The health check, the cron table and the invoice are the parts nobody warns you about.
-
Redis in front of a report that was still slow
Caching a nine second aggregate report cut the median to 81 milliseconds and pushed the p99 to nearly fifteen seconds, because every expiry started a stampede. What the lock, the stale copy and the cache keys look like now.
-
Docker for local PHP development, two years in
Two years after replacing per-machine PHP installs and a shared dev server with Compose. The composer timing that won the argument, the osxfs flags that make bind mounts survivable, and the uid problem still unsolved.