SlideShare a Scribd company logo
Controlling Your
Environments using
Infrastructure As Code
ConFoo Montréal - February 2016
Steve Mercier
Copyright Software That Matters… Done Right! Inc. 2016
Who am I?
I participated in multiple software development projects:
• from very small (<10 person) to large (~400 persons)
• from a long time ago (>20 years) up to now
• from different angles/roles: Developer, Architect, PM, DevOps/
BuildMaster, Software Release Manager
• I have seen software methods/processes come and go: Waterfall,
RUP, OpenUP, XP, Scrum, Scaled Agile, etc.
But the essential remains:
I believe that to produce good software, it takes good people +
resources AND discipline/professionalism/focus!
Are You Agile?
Agile is not easy… and is not only about ceremonies + tools!
Scrum Overview
Nothing on the previous slide concerning
software context, where is the code
delivered, running, performing…
Agile typically deals with this with the Definition Of Done
concept, sadly overlooked way too often…
What would be a good
measure of Agility
anyway?
Suggestion #1:
The capability to release
(aka)
The frequency at which you are
delivering software updates
that add business value to your clients
without breaking any previously
delivered business value that you want
to retain
Suggestion #2:
The time to release
(aka)
The time it takes you to deliver
the smallest change/fix to your
software in production
Given that:
What prevents true
agility?
What prevents you to release?
What prevents you to release fast?
From my point of view:
Lack of environments’
management
True for all types of environments:
DEV, QA, Staging, Production
Platform dependencies?
Do you manage them?
ex: Frameworks dependencies, external libraries
dependencies, etc. Are they either never updated or are
they continuously creating problem when you upgrade
them?
OS dependencies?
Do you manage them?
How is the OS changed on your platform? Does it break your applications
sometimes? Any logs/traces of those changes? Can they be rolled back in case
of problems?
Hardware/VM specs
dependencies?
Do you manage them?
What happens if available RAM/Disk/Network gets below
what your applications need? Do you know what they need?
If you manage your
environments, do you
manage them manually?
Everything not automated
reduces your Agility
Manual triggers can take a long time
Manual = Time++;
As your manager might say
Time == Money();
What techniques can reduce manual steps?
You could consider using DevOps:
CI server, CD server, Infrastructure as Code to automate
as mush as possible your release process
DevOps
Client
PO
Team
Delivery
What techniques can reduce manual steps?
Continuous Integration
What techniques can reduce manual steps?
Continuous Delivery/Deployment
What techniques can reduce manual steps?
Infrastructure As Code
Are your Agile Demos
done from unreleased
software
(aka Works at my desk)
Your software must have it!
Demos from unreleased software /
Difficulty to release in production
Involve Ops people in sprints
Releasing in prod should be doable by
anyone, anytime, using a single click
(rollback is obviously a feature you will want!)
CD—Continuous
Delivery/Deployment
Continuous Delivery/Deployment
Always have a shippable version available for your customers
Ex: GO CD (from Thoughtworks - now Open Source)
You can integrate your CI servers (Jenkins) with a CD server
Continuous Delivery/Deployment
A good practice to deploy gradually using cascaded
environments:
• (Development)
• Test
• Less resources, used mostly to validate business logic
• Staging/Pre-Production
• More representative of the production environment. Can be
used for load/performance testing. Typically uses a data set
that is a copy of the Production data set.
• Production
IaC—Infrastructure as
Code
Infrastructure as Code
Your code is under CM, but your
infrastructure is typically not! It also needs
to be versioned, tracked and automated!
There are so many tools available. But essentially,
keep ALL under source control, including what it takes
to reproduce your production environment from ZERO
Infrastructure as Code
• How to restart a hardware environment/virtual machines
• How to install the platform on the machines
• How to install the applications on the platforms
• How to configure the whole stack
• The databases schemas and content
• Everything!
If you are not convinced, think about your disaster
recovery plan (you have one, right?)
Infrastructure as Code
What if your server room is destroyed by water/
fire? (or the one from your cheap cloud provider…)
With IaC at least, the software part is covered in
case of disaster
DevOps
DevOps
• A Good app without an infrastructure to run it is useless…
• A superb, scalable infrastructure without an app adding
business value to a customer is also useless…
• You need both!
• DevOps should not be a separate team! It serves to
bridge the gap between development and operations
teams.
• And if you are not convinced that DevOps cannot
typically be a single person’s responsibility…
DevOps related tools
What could be potential
solutions to deliver and
faster?
1- Testing (TDD, BDD)
2- CI
3- CD
4- IaC
DEMO
Demo content
• GO CD presentation
• Application build pipeline
• connected to GitHub for app code
• running unit tests
• Triggering Staging pipeline on success
• using Vagrant + VirtualBox + Ansible to provision
production like environment for system tests
• connected to GitHub for IaC code
• Triggering Deployment pipeline on success
• using Ansible (Tower) to provision non VM
production multiple environments
Application Build/Unit
tests
Continuous Integration pipeline
Triggered on code changes
Staging pipeline
For deployment + system testing
Triggered on new application integration OR new IaC code
Deployment pipelines
Used to actually deploy the application into production
triggered on successful staging pipelines OR manually when needed
Discussion
How do you do it?
Agile Values vs.
Agile Practices
Agility is more than Agile values and
ceremonies
It is acting as per the Agile values and
producing software with related best practices
But where to start?
Every Agile cycle, try to improve on those issues, trying
to automate everything you can, while having the
conversation with your key stakeholders
Questions or
comments?
Thanks!
softwarethatmattersdoneright.com
+
http://ca.linkedin.com/in/stevemercier
Copyright Software That Matters… Done Right! Inc. 2016
Backup
Install provisioning
tools
Ex: Vagrant +
VirtualBox
- vagrant init hashicorp/precise64
- vagrant up
- vagrant ssh
- vagrant destroy
Ex: See how using the Vagrant
file, we can provision the
platform
config.vm.box = “hashicorp/precise64"
config.vm.network :forwarded_port, guest: 80, host: 4567
config.vm.provision :shell, path: “bootstrap.sh"
#!/usr/bin/env bash
apt-get update
apt-get install -y apache2
if ! [ -L /var/www ]; then
rm -rf /var/www
ln -fs /vagrant /var/www
fi
apt-get install -y python3
How to install the
applications on the
platforms
Ex: We can simply reuse the GIT clone using a shared
folder between host and guest VM or use similar
platform provisioning technique to perform a git clone in
the VM after provisioning

