100 Days of MLOps · Day 90 just shipped

Learn by building
real systems.

Project-based deep dives into DevOps, MLOps and AI engineering. Every article is a working build — verified commands, expected output, and diagrams that are actually explained.

hands-on articles
150
hands-on articles
of building
32h+
of building
learning paths
3
learning paths

learning paths

Pick a series, build every day

the format

Built for people who learn by doing

Every article is a build

No theory dumps. Each day ships a working project — a pipeline, a cluster, a chart — that you run on your own machine.

Commands with expected output

Every command is verified before publishing, and you see exactly what it should print. If your output differs, you know immediately.

Diagrams that are explained

Every diagram comes with a plain-English walkthrough of each node, arrow and colour. No decoder ring required.

Common errors, with fixes

Each article ends with the 4–6 real errors you are most likely to hit, and the exact fix for each one.

fresh signals

Latest articles

100 Days of MLOps
DAY 908 min read

Capstone: Deploying the Model Service at Scale

Day 90 of 100 Days of MLOps, and the Module 9 finale. Assemble everything into one production-grade deployment: a Deployment with rolling updates, health checks, and resource limits; a Service; a HorizontalPodAutoscaler; and config — all packaged as a single Helm chart and validated end-to-end. You'll render the whole stack and watch all four resources pass schema validation from one helm install. It's the complete picture of running your model at scale, and it closes the deployment module. Runs 100% locally on any OS.

mlopskuberneteshelm
100 Days of MLOps
DAY 898 min read

Packaging with Helm

Day 89 of 100 Days of MLOps. You've written a lot of YAML — deployment, service, HPA, config, probes — and copying it for every environment is error-prone. Helm is the package manager for Kubernetes: bundle all your manifests into a reusable chart with templated values, so one helm install deploys the whole stack and a single values file configures it per environment. You'll build a chart for your model service, render it, override values for prod, and validate the output — turning a pile of manifests into one versioned, parameterised package. Runs 100% locally on any OS.

mlopskuberneteshelm
100 Days of MLOps
DAY 889 min read

Health Checks & Resource Management

Day 88 of 100 Days of MLOps. Kubernetes can only keep your model healthy if it knows what 'healthy' means and how much CPU and memory each pod needs. Today you add the two things that turn 'the pods are running' into 'the pods are reliably serving': liveness and readiness probes (so k8s restarts a hung pod and only routes to ready ones) and resource requests and limits (so pods get what they need and can't starve their neighbours). You'll write and validate a production-grade deployment. Runs 100% locally on any OS.

mlopskuberneteshealth-checks
100 Days of MLOps
DAY 878 min read

Config & Secrets

Day 87 of 100 Days of MLOps. Baking configuration — and worse, credentials — into your image is inflexible and insecure. Today you learn the Kubernetes way to separate config from code: ConfigMaps for non-sensitive settings, Secrets for credentials, injected into pods as environment variables or files. You'll write and validate both, change config without rebuilding the image, and learn the one thing everyone gets wrong: a Kubernetes Secret is base64-encoded, not encrypted. Runs 100% locally on any OS.

mlopskubernetesconfigmaps
100 Days of MLOps
DAY 869 min read

Rolling Updates & Rollbacks

Day 86 of 100 Days of MLOps. Shipping a new model version shouldn't mean taking your service down. Today you learn Kubernetes' answer: rolling updates that replace pods gradually — a few at a time, new ones ready before old ones leave — so the service stays up throughout. You'll set maxSurge and maxUnavailable for true zero-downtime, watch a version roll out, and see how one command (kubectl rollout undo) rolls a bad model straight back. It's how you ship to production with confidence instead of a maintenance window. Runs 100% locally on any OS.

mlopskubernetesrolling-updates
100 Days of MLOps
DAY 858 min read

Scaling & Autoscaling

Day 85 of 100 Days of MLOps. A traffic spike shouldn't take your model down, and a quiet night shouldn't cost you a full fleet. Today you make your deployment elastic: scale the replica count by hand with one command, then set up a HorizontalPodAutoscaler that adds and removes pods automatically based on CPU. You'll write and validate the HPA manifest and see why it needs resource requests to work. It's the elasticity a single container could never give you — grow to meet load, shrink when it passes. Runs 100% locally on any OS.

mlopskubernetesscaling

One email when a new day ships

The next build lands in your inbox — nothing else, no spam, unsubscribe anytime.

Stop reading about systems.
Start building them.

Day 1 takes about an hour and leaves you with a production-ready Git workflow. The rest compounds from there.