Notes from production.
Incidents, AWS, containers, delivery. Every article is available in English and in French.
Optimising a Docker image with a real Dockerfile: stages, why not Alpine, and the traps
A 289-line production Dockerfile for a Node.js API with Chrome and native modules, read line by line: what multi-stage builds really buy, why the runtime is Debian slim and not Alpine, 84 build arguments that bake secrets into the image, a chown that doubles the size, and the rewrite.
It was not the infrastructure: metrics, deliverables and the perimeter of a DevOps mission
A platform kept dropping requests after the scaling work was done. Load balancer logs showed a synchronous OCR job, not the infrastructure. Why metrics belong inside the deliverable, why the perimeter must be written down, and the three levels at which a system gets optimised.
The health check that took down production
A search cluster died and five production services went with it, none of which needed search to serve a page. A post-mortem, minute by minute: a non-vital dependency inside a liveness probe, and a watchdog I had shipped two days earlier with no blast radius.
How this site is deployed: S3, CloudFront, OpenTofu and GitHub Actions
The page you are reading is served by the stack it describes: a private S3 bucket behind CloudFront with OAC, DNS and certificates converging in one apply, a serverless contact form, and a deploy that is just a git push. Total bill: about $2.50 a month.
Deploying on AWS ECS, and what you gain over plain EC2
A hands-on walkthrough of a real Fargate deployment: image, task definition, service behind an ALB. Then an honest comparison with self-managed EC2: what you stop operating, what it costs, and the cases where a plain instance still wins.