Learning Paths

Cloud & DevOps

Linux, AWS, containers, infrastructure as code and the observability that tells you whether any of it is working. Built around one service you take all the way to production.

Finish this and you can stand up a containerised service on AWS from a Terraform definition, ship it through a pipeline, and answer the only question that matters at 3am: what changed, and how do you know?

Starts at
Beginner
Topics
6
Projects
5
Of material
136 h
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Terraform
  • CI/CD
  • Observability
01Beginner

Linux and networking

The shell, the filesystem, processes and the network stack. Every layer above this is an abstraction over these, and every outage eventually drops you back down to them.

Foundation

  • The Missing Semester of Your CS Education

    MIT · course · 12 h

    Shell, scripting, editors, version control and debugging — the tooling nobody teaches and everybody is assumed to know. Start here.

  • Linux Journey

    LabEx · interactive · 8 h

    Short, structured lessons from the filesystem up to networking. Good for filling gaps you did not know you had.

  • Cloudflare Learning Center

    Cloudflare · article · 5 h

    DNS, TLS, CDNs and load balancing explained clearly and without a sales pitch. Read the DNS and TLS sections in full.

Practitioner

Project

A hardened server you built by hand

One small VM — the cheapest instance you can rent — taken from a fresh image to an HTTPS site on a domain you own, entirely by hand, with a runbook precise enough for a stranger to repeat.

  1. Lock the door first. A non-root sudo user, your public key installed, then PasswordAuthentication no and PermitRootLogin no in sshd_config. Keep your first session open until a second one connects.
  2. Close everything else. Default-deny inbound with ufw or nftables, allowing only 22, 80 and 443. Confirm from outside with nmap rather than trusting your own config.
  3. Serve something real. nginx or Caddy in front of an application on a private port — not a static index page. The app runs as its own unprivileged user under systemd with Restart=always.
  4. Get a real certificate. Point a domain at the box, issue with certbot, apply the intermediate profile from Mozilla's SSL configuration generator, and prove renewal works with a dry run.
  5. Verify and harden. Score A or better on SSL Labs, enable unattended-upgrades, install fail2ban, and note how many SSH attempts the logs already show.
  6. Write the runbook, then test it. Every command in order with its purpose and its verification step. Rebuild from a blank instance following only the runbook, and fix every step that failed.

Scope guard: no configuration management, no Docker, no hosting panel. The point is doing by hand exactly what Terraform replaces two topics from now.

02Beginner

Git and pipelines

Branching you can explain, and a pipeline that makes the tests non-optional.

Foundation

  • Pro Git

    Git · book · 10 h

    Chapters 2, 3 and 7. Chapter 10 — Git Internals — is what turns rebase from frightening into obvious.

  • Learn Git Branching

    Peter Cottle · interactive · 3 h

    A visual sandbox for the operations everyone is afraid of. Do the remote levels too.

Practitioner

  • GitHub Actions documentation

    GitHub · docs · 5 h

    Focus on reusable workflows, caching and OIDC to your cloud account. Long-lived cloud keys in CI are the credential leak everyone regrets.

03Intermediate

AWS essentials

The dozen services almost every architecture actually uses — and the IAM model that governs all of them.

Foundation

  • AWS Skill Builder

    AWS · course · 15 h

    AWS's own training. The free Cloud Practitioner track is the fastest route to a working vocabulary.

Practitioner

  • AWS Well-Architected Framework

    AWS · docs · 6 h

    Read the Security and Reliability pillars properly. These are the questions a cloud interview is drawn from.

  • IAM security best practices

    AWS · docs · 1 h 30 min

    Least privilege, roles over users, no long-lived keys. Almost every published AWS breach traces back to ignoring one of these.

  • Amazon VPC — User Guide

    AWS · docs · 4 h

    Subnets, route tables, NAT and security groups. Build one by hand in the console once, then never again by hand.

Project

A budget alarm, before anything else

Ten minutes of setup that prevents the most common beginner disaster, followed by a week of running something real and reconciling the bill against your own prediction.

  1. Secure the root account. MFA on root, then stop using it. Do daily work as an IAM or Identity Center user with MFA of its own.
  2. Set a budget with teeth. An AWS Budget at your real limit, alerting at 50%, 80% and 100% of both actual and forecast spend, to an address you read daily.
  3. Tag from the first resource. project and owner on everything, then activate them as cost allocation tags. Untagged spend is unattributable spend.
  4. Predict before you build. Write down what you expect a week of your workload to cost, derived from the pricing pages, before you launch anything.
  5. Run something for seven days. A small instance, a scheduled Lambda, an S3 bucket taking traffic — anything that actually accrues charges.
  6. Reconcile and clean up. Cost Explorer grouped by service and by tag. One page: predicted, actual, the largest surprise, and what you would change. Then delete what you no longer need and confirm the spend drops.

Scope guard: stay inside the free tier where you can, but do not skip the reconciliation. Reading a bill is the skill; avoiding one is not.

04Intermediate

Docker and Kubernetes

Package once, run anywhere — then the orchestrator, honestly assessed. Most teams need containers; far fewer need Kubernetes.

Foundation

  • Docker — Get started

    Docker · docs · 5 h

    Through to multi-stage builds. A 1.2GB image where a 90MB one would do is the most common first mistake.