More Related Content

What's hot (20)

PPTX
CI/CD Best Practices for Your DevOps Journey
DevOps.com
 
PDF
DOES14: Scott Prugh, CSG - DevOps and Lean in Legacy Environments
DevOps Enterprise Summmit
 
PPT
Continuous Integration and Builds
Bhavin Javia
 
PDF
Adobe Presents Internal Service Delivery Platform at Velocity 13 Santa Clara
dev2ops
 
PDF
Taking the Best of Agile, DevOps and CI/CD into security
Matt Tesauro
 
PDF
Infrastructure as Code Maturity Model v1
Gary Stafford
 
PPTX
KEYNOTE | WHAT'S COMING IN THE NEXT 10 YEARS OF DEVOPS? // ELLEN CHISA, bolds...
DevOpsDays Tel Aviv
 
PDF
Intro to DevOps 4 undergraduates
Liran Levy
 
PDF
Taking AppSec to 11 - BSides Austin 2016
Matt Tesauro
 
PDF
Data-Driven DevOps: Improve Velocity and Quality of Software Delivery with Me...
Splunk
 
ZIP
Continuous Integration, Build Pipelines and Continuous Deployment
Christopher Read
 
PDF
Cd syd
Michael Neale
 
PDF
5 Best Practices DevOps Culture
Edureka!
 
PDF
DevOps introduction
Sridhara T V
 
PDF
DevOps - A Gentle Introduction
Ganesh Samarthyam
 
PPTX
Continuous Delivery with TFS msbuild msdeploy
Peter Gfader
 
PPTX
DevOps is not a Culture. It is about responsibility
Yoav Avrahami
 
PPTX
Agility and Control from AWS [FutureStack16]
New Relic
 
PPTX
Is Your DevOps Ready to Scale?
XebiaLabs
 
PPTX
Lap around ALM with Visual Studio and TFS 2013
Paul Hacker
 
CI/CD Best Practices for Your DevOps Journey
DevOps.com
 
DOES14: Scott Prugh, CSG - DevOps and Lean in Legacy Environments
DevOps Enterprise Summmit
 
Continuous Integration and Builds
Bhavin Javia
 
Adobe Presents Internal Service Delivery Platform at Velocity 13 Santa Clara
dev2ops
 
Taking the Best of Agile, DevOps and CI/CD into security
Matt Tesauro
 
Infrastructure as Code Maturity Model v1
Gary Stafford
 
KEYNOTE | WHAT'S COMING IN THE NEXT 10 YEARS OF DEVOPS? // ELLEN CHISA, bolds...
DevOpsDays Tel Aviv
 
Intro to DevOps 4 undergraduates
Liran Levy
 
Taking AppSec to 11 - BSides Austin 2016
Matt Tesauro
 
