Professional Documents
Culture Documents
AWS For Developers (Part 2) - Petar Marinkovic
AWS For Developers (Part 2) - Petar Marinkovic
developers (part 2)
Petar Marinković
petar.marinkovic@fatcatcoders.com
AWS for developers (part 2) - Infrastructure
as code
What is IaC?
IaC concepts
Terraform in Action - Shapa App (bootstrap)
Deploy prerequisites
Deploy frontend
Deploy backend
What is IaC?
Martin Fowler
IaC concepts
Write and execute code to define, deploy, update, and destroy your infrastructure
Automate the creation of your infrastructure and applications on public cloud (AWS, Azure, GCP),
on-premise hypervisors (VMware, OpenStack, Kubernetes) or bare metal servers (Linux / Unix,
Windows)
1. Ad-hoc scripts (Bash, PowerShell, Python, any scripting language of your choice) - hard to
manage / not idempotent
2. Configuration management tools (install and manage software on the systems - Ansible,
Puppet, Chef, SaltStack) - used for managing and updating infrastructure, but not defining it
3. Server templating tools (Docker, Packer, Vagrant) - makes an image, but needs to deploy it
“somewhere”
4. Orchestration tools (Kubernetes, Docker Swarm, Mesos, AWS ECS, VMware vSphere) - all
about YAML :)
5. Provisioning tools (Terraform, AWS CloudFormation, OpenStack Heat) - Terraform becoming
“synonym” for IAC
Terraform in Action - Shapa app (bootstrap)
When to commit?
VPC (and VPC components) - to provide networking for ECS / EKS (backend
hosting)
ECS cluster - use Fargate for serverless hosting without managing servers
ECS tasks - which Docker image to use, what env variables / secrets, Docker
configuration
Application Load Balancing - route several ECS tasks based on their host / path
rules