Practitioner

  • Building best practices for Dockerfiles

    Docker · docs · 1 h 30 min

    Layer caching, non-root users, and why your build takes four minutes when it should take twenty seconds.

  • Kubernetes Basics

    Kubernetes · interactive · 4 h

    The interactive tutorial, in a browser, with no cluster to install. Do this before deciding whether you need Kubernetes at all.

Builder

  • Kubernetes — Concepts

    Kubernetes · docs · 10 h

    Workloads, services and configuration first. Skip the rest until something forces you into it.

Project

Containerise a real application and run it

An application you have already built, containerised properly and deployed to a managed container service, with image size, vulnerability count and cold start measured before and after.

  1. Measure the naive version. A single-stage Dockerfile from the default base image. Record image size and cold start. That is the number you have to beat.
  2. Go [multi-stage](https://docs.docker.com/build/building/multi-stage/). Build dependencies in one stage, copy only artefacts into a slim or distroless runtime. Target under 200MB, and use dive to find which layer is carrying the weight.
  3. Drop privileges. A non-root USER, a read-only root filesystem, no secrets in layers or build args. Verify by inspecting the built image history, not by reading your own Dockerfile.
  4. Handle signals and health. A real healthcheck endpoint, and a process that exits cleanly on SIGTERM — a PID 1 that ignores signals is why deploys hang for thirty seconds.
  5. Scan it. Run trivy, then fix or explicitly accept every HIGH and CRITICAL. Record the before and after counts.
  6. Ship it. Push to a registry and deploy to a managed service — Cloud Run, ECS Fargate, Fly.io or App Runner. Measure cold start again and publish the before/after table.

Scope guard: one service, one Dockerfile, no Kubernetes. Orchestration hides whether the image underneath is any good.

05Intermediate

Infrastructure as code

The console is for looking. Terraform is for building — reviewably, repeatably, and with a record of who changed what.

Practitioner

  • Terraform tutorials

    HashiCorp · interactive · 8 h

    Do the AWS "Get Started" track against your own account, not a sandbox. Real credentials change how carefully you read a plan.

  • AWS — Infrastructure as code

    AWS · paper · 1 h

    Useful context for why the practice exists, and where CloudFormation and CDK fit beside Terraform.

Builder

  • Terraform — State

    HashiCorp · docs · 2 h

    Remote state and locking, before you ever share a workspace with another person. Corrupted state is the worst afternoon in this discipline.

Project

Rebuild your hand-made server in Terraform

The server you built by hand in the first topic, expressed as Terraform, then destroyed and rebuilt from nothing to prove the definition is complete.

  1. Remote state on day one. An S3 backend with locking. Local state is how two people destroy each other's infrastructure.
  2. Define all of it. Network, security groups, compute, DNS record and certificate — every resource in your runbook, written from the provider documentation rather than copied from blog posts.
  3. Parameterise one axis. A single variable set producing dev and prod from the same code — different instance size, different domain. No copy-pasted directories.
  4. Destroy, then apply from nothing. Diff the rebuilt environment against the original — instance metadata, installed packages, certificate presence — and fix every difference you find. Differences mean your definition is incomplete.
  5. Make drift visible. Change something in the console by hand, run terraform plan, and read what it says. Then write down what plan cannot detect.
  6. Gate it in CI. fmt, validate and tfsec on every pull request, plan output posted to the PR, and apply behind a manual approval.

Scope guard: one environment pair, no modules until the flat version rebuilds cleanly. Prove reproducibility before adding abstraction.

06Advanced

Observability and reliability

Metrics, logs and traces — and the operational discipline that decides what to do when they turn red.

Practitioner

  • Prometheus — Overview

    Prometheus · docs · 4 h

    The data model and PromQL. Instrument one service properly rather than ten badly.

  • Grafana tutorials

    Grafana Labs · interactive · 4 h

    A dashboard nobody looks at is decoration. Build one that answers a specific question you actually have.

Builder

  • Site Reliability Engineering

    Google · book · 15 h

    Free in full. Chapters on service level objectives, monitoring and postmortem culture are the ones that change how you work.

  • OpenTelemetry documentation

    CNCF · docs · 5 h

    The vendor-neutral standard for traces and metrics. Worth knowing before you get locked into anyone's agent.

Project

An SLO, an alert, and a postmortem you wrote

An SLO for the service you deployed, an alert that fires on error budget rather than CPU, and a blameless postmortem of a failure you caused on purpose.

  1. Pick one SLI a user would notice. Availability as successful requests over total, or latency as the fraction served under 300ms. Write down exactly which requests count and which are excluded.
  2. Set a target you can defend. 99.5% over 28 days is roughly 3.4 hours of error budget. Say why that number and not four nines, including what the extra nines would cost to reach.
  3. Instrument it. Emit the metric from the service, scrape it, and build one dashboard showing the SLI, remaining budget and burn rate, following Implementing SLOs.
  4. Alert on burn rate, in two windows. Fast burn — 2% of budget in an hour — pages. Slow burn — 10% over three days — opens a ticket. No CPU alerts on this dashboard.
  5. Break it deliberately. Stop the database, saturate CPU, or inject 500ms of latency under load. Do it without pre-warning yourself and let the alert find you.
  6. Write the postmortem. Timeline to the minute, time to detect, time to mitigate, contributing factors, and action items with owners — following the Google SRE example. No person appears as a cause.

Scope guard: one service, one SLI, one incident. Almost nobody enters this field with a written postmortem — it is the strongest single artefact you can bring.

Not sure this is your direction?

A three-minute counselling sample is free.

Try counselling