THIRD-PARTY
INFRASTRUCTURE AS
CODE
Raquel Guimarães
2
ABOUT ME
A story in four parts
3
The Context The Problem The Idea The Solution
THE CONTEXT
THE CONTEXT
5
THE CONTEXT
6
THE CONTEXT
7
THE CONTEXT
8
THE CONTEXT
9
THE CONTEXT
10
THE PROBLEM
THE PROBLEM
Multiple third-party (SaaS) solutions to configure
12
THE PROBLEM
Multiple third-party (SaaS) solutions to configure
13
Does that even count as
infrastructure?
THE PROBLEM
Multiple third-party (SaaS) solutions to configure
14
Does that even count as
infrastructure?
Setup via the GUI
THE PROBLEM
Multiple third-party (SaaS) solutions to configure
15
Does that even count as
infrastructure?
Setup via the GUI
Running on CIs and manually
Setup via ad hoc scripts
THE IDEA
THE IDEA
Recognize
the
patterns
THE IDEA
Recognize
the
patterns
APIs and
SDKs
THE IDEA
Recognize
the
patterns
Reuse
existing
scripts
APIs and
SDKs
THE IDEA
Recognize
the
patterns
Reuse
existing
scripts
Custom
solution?
APIs and
SDKs
THE SOLUTION
THE SOLUTION
22
CloudFormation Custom Resource
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Resources" : {
"MyDashboard" : {
"Type": "Custom::Dashboard",
"Properties" : {
"ServiceToken": "arn:aws:sns:us-west-2:123456789012:dashboard-resource",
"sampleAttribute" : "sampleAttributeValue",
"sampleArrayAttribute" : [ "3", "2", "4" ],
"sampleObjAttribute" : {
"sampleAttribute" : "sampleAttribute",
}
}
}
},
"Outputs" : {
"topItem" : {
"Value" : { "Fn::GetAtt" : ["MyDashboard", "resultsPage"] }
}
}
}
THE SOLUTION: SIDE NOTE
23
CloudFormation Custom Resource
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Resources" : {
"MyDashboard" : {
"Type": "Custom::Dashboard",
"Properties" : {
"ServiceToken": "arn:aws:sns:us-west-2:123456789012:dashboard-resource",
"sampleAttribute" : "sampleAttributeValue",
"sampleArrayAttribute" : [ "3", "2", "4" ],
"sampleObjAttribute" : {
"sampleAttribute" : "sampleAttribute",
}
}
}
},
"Outputs" : {
"topItem" : {
"Value" : { "Fn::GetAtt" : ["MyDashboard", "resultsPage"] }
}
}
}
THE SOLUTION: SIDE NOTE
24
CloudFormation Custom Resource
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Resources" : {
"MyDashboard" : {
"Type": "Custom::Dashboard",
"Properties" : {
"ServiceToken": "arn:aws:sns:us-west-2:123456789012:dashboard-resource",
"sampleAttribute" : "sampleAttributeValue",
"sampleArrayAttribute" : [ "3", "2", "4" ],
"sampleObjAttribute" : {
"sampleAttribute" : "sampleAttribute",
}
}
}
},
"Outputs" : {
"topItem" : {
"Value" : { "Fn::GetAtt" : ["MyDashboard", "resultsPage"] }
}
}
}
THE SOLUTION: SIDE NOTE
25
CloudFormation Custom Resource
Indicates that this
represents a custom
resource
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Resources" : {
"MyDashboard" : {
"Type": "Custom::Dashboard",
"Properties" : {
"ServiceToken": "arn:aws:sns:us-west-2:123456789012:dashboard-resource",
"sampleAttribute" : "sampleAttributeValue",
"sampleArrayAttribute" : [ "3", "2", "4" ],
"sampleObjAttribute" : {
"sampleAttribute" : "sampleAttribute",
}
}
}
},
"Outputs" : {
"topItem" : {
"Value" : { "Fn::GetAtt" : ["MyDashboard", "resultsPage"] }
}
}
}
THE SOLUTION: SIDE NOTE
26
CloudFormation Custom Resource
AWS resource that
will answer the
request
Indicates that this
represents a custom
resource
THE SOLUTION
27
CloudFormation Custom Resource
THE SOLUTION
28
CloudFormation Custom Resource
Service CF template
THE SOLUTION
29
CloudFormation Custom Resource
CloudFormation
THE SOLUTION
30
CloudFormation Custom Resource
SNS
THE SOLUTION
31
CloudFormation Custom Resource
Custom Resource
Lambda
THE SOLUTION
32
CloudFormation Custom Resource
Third-Party resource
THE SOLUTION
33
CloudFormation Custom Resource
THE SOLUTION
34
CloudFormation Custom Resource
Manipulates the
third-party resource
THE SOLUTION
35
CloudFormation Custom Resource
Manipulates the
third-party resource
Testable code!
THE SOLUTION
36
CloudFormation Custom Resource
Manipulates the
third-party resource
Testable code!
Easily enhanceable,
custom DSLs
THE SOLUTION
37
CloudFormation Custom Resource
Manipulates the
third-party resource
Testable code!
Reusable entrypoint,
if needed
Easily enhanceable,
custom DSLs
THE SOLUTION
38
CloudFormation Custom Resource
Manipulates the
third-party resource
Testable code!
State is managed by
CloudFormation
Reusable entrypoint,
if needed
Easily enhanceable,
custom DSLs
THE SOLUTION
39
CloudFormation Custom Resource
Manipulates the
third-party resource
Testable code!
State is managed by
CloudFormation
Third-Party resources are defined
together with the other resources
Reusable entrypoint,
if needed
Easily enhanceable,
custom DSLs
THE SOLUTION
40
CloudFormation Custom Resource
THANK YOU
Raquel Guimarães
raquel.guimaraes@thoughtworks.com