Data-Driven DevOps: Improve Velocity and Quality of Software Delivery with Me...
Splunk
 
Continuous Integration, Build Pipelines and Continuous Deployment
Christopher Read
 
5 Best Practices DevOps Culture
Edureka!
 
DevOps introduction
Sridhara T V
 
DevOps - A Gentle Introduction
Ganesh Samarthyam
 
Continuous Delivery with TFS msbuild msdeploy
Peter Gfader
 
DevOps is not a Culture. It is about responsibility
Yoav Avrahami
 
Agility and Control from AWS [FutureStack16]
New Relic
 
Is Your DevOps Ready to Scale?
XebiaLabs
 
Lap around ALM with Visual Studio and TFS 2013
Paul Hacker
 

Similar to Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code (20)

PDF
Agility via Software Engineering Practices - Agile Tour Montreal 2015
Steve Mercier
 
PDF
VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...
VMworld
 
PPTX
What is DevOps?
Mesut Güneş
 
ODP
Infrastructure is development
stahnma
 
PPTX
Seacon Continuous Delivery Pipeline Tools Track
Mark Rendell
 
PPTX
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...
Simon Storm
 
PPTX
Deploying more technology to shift from agility to anti-fragility
Spyros Lambrinidis
 
PDF
An Ultimate 10 Point DevOps Checklist for your Organization.pdf
Sparity1
 
PDF
The DevOps Revolution And Beyond...
Chris Sterling
 
PPTX
Continuous Delivery Applied
DC Agile Engineering Conference
 
PPTX
DevOps explained
Jérôme Kehrli
 
PPTX
Continuous Delivery Applied (Agile Richmond)
Mike McGarr
 
PPTX
Continuous Delivery Applied
Excella
 
PDF
Journey toward3rdplatform
Tzung-Hsien (Shawn) Ho
 
PPTX
From XP and Continuous Integration to DevOps
IBM UrbanCode Products
 
KEY
Greasing The Wheels
Aman Kohli
 
PPTX
Continuous delivery applied (RJUG)
Mike McGarr
 
PDF
Infrastructure as Code
Robert Greiner
 
PDF
DevOps Foundations
Amr Fawzy
 
PDF
Deployment Automation for Hybrid Cloud and Multi-Platform Environments
IBM UrbanCode Products
 
Agility via Software Engineering Practices - Agile Tour Montreal 2015
Steve Mercier
 
VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...
VMworld
 
What is DevOps?
Mesut Güneş
 
Infrastructure is development
stahnma
 
Seacon Continuous Delivery Pipeline Tools Track
Mark Rendell
 
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...
Simon Storm
 
Deploying more technology to shift from agility to anti-fragility
Spyros Lambrinidis
 
An Ultimate 10 Point DevOps Checklist for your Organization.pdf
Sparity1
 
The DevOps Revolution And Beyond...
Chris Sterling
 
Continuous Delivery Applied
DC Agile Engineering Conference
 
DevOps explained
Jérôme Kehrli
 
Continuous Delivery Applied (Agile Richmond)
Mike McGarr
 
Continuous Delivery Applied
Excella
 
Journey toward3rdplatform
Tzung-Hsien (Shawn) Ho
 
From XP and Continuous Integration to DevOps
IBM UrbanCode Products
 
Greasing The Wheels
Aman Kohli
 
Continuous delivery applied (RJUG)
Mike McGarr
 
Infrastructure as Code
Robert Greiner
 
DevOps Foundations
Amr Fawzy
 
Deployment Automation for Hybrid Cloud and Multi-Platform Environments
IBM UrbanCode Products
 
Ad

Recently uploaded (20)

PDF
Step-by-Step Guide to Install SAP HANA Studio | Complete Installation Tutoria...
SAP Vista, an A L T Z E N Company
 
PPTX
Transforming Insights: How Generative AI is Revolutionizing Data Analytics
LetsAI Solutions
 
PPTX
Employee salary prediction using Machine learning Project template.ppt
bhanuk27082004
 
PDF
Notification System for Construction Logistics Application
Safe Software
 
PDF
Ready Layer One: Intro to the Model Context Protocol
mmckenna1
 
PPTX
Transforming Lending with IntelliGrow – Advanced Loan Software Solutions
Intelli grow
 
PDF
Optimizing Tiered Storage for Low-Latency Real-Time Analytics at AI Scale
Alluxio, Inc.
 
PPTX
Odoo Migration Services by CandidRoot Solutions
CandidRoot Solutions Private Limited
 
PDF
How Attendance Management Software is Revolutionizing Education.pdf
Pikmykid
 
