DevOps and Infrastructure¶
Modern software delivery: containers, IaC, CI/CD, and the tooling that turns code commits into running infrastructure.
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 |