More Related Content

PDF
Kief Morris - Infrastructure is terrible
KEY
Zendcon 09
PDF
Azure Large Scale Deployments - Tales from the Trenches
PDF
Micro app-framework
PDF
Frontin like-a-backer
KEY
Html5 For Jjugccc2009fall
PDF
PHP Experience 2016 - [Workshop] Elastic Search: Turbinando sua aplicação PHP
PDF
Cassandra Day London: Building Java Applications
Kief Morris - Infrastructure is terrible
Zendcon 09
Azure Large Scale Deployments - Tales from the Trenches
Micro app-framework
Frontin like-a-backer
Html5 For Jjugccc2009fall
PHP Experience 2016 - [Workshop] Elastic Search: Turbinando sua aplicação PHP
Cassandra Day London: Building Java Applications

What's hot (16)

PDF
Testing Backbone applications with Jasmine
PDF
Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014
ODP
My app is secure... I think
PDF
MongoDB .local Paris 2020: La puissance du Pipeline d'Agrégation de MongoDB
PDF
Contagion的Ruby/Rails投影片
 
PDF
Temporary Cache Assistance (Transients API): WordCamp Birmingham 2014
PDF
Cassandra SF 2015 - Repeatable, Scalable, Reliable, Observable Cassandra
PDF
Charla EHU Noviembre 2014 - Desarrollo Web
PDF
Perl object ?
PPT
Spring data iii
ODP
The promise of asynchronous php
PDF
Byte Sized Rust
PDF
Testing Web Applications with GEB
PPTX
A Functional Guide to Cat Herding with PHP Generators
KEY
jQuery: Tips, tricks and hints for better development and Performance
ODP
My app is secure... I think
Testing Backbone applications with Jasmine
Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014
My app is secure... I think
MongoDB .local Paris 2020: La puissance du Pipeline d'Agrégation de MongoDB
Contagion的Ruby/Rails投影片
 
Temporary Cache Assistance (Transients API): WordCamp Birmingham 2014
Cassandra SF 2015 - Repeatable, Scalable, Reliable, Observable Cassandra
Charla EHU Noviembre 2014 - Desarrollo Web
Perl object ?
Spring data iii
The promise of asynchronous php
Byte Sized Rust
Testing Web Applications with GEB
A Functional Guide to Cat Herding with PHP Generators
jQuery: Tips, tricks and hints for better development and Performance
My app is secure... I think
Ad

Similar to Raquel Guimaraes- Third party infrastructure as code (18)

