<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>lamine.cloud · Notes from production</title>
<link>https://lamine.cloud/blog/</link>
<description>Incidents, AWS, containers, delivery. By Mouhamadou Lamine Gueye, DevOps / Platform / SRE.</description>
<language>en</language>
<atom:link href="https://lamine.cloud/feed.xml" rel="self" type="application/rss+xml"/>
<item>
<title>Optimising a Docker image with a real Dockerfile: stages, why not Alpine, and the traps</title>
<link>https://lamine.cloud/blog/docker-image-pitfalls.html</link>
<guid>https://lamine.cloud/blog/docker-image-pitfalls.html</guid>
<pubDate>Tue, 25 Aug 2026 08:00:00 +0000</pubDate>
<description>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.</description>
</item>
<item>
<title>It was not the infrastructure: metrics, deliverables and the perimeter of a DevOps mission</title>
<link>https://lamine.cloud/blog/metrics-in-deliverables.html</link>
<guid>https://lamine.cloud/blog/metrics-in-deliverables.html</guid>
<pubDate>Tue, 25 Aug 2026 08:00:00 +0000</pubDate>
<description>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.</description>
</item>
<item>
<title>How this site is deployed: S3, CloudFront, OpenTofu and GitHub Actions</title>
<link>https://lamine.cloud/blog/how-this-site-is-deployed.html</link>
<guid>https://lamine.cloud/blog/how-this-site-is-deployed.html</guid>
<pubDate>Sun, 23 Aug 2026 08:00:00 +0000</pubDate>
<description>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.</description>
</item>
<item>
<title>Deploying on AWS ECS, and what you gain over plain EC2</title>
<link>https://lamine.cloud/blog/ecs-vs-ec2.html</link>
<guid>https://lamine.cloud/blog/ecs-vs-ec2.html</guid>
<pubDate>Sun, 23 Aug 2026 08:00:00 +0000</pubDate>
<description>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.</description>
</item>
<item>
<title>The health check that took down production</title>
<link>https://lamine.cloud/blog/health-check-outage.html</link>
<guid>https://lamine.cloud/blog/health-check-outage.html</guid>
<pubDate>Sat, 22 Aug 2026 08:00:00 +0000</pubDate>
<description>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.</description>
</item>
</channel>
</rss>
