Infrastructure as Code:
Manage your Architecture with Git
Danilo Poccia ‒ AWS Technical Evangelist
@danilop danilop
http://en.wikipedia.org/wiki/Multitier_architecture
As a Project scales Complexity arises
“Complexity arises when the
dependencies among the elements
become important.”
Complex Adaptive Systems:
An Introduction to Computational Models of Social Life
Scott E. Page, John H. Miller
How to design

smaller services?
Business Domain
+
Loosely Coupled
+
Bounded Context
Microservices
Independent Deployment
Microservices
Choose the Right Tool
Microservices
Adopt New Technologies
Microservices
Culture of Automation
Adrian Cockcroft, Technology Fellow at Battery Ventures
http://www.slideshare.net/adriancockcroft/goto-berlin
How small is small?
“something that could be
rewritten in two weeks”
Two Pizza Teams
“A single website may now handle
as much traffic as the entire Internet
did less than a decade ago.”
What is Reactive Programming?
Kevin Webber
Infrastructure as Code
Writing Code to
Manage Configurations

and Automate Provisioning
of Infrastructure
Manage IT Infrastructure using
Tools and Practices
from Software Development
Infrastructure as Code
Version Control
Infrastructure as Code
Rollback
Infrastructure as Code
Testing
Infrastructure as Code
Small Deployments
Infrastructure as Code
Design Patterns
Application
Code
Infrastructure
CI
Continuous
Integration
Deploy
Application
Code
Infrastructure
Code
Cloud
Infrastructure
CI
Continuous
Integration
Build
+
Deploy
Application
Code
Infrastructure
Code
AWS
Elastic Beanstalk
Application
Code
Infrastructure
Code
AWS
CloudFormation
AWS Elastic Beastalk
An Easy-to-Use Service
for Deploying and Scaling
Web Applications and Services
Java
.NET
Node.js
PHP
Python
Ruby
Go
Docker
Infrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with Git
git branch
Environment
git commit
Application
Version
Application
Code
Infrastructure
Code
AWS Elastic Beanstalk
Application
Test
Environment
Production
Environment
develop
branch
master
branch
git commit + eb deploy
<demo>
…
</demo>
https://youtu.be/3lqz_YFXLF0
AWS CloudFormation
Create and Manage a Collection
of Related AWS Resources
CloudFormation
Template
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Infrastructure as Code - CloudFormation Demo",
"Parameters": {
"InstanceType": {
"Type": "String",
"AllowedValues": [
"t2.micro", "t2.small", “t2.medium", "m3.medium", "m3.large", "m3.xlarge", “m3.2xlarge”, "c3.large", “c3.xlarge",
"c3.2xlarge", "c3.4xlarge", “c3.8xlarge", "r3.large", "r3.xlarge", "r3.2xlarge", "r3.4xlarge", "r3.8xlarge",
"i2.xlarge", "i2.2xlarge", "i2.4xlarge", "i2.8xlarge"
],
"ConstraintDescription": "must be a valid EC2 instance type.",
"Default": "t2.micro",
"Description": "WebServer EC2 instance type"
},
"KeyName": {
"Type": "AWS::EC2::KeyPair::KeyName",
"ConstraintDescription": "must be the name of an existing EC2 KeyPair.",
"Description": "Name of an existing EC2 KeyPair to enable SSH access to the instances",
"Default": "danilop-keypair-eu-central-1"
},
"SSHLocation": {
"Type": "String",
"AllowedPattern": "(d{1,3}).(d{1,3}).(d{1,3}).(d{1,3})/(d{1,2})",
"ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x.",
"Default": "0.0.0.0/0",
"Description": "The IP address range that can be used to SSH to the EC2 instances",
"MaxLength": "18",
"MinLength": "9"
}
},
"Resources": {
"ElasticLoadBalancer": {
"Type": "AWS::ElasticLoadBalancing::LoadBalancer",
"Properties": {
"AvailabilityZones": { "Fn::GetAZs": “" },
"CrossZone": "true",
"HealthCheck": { "HealthyThreshold": "2", "Interval": "10", "Target": "HTTP:80/", "Timeout": “5", "UnhealthyThreshold": “3" },
"Listeners": [ { "InstancePort": "80", "LoadBalancerPort": "80", "Protocol": “HTTP" } ],
"Tags": [ { "Key" : "Name", "Value" : “CFDemo" } ]
}
},
"InstanceSecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"GroupDescription": "Enable SSH access and HTTP access on the inbound port",
"SecurityGroupIngress": [
{
"FromPort": "80",
"IpProtocol": "tcp",
"SourceSecurityGroupName": { "Fn::GetAtt": [ "ElasticLoadBalancer", “SourceSecurityGroup.GroupName" ] },
"SourceSecurityGroupOwnerId": {"Fn::GetAtt": [ "ElasticLoadBalancer", “SourceSecurityGroup.OwnerAlias" ] },
"ToPort": "80"
},
{
"CidrIp": { "Ref": “SSHLocation" }, "FromPort": "22", "IpProtocol": "tcp", "ToPort": "22"
}
]
}
},
"LaunchConfig": {
"Type": "AWS::AutoScaling::LaunchConfiguration",
"Properties": {
"ImageId": "ami-a88bb6b5",
"InstanceType": { "Ref": “InstanceType" },
"KeyName": { "Ref": “KeyName" },
"SecurityGroups": [ { "Ref": “InstanceSecurityGroup" } ]
}
},
"WebServerGroup": {
"Type": "AWS::AutoScaling::AutoScalingGroup",
"Properties": {
"AvailabilityZones": { "Fn::GetAZs": “" },
"LaunchConfigurationName": { "Ref": “LaunchConfig" },
"LoadBalancerNames": [ { "Ref": “ElasticLoadBalancer" } ],
"MinSize": "1",
"MaxSize": "4",
"DesiredCapacity": "1",
"Tags": [ { "Key" : "Name", "Value" : "CFDemo", "PropagateAtLaunch" : true } ]
}
}
},
"Outputs": {
"URL": {
"Description": "URL of the website",
"Value": { "Fn::Join": [ "", [ "http://", { "Fn::GetAtt": [ "ElasticLoadBalancer", "DNSName" ] } ] ] }
}
}
}
CloudFormation
Template
JSON Syntax
Parameters
Mappings
Resources
Outputs
{
	
  	
  "Description"	
  :	
  "Create	
  RDS	
  with	
  username	
  and	
  password",
	
  	
  "Resources"	
  :	
  {
	
  	
  	
  	
  "MyDB"	
  :	
  {
	
  	
  	
  	
  	
  	
  "Type"	
  :	
  "AWS::RDS::DBInstance",
	
  	
  	
  	
  	
  	
  "Properties"	
  :	
  {
	
  	
  	
  	
  	
  	
  	
  	
  "AllocatedStorage"	
  :	
  "500",
	
  	
  	
  	
  	
  	
  	
  	
  "DBInstanceClass"	
  :	
  "db.t2.micro",	
  
	
  	
  	
  	
  	
  	
  	
  	
  "Engine"	
  :	
  "MySQL",	
  
	
  	
  	
  	
  	
  	
  	
  	
  "EngineVersion"	
  :	
  "5.6",	
  
	
  	
  	
  	
  	
  	
  	
  	
  "MasterUsername"	
  :	
  "MyName",	
  
	
  	
  	
  	
  	
  	
  	
  	
  "MasterUserPassword"	
  :	
  "MyPassword"	
  
	
  	
  	
  	
  	
  	
  }
	
  	
  	
  	
  }}}
"AWS::CloudFormation::Init"	
  :	
  {	
  "config"	
  :	
  {
	
  	
  	
  	
  "packages"	
  :	
  {
	
  	
  	
  	
  	
  	
  "yum"	
  :	
  {
	
  	
  	
  	
  	
  	
  	
  	
  "mysql"	
  	
  	
  	
  	
  	
  	
  	
  :	
  [],
	
  	
  	
  	
  	
  	
  	
  	
  "mysql-­‐server"	
  :	
  [],
	
  	
  	
  	
  	
  	
  	
  	
  "httpd"	
  	
  	
  	
  	
  	
  	
  	
  :	
  [],
	
  	
  	
  	
  	
  	
  	
  	
  "php"	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :	
  [],
	
  	
  	
  	
  	
  	
  	
  	
  "php-­‐mysql"	
  	
  	
  	
  :	
  []
	
  	
  	
  	
  	
  	
  }},
	
  	
  	
  	
  "sources"	
  :	
  {
	
  	
  	
  	
  	
  	
  "/var/www/html"	
  :

	
  	
  	
  	
  	
  	
  	
  	
  	
  "https://my-­‐builds.s3.amazonaws.com/build-­‐v4.zip"
	
  	
  	
  	
  }}}
Template + Parameters
Stack
Template
Same for Multiple Stacks

(different environments)
Parameters
Specific for a Stack
(configuration management)
CloudFormer
Template Creation Tool
(from existing AWS resources)
Application
Code
Infrastructure
Code
AWS CloudFormation
Test
Stack
Production
Stack
create
update
create
update
Infrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with Git
<demo>
…
</demo>
https://youtu.be/Wk-­‐tOPicq78
Disposable Infrastructure
Immutable Deployments
Amazon EC2

Container Service
Highly scalable, high performance
container management service
Cluster
Container Instances
Tasks
Services
AWS CodeCommit
AWS CodeDeploy
AWS CodePipeline
Fully-managed source control,

deployments and continuous delivery
Infrastructure as Code: Manage your Architecture with Git
Application + Infrastructure
Data + Code
350 West Broadway, New York, NY
Building Server-less and Event-driven Applications
Monday, July 20, 3:00pm - 6:00pm
Infrastructure as Code: Manage your Architecture with Git
@danilop
danilop

More Related Content

PDF
Infrastructure as Code: Manage your Architecture with Git
PPTX
Infrastructure as Code - AWS CloudFormation
PDF
DevOps with Amazon Web Services (November 2016)
PPTX
AWS CloudFormation Intrinsic Functions and Mappings
PDF
Infrastructure as Code for Beginners
PDF
Amazon EC2 Container Service Live Demo - Microservices Web Day
PPTX
AWS Presents: Infrastructure as Code on AWS - ChefConf 2015
PPTX
Cloudformation101
Infrastructure as Code: Manage your Architecture with Git
Infrastructure as Code - AWS CloudFormation
DevOps with Amazon Web Services (November 2016)
AWS CloudFormation Intrinsic Functions and Mappings
Infrastructure as Code for Beginners
Amazon EC2 Container Service Live Demo - Microservices Web Day
AWS Presents: Infrastructure as Code on AWS - ChefConf 2015
Cloudformation101

What's hot (12)

PDF
[AWS Dev Day] 앱 현대화 | AWS Fargate를 사용한 서버리스 컨테이너 활용 하기 - 삼성전자 개발자 포털 사례 - 정영준...
PPTX
Infrastructure as Code in AWS using Cloudformation
PDF
Azure ARM Templates 101
PDF
Continuous Deployment with Amazon Web Services
DOCX
Deploying to azure web sites
PPTX
Running Vue Storefront in production (PWA Magento webshop)
PDF
Aws container webinar day 1
PDF
Aws container webinar day 2
PPTX
Securing an Azure full-PaaS architecture - Data saturday #0001 Pordenone
PDF
AWS Black Belt Online Seminar AWS CloudFormation アップデート
PPTX
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
PDF
Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...
[AWS Dev Day] 앱 현대화 | AWS Fargate를 사용한 서버리스 컨테이너 활용 하기 - 삼성전자 개발자 포털 사례 - 정영준...
Infrastructure as Code in AWS using Cloudformation
Azure ARM Templates 101
Continuous Deployment with Amazon Web Services
Deploying to azure web sites
Running Vue Storefront in production (PWA Magento webshop)
Aws container webinar day 1
Aws container webinar day 2
Securing an Azure full-PaaS architecture - Data saturday #0001 Pordenone
AWS Black Belt Online Seminar AWS CloudFormation アップデート
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...

Viewers also liked (20)

PPTX
DevOps Day - Infrastructure As A Code
PDF
Un jenkins amélioré avec docker mesos et marathon à Devoxx 2015
PDF
Artem Zhurbila - 1 aws overview
PDF
Artem Zhurbila 5 aws - cloud formation and beanstalk
PDF
Artem Zhurbila - 2 aws - EC2
PDF
Managing releases effectively through git
PDF
Artem Zhurbila - 3 aws - route 53, vpc
PDF
Artem zhurbila the story of rebuilding puppet (devops meetup 29.10.2015)
PDF
Artem Zhurbila - Some ways to set up the server (highload strategy meetup lig...
ODP
Software Build processes and Git
PPTX
Webinar - Manage Galera Cluster with Puppet
PDF
Artem Zhurbila 4 aws - s3, glacier, cloud front, rds
PDF
Meeyup aws-loadbalancing-28032015
PDF
Meetup #4: AWS ELB Deep dive & Best practices
PDF
Deploy Application Files with Git
PDF
How Does Amazon EC2 Auto Scaling Work
PDF
Artem Zhurbila - docker clusters (solit 2015)
PPTX
AWS EC2 and ELB troubleshooting
PDF
All You Need to Know about AWS Elastic Load Balancer
PPTX
A successful Git branching model
DevOps Day - Infrastructure As A Code
Un jenkins amélioré avec docker mesos et marathon à Devoxx 2015
Artem Zhurbila - 1 aws overview
Artem Zhurbila 5 aws - cloud formation and beanstalk
Artem Zhurbila - 2 aws - EC2
Managing releases effectively through git
Artem Zhurbila - 3 aws - route 53, vpc
Artem zhurbila the story of rebuilding puppet (devops meetup 29.10.2015)
Artem Zhurbila - Some ways to set up the server (highload strategy meetup lig...
Software Build processes and Git
Webinar - Manage Galera Cluster with Puppet
Artem Zhurbila 4 aws - s3, glacier, cloud front, rds
Meeyup aws-loadbalancing-28032015
Meetup #4: AWS ELB Deep dive & Best practices
Deploy Application Files with Git
How Does Amazon EC2 Auto Scaling Work
Artem Zhurbila - docker clusters (solit 2015)
AWS EC2 and ELB troubleshooting
All You Need to Know about AWS Elastic Load Balancer
A successful Git branching model

Similar to Infrastructure as Code: Manage your Architecture with Git (16)

PPTX
Introduction to DevOps on AWS
PDF
Scaling Drupal in AWS Using AutoScaling, Cloudformation, RDS and more
PDF
2013 05-openstack-israel-heat
PDF
Scalable and Fault-Tolerant Apps with AWS
PDF
Microservice Architecture on AWS using AWS Lambda and Docker Containers
PDF
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
PPTX
Developing your first application using FIWARE
KEY
Google App Engine - Simple Introduction
ODP
Puppet and Apache CloudStack
PDF
Immutable AWS Deployments with Packer and Jenkins
PPTX
CCI2018 - Automatizzare la creazione di risorse con ARM template e PowerShell
PPTX
Infrastructure as code, using Terraform
PDF
Hands-on with AWS IoT (November 2016)
PPTX
Drilett aws vpc_presentation_shared
PPTX
Automation with Packer and TerraForm
PPTX
Automated Intrusion Detection and Response on AWS
Introduction to DevOps on AWS
Scaling Drupal in AWS Using AutoScaling, Cloudformation, RDS and more
2013 05-openstack-israel-heat
Scalable and Fault-Tolerant Apps with AWS
Microservice Architecture on AWS using AWS Lambda and Docker Containers
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
Developing your first application using FIWARE
Google App Engine - Simple Introduction
Puppet and Apache CloudStack
Immutable AWS Deployments with Packer and Jenkins
CCI2018 - Automatizzare la creazione di risorse con ARM template e PowerShell
Infrastructure as code, using Terraform
Hands-on with AWS IoT (November 2016)
Drilett aws vpc_presentation_shared
Automation with Packer and TerraForm
Automated Intrusion Detection and Response on AWS

More from Danilo Poccia (20)

PDF
Get Value from Your Data
PDF
Building Event-Driven Serverless Applications
PDF
Connecting the Unconnected: IoT Made Simple
PDF
Building Event-driven Serverless Apps
PDF
An Introduction to AWS IoT
PDF
Event-driven (serverless) Applications
PDF
Machine Learning for Developers
PDF
Masterclass Advanced Usage of the AWS CLI
PDF
Cloud-powered Mobile Apps
PDF
Get Value From Your Data
PDF
Amazon Elastic File System (Amazon EFS)
PDF
AWS Mobile Hub Overview
PDF
Data Analytics on AWS
PDF
Managing Containers at Scale
PDF
Amazon API Gateway and AWS Lambda: Better Together
PDF
Amazon Aurora Let's Talk About Performance
PDF
Build a Server-less Event-driven Backend with AWS Lambda and Amazon API Gateway
PDF
Amazon Aurora: Amazon’s New Relational Database Engine
PDF
Build a Server-less Event-driven Backend with AWS Lambda and Amazon API Gateway
PDF
Building a Scalable and Highly Available Web Service with AWS: A Live Demo
Get Value from Your Data
Building Event-Driven Serverless Applications
Connecting the Unconnected: IoT Made Simple
Building Event-driven Serverless Apps
An Introduction to AWS IoT
Event-driven (serverless) Applications
Machine Learning for Developers
Masterclass Advanced Usage of the AWS CLI
Cloud-powered Mobile Apps
Get Value From Your Data
Amazon Elastic File System (Amazon EFS)
AWS Mobile Hub Overview
Data Analytics on AWS
Managing Containers at Scale
Amazon API Gateway and AWS Lambda: Better Together
Amazon Aurora Let's Talk About Performance
Build a Server-less Event-driven Backend with AWS Lambda and Amazon API Gateway
Amazon Aurora: Amazon’s New Relational Database Engine
Build a Server-less Event-driven Backend with AWS Lambda and Amazon API Gateway
Building a Scalable and Highly Available Web Service with AWS: A Live Demo

Recently uploaded (20)

PDF
Multiverse AI Review 2025_ The Ultimate All-in-One AI Platform.pdf
PDF
Module 1 - Introduction to Generative AI.pdf
PPTX
UNIT II: Software design, software .pptx
PPTX
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
PPTX
MCP empowers AI Agents from Zero to Production
PPTX
Beige and Black Minimalist Project Deck Presentation (1).pptx
PPTX
Lesson-3-Operation-System-Support.pptx-I
PPT
introduction of sql, sql commands(DD,DML,DCL))
PDF
Top AI Tools for Project Managers: My 2025 AI Stack
PPTX
ESDS_SAP Application Cloud Offerings.pptx
PPTX
Presentation - Summer Internship at Samatrix.io_template_2.pptx
PPTX
Comprehensive Guide to Digital Image Processing Concepts and Applications
PDF
MaterialX Virtual Town Hall - August 2025
PDF
Difference Between Website and Web Application.pdf
PPTX
Hexagone difital twin solution in the desgining
PPTX
Phoenix Marketo User Group: Building Nurtures that Work for Your Audience. An...
PDF
OpenImageIO Virtual Town Hall - August 2025
PDF
Mobile App for Guard Tour and Reporting.pdf
PPTX
AI Tools Revolutionizing Software Development Workflows
PDF
Ragic Data Security Overview: Certifications, Compliance, and Network Safegua...
Multiverse AI Review 2025_ The Ultimate All-in-One AI Platform.pdf
Module 1 - Introduction to Generative AI.pdf
UNIT II: Software design, software .pptx
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
MCP empowers AI Agents from Zero to Production
Beige and Black Minimalist Project Deck Presentation (1).pptx
Lesson-3-Operation-System-Support.pptx-I
introduction of sql, sql commands(DD,DML,DCL))
Top AI Tools for Project Managers: My 2025 AI Stack
ESDS_SAP Application Cloud Offerings.pptx
Presentation - Summer Internship at Samatrix.io_template_2.pptx
Comprehensive Guide to Digital Image Processing Concepts and Applications
MaterialX Virtual Town Hall - August 2025
Difference Between Website and Web Application.pdf
Hexagone difital twin solution in the desgining
Phoenix Marketo User Group: Building Nurtures that Work for Your Audience. An...
OpenImageIO Virtual Town Hall - August 2025
Mobile App for Guard Tour and Reporting.pdf
AI Tools Revolutionizing Software Development Workflows
Ragic Data Security Overview: Certifications, Compliance, and Network Safegua...

Infrastructure as Code: Manage your Architecture with Git