PPTX
Processing with Claim Management Automation Solutions
Insurance Tech Services
 
PPTX
PCC IT Forum 2025 - Legislative Technology Snapshot
Gareth Oakes
 
PDF
Odoo Customization Services by CandidRoot Solutions
CandidRoot Solutions Private Limited
 
PDF
Summary Of Odoo 18.1 to 18.4 : The Way For Odoo 19
CandidRoot Solutions Private Limited
 
PPTX
API DOCUMENTATION | API INTEGRATION PLATFORM
philipnathen82
 
PDF
How to Download and Install ADT (ABAP Development Tools) for Eclipse IDE | SA...
SAP Vista, an A L T Z E N Company
 
PDF
Enhancing Security in VAST: Towards Static Vulnerability Scanning
ESUG
 
PPTX
ChessBase 18.02 Crack + Serial Key Free Download
cracked shares
 
PDF
Supabase Meetup: Build in a weekend, scale to millions
Carlo Gilmar Padilla Santana
 
PDF
Best Insurance Compliance Software for Managing Regulations
Insurance Tech Services
 
PDF
10 posting ideas for community engagement with AI prompts
Pankaj Taneja
 
Step-by-Step Guide to Install SAP HANA Studio | Complete Installation Tutoria...
SAP Vista, an A L T Z E N Company
 
Transforming Insights: How Generative AI is Revolutionizing Data Analytics
LetsAI Solutions
 
Employee salary prediction using Machine learning Project template.ppt
bhanuk27082004
 
Notification System for Construction Logistics Application
Safe Software
 
Ready Layer One: Intro to the Model Context Protocol
mmckenna1
 
Transforming Lending with IntelliGrow – Advanced Loan Software Solutions
Intelli grow
 
Optimizing Tiered Storage for Low-Latency Real-Time Analytics at AI Scale
Alluxio, Inc.
 
Odoo Migration Services by CandidRoot Solutions
CandidRoot Solutions Private Limited
 
How Attendance Management Software is Revolutionizing Education.pdf
Pikmykid
 
Processing with Claim Management Automation Solutions
Insurance Tech Services
 
PCC IT Forum 2025 - Legislative Technology Snapshot
Gareth Oakes
 
Odoo Customization Services by CandidRoot Solutions
CandidRoot Solutions Private Limited
 
Summary Of Odoo 18.1 to 18.4 : The Way For Odoo 19
CandidRoot Solutions Private Limited
 
API DOCUMENTATION | API INTEGRATION PLATFORM
philipnathen82
 
How to Download and Install ADT (ABAP Development Tools) for Eclipse IDE | SA...
SAP Vista, an A L T Z E N Company
 
Enhancing Security in VAST: Towards Static Vulnerability Scanning
ESUG
 
ChessBase 18.02 Crack + Serial Key Free Download
cracked shares
 
Supabase Meetup: Build in a weekend, scale to millions
Carlo Gilmar Padilla Santana
 
Best Insurance Compliance Software for Managing Regulations
Insurance Tech Services
 
10 posting ideas for community engagement with AI prompts
Pankaj Taneja
 