PPTX
AWS Presents: Infrastructure as Code on AWS - ChefConf 2015
PDF
Microservices on AWS using AWS Lambda and Docker Containers
PDF
Infrastructure as Code: Manage your Architecture with Git
PPTX
CCI2018 - Automatizzare la creazione di risorse con ARM template e PowerShell
PDF
Infrastructure as Code: Manage your Architecture with Git
PDF
Semplificare l'observability per progetti Serverless
PDF
CloudFormation vs. Elastic Beanstalk & Use cases
PDF
Scaling Drupal in AWS Using AutoScaling, Cloudformation, RDS and more
PDF
2013 05-openstack-israel-heat
PDF
Infrastructure-as-code: bridging the gap between Devs and Ops
PDF
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
PPTX
Serverless archtiectures
PDF
AWS Serverless Workshop
PPTX
Azure Day Reloaded 2019 - ARM Template workshop
PDF
Dev & Test on AWS - Journey Through the Cloud
PDF
MongoDB World 2019: Creating a Self-healing MongoDB Replica Set on GCP Comput...
PDF
Camunda BPM 7.2: Tasklist and Javascript Forms SDK (English)
PDF
Managing Application Lifecycle using Jira and Bitbucket Cloud and AWS Tooling
AWS Presents: Infrastructure as Code on AWS - ChefConf 2015
Microservices on AWS using AWS Lambda and Docker Containers
Infrastructure as Code: Manage your Architecture with Git
CCI2018 - Automatizzare la creazione di risorse con ARM template e PowerShell
Infrastructure as Code: Manage your Architecture with Git
Semplificare l'observability per progetti Serverless
CloudFormation vs. Elastic Beanstalk & Use cases
Scaling Drupal in AWS Using AutoScaling, Cloudformation, RDS and more
2013 05-openstack-israel-heat
Infrastructure-as-code: bridging the gap between Devs and Ops
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
Serverless archtiectures
AWS Serverless Workshop
Azure Day Reloaded 2019 - ARM Template workshop
Dev & Test on AWS - Journey Through the Cloud
MongoDB World 2019: Creating a Self-healing MongoDB Replica Set on GCP Comput...
Camunda BPM 7.2: Tasklist and Javascript Forms SDK (English)
Managing Application Lifecycle using Jira and Bitbucket Cloud and AWS Tooling
Ad

More from Thoughtworks (20)

PDF
Design System as a Product
PDF
Designers, Developers & Dogs
PDF
Cloud-first for fast innovation
PDF
More impact with flexible teams
PDF
Culture of Innovation
PDF
Dual-Track Agile
PDF
Developer Experience
PDF
When we design together
PDF
Hardware is hard(er)
PDF
Customer-centric innovation enabled by cloud
PDF
Amazon's Culture of Innovation
PDF
When in doubt, go live
PDF
Don't cross the Rubicon
PDF
Error handling
PDF
Your test coverage is a lie!
PDF
Docker container security
PDF
Redefining the unit
PPTX
Technology Radar Webinar UK - Vol. 22
PDF
A Tribute to Turing
PDF
Rsa maths worked out
Design System as a Product
Designers, Developers & Dogs
Cloud-first for fast innovation
More impact with flexible teams
Culture of Innovation
Dual-Track Agile
Developer Experience
When we design together
Hardware is hard(er)
Customer-centric innovation enabled by cloud
Amazon's Culture of Innovation
When in doubt, go live
Don't cross the Rubicon
Error handling
Your test coverage is a lie!
Docker container security
Redefining the unit
Technology Radar Webinar UK - Vol. 22
A Tribute to Turing
Rsa maths worked out

Recently uploaded (20)

DOCX
Modern SharePoint Intranet Templates That Boost Employee Engagement in 2025.docx
PDF
Designing Intelligence for the Shop Floor.pdf
PPTX
Computer Software and OS of computer science of grade 11.pptx
PDF
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
PDF
Autodesk AutoCAD Crack Free Download 2025
PDF
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
PPTX
Computer Software - Technology and Livelihood Education
PPTX
Cybersecurity: Protecting the Digital World
PPTX
Trending Python Topics for Data Visualization in 2025
PDF
AI Guide for Business Growth - Arna Softech
PDF
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
PPTX
GSA Content Generator Crack (2025 Latest)
PDF
How Tridens DevSecOps Ensures Compliance, Security, and Agility
PDF
Website Design Services for Small Businesses.pdf
PDF
Multiverse AI Review 2025: Access All TOP AI Model-Versions!
PDF
Cost to Outsource Software Development in 2025
PPTX
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
PDF
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
PPTX
Oracle Fusion HCM Cloud Demo for Beginners
PPTX
Patient Appointment Booking in Odoo with online payment
Modern SharePoint Intranet Templates That Boost Employee Engagement in 2025.docx
Designing Intelligence for the Shop Floor.pdf
Computer Software and OS of computer science of grade 11.pptx
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
Autodesk AutoCAD Crack Free Download 2025
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
Computer Software - Technology and Livelihood Education
Cybersecurity: Protecting the Digital World
Trending Python Topics for Data Visualization in 2025
AI Guide for Business Growth - Arna Softech
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
GSA Content Generator Crack (2025 Latest)
How Tridens DevSecOps Ensures Compliance, Security, and Agility
Website Design Services for Small Businesses.pdf
Multiverse AI Review 2025: Access All TOP AI Model-Versions!
Cost to Outsource Software Development in 2025
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
Oracle Fusion HCM Cloud Demo for Beginners
Patient Appointment Booking in Odoo with online payment

Raquel Guimaraes- Third party infrastructure as code