Indra on Cloud
Backends, cloud costs & production AI. Engineering notes from Muhammad Indrawan. GCP, Kubernetes, Terraform, Node.js/Go backends, and LLM systems that survive real users.
Every post is a real incident, a real migration, or a real bill, written with numbers, not vibes.
Featured
Welcome, how this blog is built and served
Why this site is a static Astro blog on GCS behind Cloud Run: near-zero cost, scale-to-zero, and deploys that are just git push.
Recent Posts
The Devices Were Fine. The Primary Key Was the Problem.
Bridging 1,000+ MQTT devices into Pub/Sub, Spanner and BigQuery, and why a monotonic primary key quietly caps your write throughput no matter how many nodes you add.
Two Environments, One Resource. The Label Said 'dev'. The Name Said Otherwise.
Adding multi-environment support to a platform that names its resources by service, and the collision that every successful deploy silently confirmed.
Every Deploy Reported Success. The Endpoint Had Been Unreachable for Two Weeks.
A 404 is not one thing, and the difference between text/plain, text/html and application/json was the entire diagnosis.
Delete the State File. Redeploy. Nothing Should Happen.
How generated Terraform learns to adopt infrastructure it did not create, and the three ways a cloud inventory lies about what things are called.
Our Worst Terraform Deploy Took 71 Minutes. The Fix Was One Flag.
Finding it meant ignoring the median, and controlling for the thing that made my first comparison lie.
Building an Internal Developer Platform That Deploys Into Someone Else's Cloud
Multi-tenant infrastructure generation, and the three design decisions that turned out to matter most.
Hello, world, a blog that costs almost nothing to run
Why this blog is a static Astro site served from a GCS bucket through Cloud Run, with zero footprint on any cluster and a scale-to-zero bill.
Why our Gitea went down every Sunday at midnight
A short post-mortem on recurring midnight outages on our internal PaaS, and why single-replica stateful services plus a maintenance window is a bad combination.