Ad

Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code

  • 1. Controlling Your Environments using Infrastructure As Code ConFoo Montréal - February 2016 Steve Mercier Copyright Software That Matters… Done Right! Inc. 2016
  • 2. Who am I? I participated in multiple software development projects: • from very small (<10 person) to large (~400 persons) • from a long time ago (>20 years) up to now • from different angles/roles: Developer, Architect, PM, DevOps/ BuildMaster, Software Release Manager • I have seen software methods/processes come and go: Waterfall, RUP, OpenUP, XP, Scrum, Scaled Agile, etc. But the essential remains: I believe that to produce good software, it takes good people + resources AND discipline/professionalism/focus!
  • 3. Are You Agile? Agile is not easy… and is not only about ceremonies + tools!
  • 5. Nothing on the previous slide concerning software context, where is the code delivered, running, performing… Agile typically deals with this with the Definition Of Done concept, sadly overlooked way too often…
  • 6. What would be a good measure of Agility anyway?
  • 7. Suggestion #1: The capability to release (aka) The frequency at which you are delivering software updates that add business value to your clients without breaking any previously delivered business value that you want to retain
  • 8. Suggestion #2: The time to release (aka) The time it takes you to deliver the smallest change/fix to your software in production
  • 10. What prevents you to release? What prevents you to release fast?
  • 11. From my point of view: Lack of environments’ management True for all types of environments: DEV, QA, Staging, Production
  • 12. Platform dependencies? Do you manage them? ex: Frameworks dependencies, external libraries dependencies, etc. Are they either never updated or are they continuously creating problem when you upgrade them?
  • 13. OS dependencies? Do you manage them? How is the OS changed on your platform? Does it break your applications sometimes? Any logs/traces of those changes? Can they be rolled back in case of problems?
  • 14. Hardware/VM specs dependencies? Do you manage them? What happens if available RAM/Disk/Network gets below what your applications need? Do you know what they need?
  • 15. If you manage your environments, do you manage them manually?
  • 17. Manual triggers can take a long time Manual = Time++;
  • 18. As your manager might say Time == Money();
  • 19. What techniques can reduce manual steps? You could consider using DevOps: CI server, CD server, Infrastructure as Code to automate as mush as possible your release process DevOps Client PO Team Delivery
  • 20. What techniques can reduce manual steps? Continuous Integration
  • 21. What techniques can reduce manual steps? Continuous Delivery/Deployment
  • 22. What techniques can reduce manual steps? Infrastructure As Code
  • 23. Are your Agile Demos done from unreleased software (aka Works at my desk)
  • 24. Your software must have it!
  • 25. Demos from unreleased software / Difficulty to release in production Involve Ops people in sprints Releasing in prod should be doable by anyone, anytime, using a single click (rollback is obviously a feature you will want!)
  • 27. Continuous Delivery/Deployment Always have a shippable version available for your customers Ex: GO CD (from Thoughtworks - now Open Source) You can integrate your CI servers (Jenkins) with a CD server
  • 28. Continuous Delivery/Deployment A good practice to deploy gradually using cascaded environments: • (Development) • Test • Less resources, used mostly to validate business logic • Staging/Pre-Production • More representative of the production environment. Can be used for load/performance testing. Typically uses a data set that is a copy of the Production data set. • Production
  • 30. Infrastructure as Code Your code is under CM, but your infrastructure is typically not! It also needs to be versioned, tracked and automated!
  • 31. There are so many tools available. But essentially, keep ALL under source control, including what it takes to reproduce your production environment from ZERO Infrastructure as Code • How to restart a hardware environment/virtual machines • How to install the platform on the machines • How to install the applications on the platforms • How to configure the whole stack • The databases schemas and content • Everything!
  • 32. If you are not convinced, think about your disaster recovery plan (you have one, right?) Infrastructure as Code What if your server room is destroyed by water/ fire? (or the one from your cheap cloud provider…) With IaC at least, the software part is covered in case of disaster
  • 34. DevOps • A Good app without an infrastructure to run it is useless… • A superb, scalable infrastructure without an app adding business value to a customer is also useless… • You need both! • DevOps should not be a separate team! It serves to bridge the gap between development and operations teams. • And if you are not convinced that DevOps cannot typically be a single person’s responsibility…
  • 36. What could be potential solutions to deliver and faster?
  • 37. 1- Testing (TDD, BDD) 2- CI 3- CD 4- IaC
  • 38. DEMO
  • 39. Demo content • GO CD presentation • Application build pipeline • connected to GitHub for app code • running unit tests • Triggering Staging pipeline on success • using Vagrant + VirtualBox + Ansible to provision production like environment for system tests • connected to GitHub for IaC code • Triggering Deployment pipeline on success • using Ansible (Tower) to provision non VM production multiple environments
  • 40. Application Build/Unit tests Continuous Integration pipeline Triggered on code changes
  • 41. Staging pipeline For deployment + system testing Triggered on new application integration OR new IaC code
  • 42. Deployment pipelines Used to actually deploy the application into production triggered on successful staging pipelines OR manually when needed
  • 45. Agility is more than Agile values and ceremonies It is acting as per the Agile values and producing software with related best practices
  • 46. But where to start? Every Agile cycle, try to improve on those issues, trying to automate everything you can, while having the conversation with your key stakeholders
  • 50. Install provisioning tools Ex: Vagrant + VirtualBox - vagrant init hashicorp/precise64 - vagrant up - vagrant ssh - vagrant destroy
  • 51. Ex: See how using the Vagrant file, we can provision the platform config.vm.box = “hashicorp/precise64" config.vm.network :forwarded_port, guest: 80, host: 4567 config.vm.provision :shell, path: “bootstrap.sh" #!/usr/bin/env bash apt-get update apt-get install -y apache2 if ! [ -L /var/www ]; then rm -rf /var/www ln -fs /vagrant /var/www fi apt-get install -y python3
  • 52. How to install the applications on the platforms Ex: We can simply reuse the GIT clone using a shared folder between host and guest VM or use similar platform provisioning technique to perform a git clone in the VM after provisioning