Free · no signup required

Resource Centre

Everything we know about running production infrastructure, written down and given away. Guides, tutorials, real incident case studies and career roadmaps — by the engineers who teach our cohorts.

40+

Hands-on tutorials

5

Career roadmaps

4

Incident case studies

₹0

Cost to read any of it

menu_book

Learning guides

Structured, start-to-finish guides you can work through in a weekend. Each one ends with something running, not a quiz.

Browse learning pathsarrow_forward
8 stagesarrow_outward

The 16-week beginner-to-production roadmap

The full Devloud learning journey — Linux through incident handling — with what to learn at each stage and why.

5 paths comparedarrow_outward

Which learning path fits your background

Fresher, backend developer, or sysadmin? Compare all five career tracks side by side on duration, certs and salary band.

CheatsheetIn progress

kubectl survival guide

The 40 commands that cover 95% of real cluster work, grouped by the question you're trying to answer.

HandbookIn progress

Terraform module design handbook

How to structure modules, manage remote state across environments, and keep plans readable as the estate grows.

emergency

Production incident case studies

Real outages, anonymised and rebuilt as labs. Read what happened, then go fix the same thing on your own cluster.

Practise these incidentsarrow_forward
CS-01SEV-2

The 256Mi limit that took checkout down on payday

trending_down
Impact
18% of checkout requests failed for 41 minutes during peak traffic.
visibility
Symptom
One replica of checkout-api sat in CrashLoopBackOff while the other stayed healthy, so dashboards showed a partial outage that looked like a network blip.
search
Root cause
A connection-pool bump raised memory use past the container's 256Mi limit. The pod was OOMKilled (exit 137), restarted, warmed its pool, and died again — a loop that only triggered under payday load.

What it teaches

Requests and limits are capacity decisions, not defaults to copy. Alert on OOMKill events directly; error-rate alone hid which pod was at fault.

KubernetesOOMKilledCapacityFix it yourselfarrow_forward
CS-02SEV-1

An expired certificate nobody owned

trending_down
Impact
Every public endpoint served a browser TLS warning for 26 minutes.
visibility
Symptom
Traffic did not drop to zero — clients with pinned sessions kept working, so the on-call engineer initially chased a CDN issue instead of the certificate.
search
Root cause
cert-manager's renewal had been failing silently for eight weeks because a DNS-01 solver lost its IAM permission after an unrelated policy tidy-up. Nothing alerted on renewal failure, only on expiry.

What it teaches

Alert on the renewal pipeline, not the expiry date. Any automation with a credential needs an owner and a failure alarm the day the credential changes.

CS-03SEV-3

Terraform drift that nearly destroyed production

trending_down
Impact
A routine apply proposed destroying a live RDS instance. It was caught in review.
visibility
Symptom
A console change made during a previous incident was never brought back into code, so the next plan showed a destroy-and-recreate on the database.
search
Root cause
Emergency console access with no follow-up reconciliation, combined with a pipeline that let anyone approve their own plan.

What it teaches

Break-glass changes need a reconciliation ticket before the incident closes. Gate destroys on a second approver and a policy check.

TerraformState driftChange controlFix it yourselfarrow_forward
CS-04SEV-2

p99 tripled with a perfectly flat error rate

trending_down
Impact
Checkout latency went from 180ms to 610ms at p99 for two hours. Zero errors logged.
visibility
Symptom
Every dashboard was green because every dashboard measured availability. Customers were complaining, so the team assumed a client-side issue.
search
Root cause
A new sidecar added a synchronous call to an auth service in a different availability zone. Cross-AZ latency was small per call but the call was made three times per request.

What it teaches

Traces answer questions metrics can't. Latency needs its own SLO and its own alert — availability being fine tells you nothing about being usable.

ObservabilityTracingSLOFix it yourselfarrow_forward

Reading is the warm-up. Fixing is the training.

Everything here is free and stays free. When you're ready to do it under a timer on a real cluster with an instructor watching, that's what the cohorts are for.