DevOps Engineer
A practical path from Linux and networking basics to running containerized services on Kubernetes in AWS, with pipelines, infrastructure as code and monitoring along the way. It ends where platform engineering begins: turning all of that into secure, self-service paths other developers can use.
- Before you start
- Comfort installing software and using a terminal, plus some experience writing code in any language. You do not need to be a developer already, but having built a small web app helps, because most projects in this path deploy one.
- Where it gets you
- You can set up and harden servers, build secure container images, ship code through CI/CD, provision AWS with Terraform or OpenTofu, run services on Kubernetes with GitOps, and keep them observable and recoverable. That covers what junior DevOps, cloud and SRE job posts ask for and gives you a solid base for platform engineering.
0 of 62 topics done
Tick a topic once you can explain it and have used it in a project. Progress is saved in this browser.
- Core
- Recommended
- Optional
- Done
- 1
Linux and Networking Foundations
About 5-6 weeks0/7
Run, secure and debug a Linux server, and explain how a request travels from a browser to your app.
Build: Harden and Serve a Small Server
On a cheap cloud VM or a local VM, create a sudo user, switch SSH to keys only, enable a firewall, and run a small web app as a systemd service behind Nginx with a Let's Encrypt certificate. Record every step in a README so you can rebuild the server from scratch.
- 2
Scripting and Version Control
About 3-4 weeks0/6
Automate routine server tasks with Bash and Python, and collaborate on infrastructure code through Git and pull requests.
Build: Server Health Check Toolkit
Write a Bash script and a Python CLI that check disk space, memory, a systemd service and an HTTP endpoint, print the results as JSON and exit non-zero on failure. Keep them in a GitHub repo with branch protection and land every change through a pull request.
- 3
Containers with Docker
About 3-4 weeks0/7
Package any app into a small, secure image and run a multi-service stack locally with one command.
Build: Containerize a Three-Service App
Write multi-stage Dockerfiles for an API and a frontend, run them with Postgres through Compose with health checks, and push SHA-tagged images to GHCR. Set a size budget for each image and get the scan down to zero critical vulnerabilities.
- 4
CI/CD Pipelines
About 3-4 weeks0/7
Build a pipeline that tests, scans and ships every merged change to staging and production, with a safe way back.
Build: Commit-to-production Pipeline
Build a GitHub Actions workflow that lints, tests, builds, scans and pushes your app image tagged with the commit SHA, deploys it to your stage one server as staging, and gates a production job behind a manual approval. Keep secrets in environments, pin actions to SHAs and document how to roll back to the previous image.
- 5
Cloud Fundamentals on AWS
About 5-6 weeks0/7
Design, build and secure a simple production setup on AWS by hand, and explain what each piece costs.
Build: Two-tier App on AWS, by Hand
In the console, build a VPC with public and private subnets, an ALB in front of an Auto Scaling group of EC2 instances, and an RDS database in the private subnets, with CloudWatch alarms and a monthly budget alert. Draw the architecture, note what each part costs, then tear it all down.
- 6
Infrastructure as Code
About 4-5 weeks0/7
Rebuild a whole environment from code, review infrastructure changes in pull requests and configure servers repeatably.
Build: Rebuild the AWS Setup as Code
Recreate your stage five environment with Terraform or OpenTofu modules, remote state in S3 and one folder per environment, running plan on pull requests and apply on merge through OIDC. Add an Ansible playbook that configures the instances, then destroy and recreate everything to prove it works.
- 7
Kubernetes and GitOps
About 6-8 weeks0/7
Deploy, expose, scale and debug services on a Kubernetes cluster, and let Git drive every change to it.
Build: GitOps-managed Cluster
Create a cluster with kind or with EKS from your Terraform code, package your app as a Helm chart with requests, limits, probes and an autoscaler, and expose it through the Gateway API. Install Argo CD and have it sync separate staging and production overlays from Git, so a merged pull request is the only way to change the cluster.
- 8
Observability and Reliability
About 4-5 weeks0/7
Notice when a service is unhealthy before users do, find out why, and recover data and service after a failure.
Build: Give Your App an SLO
Instrument the app with Prometheus metrics, OpenTelemetry traces and structured logs, build a Grafana dashboard, and define an availability SLO with burn-rate alerts. Then break something on purpose, restore the database from a backup, and write a blameless postmortem.
- 9
DevSecOps and Platform Engineering
About 5-6 weeks0/7
Secure the path from commit to production and package it as a self-service golden path that other developers use without asking you.
Build: Paved Road for a New Service
Build a Backstage software template, or a plain template repo, that creates a new service with a Dockerfile, Helm chart, CI pipeline, signed images, an SBOM, secrets pulled from a secret manager, cost tags and a starter dashboard. Time how long it takes a teammate to go from nothing to a running service, and fix the slowest step.
Where it gets you
You can set up and harden servers, build secure container images, ship code through CI/CD, provision AWS with Terraform or OpenTofu, run services on Kubernetes with GitOps, and keep them observable and recoverable. That covers what junior DevOps, cloud and SRE job posts ask for and gives you a solid base for platform engineering.
Core must know for the roleRecommended expected in most jobsOptional for specific teams or later
Linux and Networking Foundations
About 5-6 weeks
Run, secure and debug a Linux server, and explain how a request travels from a browser to your app.
Shell and Filesystem
CoreAlmost every server you will manage runs Linux, so moving around it quickly from a terminal is the skill everything else builds on.
- Navigate with cd, ls and pwd
- Filesystem layout: /etc, /var, /home
- Pipes and redirection
- Search with grep and find
- Transform text with sed and awk
- Edit files in vim or nano
- Read man pages and --help
Users, Permissions and Packages
CoreMany server problems and security holes come down to wrong ownership, careless sudo or unpatched packages, so get these right early.
- Users, groups and sudo
- Read and set modes with chmod
- Change ownership with chown
- Install and update with apt or dnf
- Disks and mounts, df and du
- Environment variables and PATH
Processes, Services and Logs
CoreApps in production run as long-lived services, so you need to start, stop and restart them and read their logs without guessing.
- Inspect processes with ps and top
- Signals, kill and exit codes
- Write a systemd service unit
- Enable, start and check services
- Read logs with journalctl
- Schedule jobs with cron or timers
- Spot CPU, memory and disk pressure
SSH and Remote Access
CoreSSH is how you reach servers and many CI runners, and a weak SSH setup is one of the easiest ways in for attackers.
- Generate and use key pairs
- Client config in ~/.ssh/config
- Disable root and password login
- Copy files with scp and rsync
- Port forwarding and tunnels
- Jump hosts and bastions
TCP/IP and DNS
CoreA lot of "the site is down" tickets turn out to be networking or DNS, so you need a clear model of addresses, ports and name lookups.
- IP addresses, subnets and CIDR
- Ports, TCP and UDP
- Private vs public addresses, NAT
- DNS records: A, AAAA, CNAME, TXT
- TTLs and resolver caching
- Debug with dig, ss, ip, curl
HTTP and TLS
CoreNearly every service you deploy speaks HTTP over TLS, and header or certificate mistakes are some of the most visible failures.
- Methods, status codes and headers
- Inspect requests with curl -v
- HTTP/2 and HTTP/3 basics
- The TLS handshake in outline
- Certificates, chains and expiry
- Automate certificates with Let's Encrypt
Nginx, Load Balancers and Firewalls
CoreA reverse proxy and a firewall sit in front of almost every app, so this is where your networking knowledge meets real traffic.
- Nginx server blocks and locations
- Reverse proxy to an app port
- TLS termination at the proxy
- Upstream load balancing methods
- Layer 4 vs layer 7 balancing
- Host firewalls with ufw or nftables
- Default deny, open only needed ports
Build: Harden and Serve a Small Server
On a cheap cloud VM or a local VM, create a sudo user, switch SSH to keys only, enable a firewall, and run a small web app as a systemd service behind Nginx with a Let's Encrypt certificate. Record every step in a README so you can rebuild the server from scratch.
Scripting and Version Control
About 3-4 weeks
Automate routine server tasks with Bash and Python, and collaborate on infrastructure code through Git and pull requests.
Bash Scripting
CoreBash glues servers, containers and pipelines together, and short, careful scripts save you hours of repeated typing.
- Variables, quoting and expansion
- Conditionals, loops and functions
- Exit codes and set -euo pipefail
- Arguments and getopts
- Traps and cleanup on exit
- Lint scripts with ShellCheck
Python for Automation
CoreOnce a script needs APIs, JSON or real error handling, Python is the usual next step, and it is the language DevOps job posts ask for most.
- Virtual environments and dependencies
- Files, paths and JSON
- Run commands with subprocess
- Call REST APIs over HTTP
- Build CLIs with argparse
- Logging and clear error handling
- Cloud SDKs such as boto3
YAML, JSON and Config Files
CorePipelines, Compose files, Kubernetes manifests and playbooks are all YAML or JSON, and one bad indent can break a deploy.
- YAML maps, lists and scalars
- YAML gotchas: indentation and types
- Query and reshape JSON with jq
- Config through environment variables
- Validate files before committing
Git Fundamentals
CoreAll infrastructure and pipeline code lives in Git, so you need to commit, branch and undo mistakes without fear.
- Commits, staging and history
- Branches, merge and rebase
- Resolve merge conflicts
- Ignore files, keep secrets out
- Tags for releases
- Recover lost work with reflog
Pull Requests and Trunk-Based Development
CoreTeams ship small changes often by merging short-lived branches into one main branch, with reviews and automated checks guarding every merge.
- Short-lived branches off main
- Small, reviewable pull requests
- Give and receive code review
- Branch protection and required checks
- Semantic versioning for releases
- Clear, descriptive commit messages
Go for Tooling
OptionalKubernetes, Terraform and most cloud native tools are written in Go, so reading and writing a little of it helps on platform-heavy teams.
- Syntax, types and packages
- Modules and dependencies
- Explicit error handling
- Build static single binaries
- Write a small CLI tool
Build: Server Health Check Toolkit
Write a Bash script and a Python CLI that check disk space, memory, a systemd service and an HTTP endpoint, print the results as JSON and exit non-zero on failure. Keep them in a GitHub repo with branch protection and land every change through a pull request.
Containers with Docker
About 3-4 weeks
Package any app into a small, secure image and run a multi-service stack locally with one command.
How Containers Work
CoreContainers are what pipelines build and clusters run, so knowing what they really are prevents a lot of confusion later.
- Images vs containers
- Layers and the build cache
- Namespaces and cgroups in outline
- Containers vs virtual machines
- The OCI image standard
- Run, stop and remove containers
Writing Good Dockerfiles
CoreThe Dockerfile decides how big, how fast to build and how safe your image is, and reviewers judge your work on it.
- FROM, RUN, COPY, CMD, ENTRYPOINT
- Order layers for cache hits
- Use a .dockerignore file
- Multi-stage builds
- Small base images
- Run as a non-root user
- Add a HEALTHCHECK
Running and Debugging Containers
CoreMost container problems show up at runtime in ports, volumes, environment or logs, so you need a routine for tracking them down.
- Publish ports to the host
- Volumes vs bind mounts
- Pass config with env vars
- Read logs and exec inside
- User-defined networks
- Restart policies and resource limits
Docker Compose
CoreCompose describes an app, its database and its cache in one file, which makes local environments and simple deployments repeatable.
- Services, networks and volumes
- Health checks and depends_on
- Env files and profiles
- Override files per environment
- Rebuild services and follow logs
Registries and Tagging
CoreImages must be stored, versioned and pulled by exact version, or you cannot tell what is actually running in production.
- Push and pull from registries
- GHCR, ECR and Docker Hub
- Tag with git SHA and version
- Pin images by digest
- Avoid relying on latest
- Multi-arch builds with buildx
Image Security Scanning
RecommendedBase images ship with known vulnerabilities and many teams block deploys that fail a scan, so scanning is part of building an image.
- Scan with Trivy or Grype
- Read and triage CVE reports
- Fix by updating base images
- Minimal, distroless or hardened bases
- Generate an SBOM per image
- Fail builds on critical findings
Podman and Rootless Containers
OptionalSome Linux-heavy and enterprise teams use Podman instead of Docker, and knowing it shows you understand containers beyond one tool.
- Daemonless, rootless containers
- Docker-compatible CLI
- Pods in Podman
- Run containers under systemd
Build: Containerize a Three-Service App
Write multi-stage Dockerfiles for an API and a frontend, run them with Postgres through Compose with health checks, and push SHA-tagged images to GHCR. Set a size budget for each image and get the scan down to zero critical vulnerabilities.
CI/CD Pipelines
About 3-4 weeks
Build a pipeline that tests, scans and ships every merged change to staging and production, with a safe way back.
Pipeline Design
CoreA good pipeline gives fast, trustworthy feedback on every change, and it is the backbone of how a team ships.
- Stages: lint, test, build, scan, deploy
- Fail fast, run slow jobs later
- Build once, promote the same artifact
- Pipeline config lives in the repo
- Keep main always deployable
- Track pipeline duration and flaky tests
GitHub Actions
CoreGitHub Actions is built into GitHub and widely used by companies and open source projects, which makes it a practical first CI system.
- Workflows, jobs and steps
- Triggers: push, pull_request, manual
- Matrix builds
- Reusable workflows and composite actions
- Hosted vs self-hosted runners
- Concurrency and cancelling stale runs
Caching and Artifacts
CoreCaching keeps pipelines fast and artifacts pass exact build outputs between jobs, which matters once builds take more than a few minutes.
- Cache dependencies by lockfile hash
- Docker layer cache in CI
- Upload and download artifacts
- Publish test and coverage reports
- Retention and storage costs
Secrets, Environments and Permissions
CorePipelines hold the keys to production, which makes them a favorite target, so they need tight, short-lived credentials.
- Repository and environment secrets
- OIDC to the cloud, no stored keys
- Environments with required approvals
- Least-privilege GITHUB_TOKEN permissions
- Pin third-party actions to a SHA
- Never print secrets in logs
Deployment Strategies
CoreHow you roll out a release decides how many users see a bad version and how quickly you can undo it.
- Rolling updates
- Blue/green switches
- Canary releases watched by metrics
- Automated rollback triggers
- Backward-compatible database migrations
- Smoke tests after every deploy
Feature Flags
RecommendedFlags separate deploying code from releasing a feature, so teams can merge to main daily and switch things off without a redeploy.
- Deploy vs release
- Release, experiment and ops flags
- Percentage and targeted rollouts
- OpenFeature as a vendor-neutral API
- Remove stale flags
GitLab CI
OptionalMany companies, especially self-hosted ones, run GitLab, and its pipeline model maps closely to what you learned with Actions.
- .gitlab-ci.yml stages and jobs
- Runners and executors
- rules and needs keywords
- Includes and templates
- Protected variables and environments
Build: Commit-to-production Pipeline
Build a GitHub Actions workflow that lints, tests, builds, scans and pushes your app image tagged with the commit SHA, deploys it to your stage one server as staging, and gates a production job behind a manual approval. Keep secrets in environments, pin actions to SHAs and document how to roll back to the previous image.
Cloud Fundamentals on AWS
About 5-6 weeks
Design, build and secure a simple production setup on AWS by hand, and explain what each piece costs.
IAM and Account Security
CoreEvery AWS action is an IAM decision, and many cloud breaches start with an overly broad key or role.
- Secure the root user with MFA
- Users vs roles vs Identity Center
- Read and write JSON policies
- Assume roles for temporary access
- Least privilege and Access Analyzer
- CLI profiles and SSO login
VPC Networking
CoreA VPC is your private network in the cloud, and getting subnets and routing right is what keeps databases off the internet.
- Plan CIDR ranges
- Public vs private subnets
- Route tables and internet gateways
- NAT gateways and their cost
- Security groups vs network ACLs
- VPC endpoints for AWS services
Compute: EC2, Containers and Serverless
CoreYou need to know when a workload belongs on a VM, a managed container service or a function, because each has different costs and upkeep.
- EC2 instance types and AMIs
- User data for bootstrapping
- Launch templates and Auto Scaling
- ECS on Fargate for containers
- Lambda for event-driven jobs
- Session Manager instead of open SSH
Storage and Databases
CoreState is the hardest part of any system, so you must know how AWS stores files and databases and how to back them up.
- S3 buckets, classes and lifecycle
- Block public access by default
- EBS volumes and snapshots
- RDS Multi-AZ and read replicas
- Automated backups and restores
- Encryption at rest with KMS
Load Balancing, DNS and Certificates
CoreThis is how users actually reach your app on AWS, and it ties together what you learned about Nginx, DNS and TLS in stage one.
- ALB vs NLB
- Target groups and health checks
- Route 53 records and routing
- Free certificates with ACM
- CloudFront for static assets
CloudWatch and CloudTrail
CoreBefore adding third-party tools, you should be able to see metrics, logs and an audit trail using what AWS already gives you.
- Metrics and alarms
- Log groups and Logs Insights
- CloudTrail for API auditing
- Alarm notifications through SNS
- Log retention settings
Cost Awareness and Other Clouds
RecommendedTeams expect DevOps engineers to spot waste early and to carry their AWS knowledge over to Azure or Google Cloud when a job needs it.
- On-demand, spot and savings plans
- Budgets and cost alerts
- Tag resources for cost tracking
- Data transfer and NAT charges
- Map services to Azure and GCP
- Tear down what you do not use
Build: Two-tier App on AWS, by Hand
In the console, build a VPC with public and private subnets, an ALB in front of an Auto Scaling group of EC2 instances, and an RDS database in the private subnets, with CloudWatch alarms and a monthly budget alert. Draw the architecture, note what each part costs, then tear it all down.
Infrastructure as Code
About 4-5 weeks
Rebuild a whole environment from code, review infrastructure changes in pull requests and configure servers repeatably.
Terraform Basics
CoreDeclaring infrastructure in code makes it reviewable and repeatable, and the Terraform language, shared with OpenTofu, is the IaC skill job posts ask for most.
- Providers and resources
- Variables, outputs and locals
- Data sources
- init, plan, apply, destroy
- Read every plan before applying
- Commit the dependency lock file
State and Backends
CoreState is how the tool knows what already exists, and losing or corrupting it is one of the worst IaC incidents you can have.
- What state stores and why
- Remote state in S3 with locking
- Separate state per environment
- Import existing resources
- Refactor with moved blocks
- Detect and fix drift
- Treat state as sensitive data
Modules and Project Layout
CoreModules let you reuse a tested network or service pattern across environments instead of copying files around.
- Module inputs and outputs
- count vs for_each
- Pin module and provider versions
- One folder per environment
- Use registry modules with care
- Keep modules small and focused
IaC in Pipelines
CoreRunning plans on pull requests and applies from CI removes laptop drift and gives every infrastructure change a reviewer.
- fmt, validate and lint
- Plan on PR, post the output
- Apply on merge only
- OIDC credentials for the runner
- Scan code with Checkov or Trivy
- Policy checks before apply
OpenTofu
RecommendedOpenTofu is the open source Terraform fork under the Linux Foundation, a growing number of teams pick it for new projects, and most existing Terraform code works with it.
- Why the fork exists
- The tofu CLI and registry
- Client-side state encryption
- Migrating from Terraform
- Where the two tools differ
Configuration with Ansible
RecommendedTerraform creates servers and Ansible configures what runs on them, which is still common wherever VMs and on-prem machines exist.
- Static and dynamic inventories
- Playbooks, tasks and modules
- Idempotent tasks and handlers
- Roles and collections
- Templates with Jinja2
- Secrets with ansible-vault
Other IaC Tools
OptionalSome teams use cloud-native or general-purpose-language IaC instead, and recognizing these tools makes you easier to hire.
- CloudFormation templates and stacks
- AWS CDK in TypeScript or Python
- Pulumi with general-purpose languages
- Crossplane for Kubernetes-managed infrastructure
Build: Rebuild the AWS Setup as Code
Recreate your stage five environment with Terraform or OpenTofu modules, remote state in S3 and one folder per environment, running plan on pull requests and apply on merge through OIDC. Add an Ansible playbook that configures the instances, then destroy and recreate everything to prove it works.
Kubernetes and GitOps
About 6-8 weeks
Deploy, expose, scale and debug services on a Kubernetes cluster, and let Git drive every change to it.
Cluster Basics and Workloads
CoreKubernetes is the default platform for running containers at scale, and everything starts with the objects that keep your pods running.
- Control plane and worker nodes
- kubectl, contexts and namespaces
- Pods, Deployments and ReplicaSets
- StatefulSets, DaemonSets and Jobs
- Labels and selectors
- Debug with describe, logs, events
- Practice locally with kind
Services, Gateway API and Network Policy
CorePods come and go, so you need stable ways to reach them, and since the community ingress-nginx controller was retired in 2026, new setups should use the Gateway API.
- Service types: ClusterIP, NodePort, LoadBalancer
- Cluster DNS names
- Gateways and HTTPRoutes
- Ingress in existing clusters
- Migrating off ingress-nginx
- NetworkPolicies with default deny
Configuration, Secrets and Storage
CoreKeeping config out of images and data on durable volumes is what lets the same image run safely in every environment.
- ConfigMaps as env or files
- Secrets are encoded, not encrypted
- Encrypt secrets at rest
- PersistentVolumes and claims
- StorageClasses and dynamic provisioning
Resources, Probes and Autoscaling
CoreMissing requests, limits and probes are behind many common Kubernetes incidents, from evicted pods to traffic hitting apps that are not ready.
- Requests vs limits
- QoS classes and OOM kills
- Liveness, readiness and startup probes
- Horizontal Pod Autoscaler
- PodDisruptionBudgets
- Node autoscaling, for example Karpenter
Helm and Kustomize
CoreRaw YAML does not scale across many services and environments, so teams package apps as Helm charts or patch them with Kustomize.
- Chart structure and templates
- Values files per environment
- Install, upgrade and roll back
- Charts from OCI registries
- Kustomize bases and overlays
- Render and diff before applying
Managed Kubernetes: EKS, GKE, AKS
RecommendedMost companies rent the control plane from a cloud provider, so you need to know what the provider manages and what is still your job.
- What the provider manages
- Managed node groups and Fargate
- Pod-level IAM with Pod Identity
- Load balancer controller integration
- Plan cluster version upgrades
- Provision clusters with Terraform
GitOps with Argo CD or Flux
CoreWith GitOps the cluster pulls its desired state from Git, which gives you history, easy rollback and no kubectl from laptops, and Argo CD is the most widely adopted tool for it.
- Declarative, versioned, pulled, reconciled
- Argo CD Applications and projects
- Sync, self-heal and pruning
- ApplicationSets for many clusters
- Promote images across environments
- Flux as the main alternative
Build: GitOps-managed Cluster
Create a cluster with kind or with EKS from your Terraform code, package your app as a Helm chart with requests, limits, probes and an autoscaler, and expose it through the Gateway API. Install Argo CD and have it sync separate staging and production overlays from Git, so a merged pull request is the only way to change the cluster.
Observability and Reliability
About 4-5 weeks
Notice when a service is unhealthy before users do, find out why, and recover data and service after a failure.
Metrics with Prometheus
CoreMetrics are the cheapest way to see trends and trigger alerts, and Prometheus is the standard choice in Kubernetes environments.
- Counters, gauges and histograms
- Scrape targets and service discovery
- Exporters such as node_exporter
- PromQL: rate, sum, by
- Recording rules
- Keep label cardinality low
Dashboards with Grafana
CoreGood dashboards answer "is it broken, and where" in seconds, which is exactly what you need during an incident.
- Connect data sources
- RED method for services
- USE method for resources
- Variables for reusable dashboards
- Dashboards as code in Git
Logs and Log Pipelines
CoreLogs explain what happened in detail, but only if they are structured, collected in one place and kept at a cost you can afford.
- Structured JSON logs
- Log levels and what to log
- Ship logs with Fluent Bit
- Store in Loki or OpenSearch
- Retention and cost limits
- Correlate logs with trace IDs
Tracing with OpenTelemetry
CoreIn systems with many services, traces show where time and errors come from, and OpenTelemetry is now the vendor-neutral standard for traces, metrics and logs.
- Traces, spans and attributes
- Context propagation between services
- Auto vs manual instrumentation
- The OpenTelemetry Collector
- Export with OTLP
- Backends such as Jaeger or Tempo
- Sampling to control cost
SLIs, SLOs and Alerting
CoreAlerting on user-facing symptoms against an agreed target keeps on-call bearable and tells the team when to slow down and fix reliability.
- Choose SLIs users care about
- Set SLOs and error budgets
- Alert on symptoms, not causes
- Burn-rate alerts
- Route alerts with Alertmanager
- Every alert needs a runbook
Incident Response and Postmortems
CoreEvery team has outages, and what earns trust is handling them calmly and making sure the same one does not happen twice.
- Severity levels and escalation
- Incident commander and other roles
- Status updates to stakeholders
- Mitigate first, find root cause later
- Blameless postmortems
- Track action items to done
Backups and Disaster Recovery
CoreA backup you have never restored is only a hope, and recovery targets decide how much data and time the business can afford to lose.
- RPO and RTO targets
- The 3-2-1 backup rule
- Automate and test restores
- Back up clusters with Velero
- Multi-AZ vs multi-region
- Game days and recovery drills
Build: Give Your App an SLO
Instrument the app with Prometheus metrics, OpenTelemetry traces and structured logs, build a Grafana dashboard, and define an availability SLO with burn-rate alerts. Then break something on purpose, restore the database from a backup, and write a blameless postmortem.
DevSecOps and Platform Engineering
About 5-6 weeks
Secure the path from commit to production and package it as a self-service golden path that other developers use without asking you.
Secrets Management
CoreLeaked credentials are a leading cause of breaches, so secrets must live in a dedicated manager, rotate regularly and never touch Git.
- Vault, OpenBao or cloud managers
- Short-lived, dynamic credentials
- Automatic rotation
- External Secrets Operator in Kubernetes
- Secret scanning and push protection
- Revoke fast after a leak
Security Testing in the Pipeline
CoreFinding vulnerabilities at pull request time is far cheaper than finding them in production, and security gates are now a normal part of CI.
- SAST with CodeQL or Semgrep
- Dependency scanning with Dependabot
- IaC and container scanning
- DAST with ZAP on staging
- Triage false positives
- Fix deadlines by severity
Software Supply Chain Security
RecommendedAttackers increasingly go after build systems and dependencies, so teams need to prove what went into an artifact and who built it.
- SBOMs in SPDX or CycloneDX
- Sign images with Cosign
- Build provenance and SLSA levels
- GitHub artifact attestations
- Verify signatures at deploy time
- Pin and review dependencies
Least Privilege and Policy as Code
CoreLimiting what every person, pipeline and pod can do shrinks the damage from any single mistake or compromise.
- Scoped IAM roles per workload
- Kubernetes RBAC and service accounts
- Pod Security Standards
- Default-deny network policies
- Policy engines: Kyverno or OPA Gatekeeper
- Audit logs and access reviews
Internal Developer Platforms and Golden Paths
RecommendedPlatform engineering turns the tools from this roadmap into self-service paths, so product teams can ship safely without filing tickets.
- Treat the platform as a product
- Golden path service templates
- Service catalog and ownership
- Backstage templates and TechDocs
- Self-service environments
- Measure with DORA metrics
FinOps and Cost Control
RecommendedCloud bills grow quietly, and engineers who can tie spend to teams and features are valued on every platform team.
- Inform, optimize, operate cycle
- Cost allocation tags and showback
- Rightsize and autoscale
- Spot and commitment discounts
- Kubernetes costs with OpenCost
- Cost per customer or request
AI Workloads and AI-assisted Operations
OptionalMore teams now run model inference on their own clusters and use AI assistants in ops work, so knowing the basics sets you apart.
- GPU node pools and scheduling
- Serve models on Kubernetes
- Trace LLM calls with OpenTelemetry
- Review AI-written IaC like any PR
- Scoped credentials for AI agents
Build: Paved Road for a New Service
Build a Backstage software template, or a plain template repo, that creates a new service with a Dockerfile, Helm chart, CI pipeline, signed images, an SBOM, secrets pulled from a secret manager, cost tags and a starter dashboard. Time how long it takes a teammate to go from nothing to a running service, and fix the slowest step.
Go deeper
Last reviewed .