Skip to content

DevOps and Infrastructure

Modern software delivery: containers, IaC, CI/CD, and the tooling that turns code commits into running infrastructure.


  • Docker


    Containers from first principles. Dockerfile best practices, layer caching, Compose stacks, and the Docker-to-AWS mapping (ECR, ECS, Fargate).

    Docker

  • AWS CDK


    Infrastructure as Code in Python. Constructs, stacks, the synth/diff/deploy workflow, and IAM grant patterns.

    CDK


The DevOps Philosophy

Before DevOps:
  Dev team writes code -> throws it over the wall -> Ops team deploys it
  Result: slow releases, blame culture, "works on my machine"

DevOps:
  Dev and Ops share responsibility for the full lifecycle
  Code -> Build -> Test -> Deploy -> Monitor -> Feedback -> repeat
  Automation at every step: CI/CD pipelines, IaC, automated testing

Key practices:
  Infrastructure as Code  -> version-controlled, reproducible environments
  CI/CD                   -> automated build, test, deploy on every commit
  Containers              -> consistent environments from dev to prod
  Monitoring              -> observe what's actually happening in production
  Feedback loops          -> use production data to improve the next release

AWS DevOps Toolchain

Tool Purpose
CodeCommit Git repository (or use GitHub)
CodeBuild Managed build service (runs tests, builds containers)
CodeDeploy Automated deployment to EC2, Lambda, ECS
CodePipeline Orchestrates the full CI/CD pipeline
CDK IaC — define infrastructure in Python/TypeScript
CloudFormation IaC — JSON/YAML templates (CDK compiles to this)
ECR Container image registry
ECS / Fargate Container orchestration and serverless containers