SlideShare une entreprise Scribd logo
1  sur  73
Télécharger pour lire hors ligne
Peter Leschev 
@peterleschev 
Husband, Father of 3 & Atlassian 
Build Engineering
A Build Engineering 
Team’s Journey of 
Infrastructure as Code 
Nov-2014
Build Engineering today @ 
Atlassian 
• Build platform & services used internally within the company 
• 90k builds per month 
• 43k automated tests just for JIRA 
• Developers expect a reliable infrastructure & fast CI feedback
Build Engineering today @ 
Atlassian 
• 1000 build agents (own hardware + EC2 instances) 
• include SCM clients, JDKs, JVM build tools, databases, headless 
browser testing, python builds, NodeJS, installers & more 
• Maintain 20 AMIs of various build configurations 
• 8 Bamboo Servers 
• maven.atlassian.com / 6 Nexus instances 
• Monitoring - opsview / graphite / statsd
Build Engineering today @ 
Atlassian
Infrastructure as Code 
= Puppet + SCM ?
4 years ago... 
• Manually maintained snowflakes 
• Started using puppet
Production rollout 
puppetmaster 
build agents
Production rollout failure 
puppetmaster 
build agents
Confidence of Change 
HIGH 
NONE 
Lifecycle of an infra change 
confidence 
Dev Rollout Soak in Prod
atlassian.com/git
Style in Pull Requests
Puppet Lint https://github.com/rodjek/puppet-lint 
Tim Sharpe 
@rodjek 
• Automated style checking 
• Setup automated build that runs checks & posts results 
• Setup ratchet build to detect regressions
Confidence of Change 
HIGH 
NONE 
initial + Code review 
Lifecycle of an infra change 
confidence 
Dev Code review Rollout Soak in Prod
Using Staging for Development 
• Coding on Puppet Master 
• Culture of manually modifying 
production - Configuration Drift 
• Impact on Builds 
puppetmaster 
build agents 
staging puppet environment
Vagrant http://www.vagrantup.com/ 
Mitchell Hashimoto 
@mitchellh 
• Easily spin up Infrastructure locally on your laptop 
• Reproducible / disposable environments 
• Machine provisioning via Virtual Box / VMWare / AWS 
• Configuration applied via Shell Scripts / Puppet / Chef 
• Develop and test infrastructure changes locally
Vagrant 
Vagrantfile 
vagrant basebox 
http://www.vagrantup.com/ 
Mitchell Hashimoto 
@mitchellh
Vagrant 
Spins up a local VM to a known state 
Make some puppet changes and then run: 
Destroy the VM when done 
to apply your changes 
SSH into your VM using: 
to check your changes 
http://www.vagrantup.com/ 
Mitchell Hashimoto 
@mitchellh
Confidence of Change 
HIGH 
NONE 
initial + Code review + Vagrant 
Lifecycle of an infra change 
confidence 
Dev Code review Rollout Soak in Prod
Vagrant != Production 
• Vagrant basebox differences with production machines 
• Originally using publicly available vagrant baseboxes 
• Installed packages biggest differences 
• Generating a basebox manually was a painful process
Packer http://packer.io 
Mitchell Hashimoto 
@mitchellh 
Vagrant box 
for Virtualbox 
packer template 
JSON 
Vagrant box 
for AWS
Basebox generation via CI 
• Latest basebox generated in CI & published to fileshare 
• No need to generate baseboxes locally
Confidence in Change 
HIGH 
NONE 
initial + Code review + Vagrant + Packer 
Lifecycle of an infra change 
confidence 
Dev Code review Rollout Soak in Prod
Developing locally 
Rolling out to staging 
Rolling out to production 
Broken build agents!
Cucumber https://github.com/cucumber/aruba 
• Behaviour Driven Development
Cucumber & Vagrant 
Vagrant 
Custom Provisioner 
Virtual Box 
VM 
puppet apply 
cucumber *.features 
via ssh
Disadvantages 
• Requires cucumber dependencies to be installed on 
tested VM 
• Tests run within the VM making testing firewall rules 
harder
Confidence in Change 
HIGH 
NONE 
initial + Code review + Vagrant + Packer + Cukes 
Lifecycle of an infra change 
confidence 
Dev Code review Rollout Soak in Prod
But it works on my machine! 
“ – Every Developer”
Continuous Integration 
• ‘From scratch’ provisioning 
• Confidence that you can rebuild in disaster
The Pets: you give nice names, 
you stroke them, and when they get ill, 
you nurse them back to health, 
taking a long time over it 
The Cattle: you give them numbers. When 
they get ill, you shoot them 
– Tim Bell, CERN ” 
“
Confidence in Change 
HIGH 
NONE 
initial + Code review + Vagrant + Packer + Cukes + CI 
Lifecycle of an infra change 
confidence 
Dev Code review CI & Rollout Soak in Prod
Provisioning from scratch 
is slow
Spread out CI 
provision VM #1 
Moved from sequential 
to parallel provisioning 
provision VM #2 
provision VM #3 
provision VM #4 
provision VM #1 
provision VM #2 provision VM #3 
provision VM #4
There are so many 
MacPros you can steal
The ones 
I had my 
eye on....
Profiling Puppet Runs 
Add “--evaltrace” to puppet apply 
+ = 
Collect and show the 
longest occurrences of: 
“Evaluated in ([d.]+) seconds”
Profiling Cucumber runs 
http://itshouldbeuseful.wordpress.com/2010/11/10/find-your-slowest-running-cucumber-features/
Delta Provisioning 
• Provision locally & for CI 
• Faster & different class of problems found 
• Matches production state 
‘from scratch’ provision delta provision 
provision VM 
export VM fileshare 
import VM box 
provision VM 
on success
Confidence in Change 
HIGH 
NONE 
initial + Code review + Vagrant + Packer + Cukes + CI 
+ Delta CI 
Lifecycle of an infra change 
confidence 
Dev Code review CI & Rollout Soak in Prod
Broken builds 
master
Branch builds 
BUILDENG-5669 
master 
BUILDENG-5670
Confidence in Change 
HIGH 
NONE 
initial + Code review + Vagrant + Packer + Cukes 
+ CI + Delta CI + Branch CI 
Lifecycle of an infra change 
confidence 
Dev Branch CI Code review CI & Rollout Soak in Prod
Slow builds
Vagrant-AWS https://github.com/mitchellh/vagrant-aws
Vagrant-AWS https://github.com/mitchellh/vagrant-aws 
• MacPros no longer required 
• They were limited in supply & old 
• 2x speed improvement 
• Only limited by our credit card limit
Catalog Diff 
Step 1: Generate a hash of a node’s catalog 
puppet master --logdest console --compile HOSTNAME 
HOSTNAME.json 
- Sort elements 
- Remove timestamps 
- Generate shasum 
f50db91e6461f5bdcb56769a8f77da1fac26943d
Catalog Diff 
Step 2: Compare the hash of master versus your branch 
to avoid unnecessary provisioning 
Example 1: 
master branch 
f50db91e6461f5bdcb56769a8f77da1fac26943d = f50db91e6461f5bdcb56769a8f77da1fac26943d 
Hash is the same, no build required 
Example 2: 
master branch 
f50db91e6461f5bdcb56769a8f77da1fac26943d != 18033e4d21b78bab6deb3ae1ff3c147ade5a37ca 
Hash is different, build required
Catalog Diff 
Step 3: Profit! 
Reduction in 
feedback time 
+ 
$$$ saved 
Images: http://pixabay.com/p-30984/ https://www.flickr.com/photos/williamnyk/3598113750/
Infrequent Releases
Painful Puppet Rollouts 
• Puppet runs impacted running builds 
• Disabling all the build agents 
• Performing the roll out 
• git clone / librarian-puppet / symlink update on puppetmaster 
• Manually kick off puppet on all the build agents 
• Enabling all the build agents 
• Set of Puppet environments for every bamboo server
Graceful Service restarts 
+ 
Bamboo Agent JVM process watches 
for touch file & shutdowns when Idle 
(written as a Bamboo Plugin)
Puppet Environments 
• BEFORE - Multiple puppet envs for each Bamboo Server 
• jbac_staging 
• jbac_production 
• cbac_staging 
• cbac_production 
• etc 
• AFTER - Changed to use ‘staging’ & ‘production’ only
Updates on Puppetmaster 
• BEFORE: Manually on puppetmaster 
• git clone the puppet tree 
• run librarian-puppet to pull external modules 
• Update staging / production symlink 
• AFTER: Bamboo build which performs the above steps 
automatically
Bot automation - ‘open prs’
Less Human interaction 
+ 
More automation 
= 
Higher Confidence
Less Human Effort 
= 
Increased frequency 
of releases
Confidence in Change 
HIGH 
NONE 
initial + Code review + Vagrant + Packer 
+ Cukes + CI + Delta CI + Branch CI 
+ Frequent Releases 
Lifecycle of an infra change 
confidence 
Dev Branch CI Code review CI & Rollout Soak in Prod
I’m scared! 
“– Peter Leschev, 3.5” years ago 
Should I be scared? 
“ – Peter Leschev, 3 months a”go
Hipchat integration
Confidence in Change 
HIGH 
NONE 
initial + Code review + Vagrant + Packer 
+ Cukes + CI + Delta CI + Branch CI 
+ Frequent Releases + Notification 
Lifecycle of an infra change 
confidence 
Dev Branch CI Code review CI & Rollout Soak in Prod
Confidence in Change 
HIGH 
NONE 
before after 
Lifecycle of an infra change 
confidence 
Dev Branch CI Code review CI & Rollout Soak in Prod
Confidence in Change 
or 
Finding & fixing 
problems sooner rather 
than later
Snowflakes 
Pets 
Cattle 
Stateless Machines
We’re still on the Journey 
Come join us! 
atlassian.com/jobs
one more thing…
Puppet Module for 
Sonatype Nexus 
• https://forge.puppetlabs.com/atlassian/nexus_rest 
• Configure Nexus using Custom Puppet Provider Types 
rather than XML files
Thank you!
Questions?
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infrastructure as Code

Contenu connexe

Tendances

Release the Monkeys ! Testing in the Wild at Netflix
Release the Monkeys !  Testing in the Wild at NetflixRelease the Monkeys !  Testing in the Wild at Netflix
Release the Monkeys ! Testing in the Wild at NetflixGareth Bowles
 
Mock Servers - Fake All the Things!
Mock Servers - Fake All the Things!Mock Servers - Fake All the Things!
Mock Servers - Fake All the Things!Atlassian
 
Atlassian Connect on Serverless Platforms: Low Cost Add-Ons
Atlassian Connect on Serverless Platforms: Low Cost Add-OnsAtlassian Connect on Serverless Platforms: Low Cost Add-Ons
Atlassian Connect on Serverless Platforms: Low Cost Add-OnsAtlassian
 
Is Serverless The New Swiss Cheese? - AWS Seattle User Group
Is Serverless The New Swiss Cheese? - AWS Seattle User GroupIs Serverless The New Swiss Cheese? - AWS Seattle User Group
Is Serverless The New Swiss Cheese? - AWS Seattle User GroupChase Douglas
 
Chef Actions: Delightful near real-time activity tracking!
Chef Actions: Delightful near real-time activity tracking!Chef Actions: Delightful near real-time activity tracking!
Chef Actions: Delightful near real-time activity tracking!James Casey
 
Build a JIRA Server Add-on as a Microservice - You Can Do It!
Build a JIRA Server Add-on as a Microservice - You Can Do It!Build a JIRA Server Add-on as a Microservice - You Can Do It!
Build a JIRA Server Add-on as a Microservice - You Can Do It!Atlassian
 
Ed Elliott - Practical DSC in Azure
Ed Elliott - Practical DSC in AzureEd Elliott - Practical DSC in Azure
Ed Elliott - Practical DSC in AzureWinOps Conf
 
Bringing Server Add-ons to the Cloud and Back Again
Bringing Server Add-ons to the Cloud and Back AgainBringing Server Add-ons to the Cloud and Back Again
Bringing Server Add-ons to the Cloud and Back AgainAtlassian
 
Getting Started with Spring Boot
Getting Started with Spring BootGetting Started with Spring Boot
Getting Started with Spring BootDavid Kiss
 
Software Delivery at Warp Speed: Five Essential Techniques
Software Delivery at Warp Speed: Five Essential TechniquesSoftware Delivery at Warp Speed: Five Essential Techniques
Software Delivery at Warp Speed: Five Essential TechniquesAtlassian
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefAll Things Open
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applicationsSunil Dalal
 
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...Peter Leschev
 
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...Amazon Web Services
 
Serverless Delivery
Serverless DeliveryServerless Delivery
Serverless DeliveryCasey Lee
 
How to Build a Better JIRA Add-on
How to Build a Better JIRA Add-onHow to Build a Better JIRA Add-on
How to Build a Better JIRA Add-onAtlassian
 
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release PipelinesWinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release PipelinesWinOps Conf
 
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalk
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalkContinuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalk
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalkThomas Shaw
 
Puppet Release Workflows at Jive Software
Puppet Release Workflows at Jive SoftwarePuppet Release Workflows at Jive Software
Puppet Release Workflows at Jive SoftwarePuppet
 

Tendances (20)

Spinnaker Microsrvices
Spinnaker MicrosrvicesSpinnaker Microsrvices
Spinnaker Microsrvices
 
Release the Monkeys ! Testing in the Wild at Netflix
Release the Monkeys !  Testing in the Wild at NetflixRelease the Monkeys !  Testing in the Wild at Netflix
Release the Monkeys ! Testing in the Wild at Netflix
 
Mock Servers - Fake All the Things!
Mock Servers - Fake All the Things!Mock Servers - Fake All the Things!
Mock Servers - Fake All the Things!
 
Atlassian Connect on Serverless Platforms: Low Cost Add-Ons
Atlassian Connect on Serverless Platforms: Low Cost Add-OnsAtlassian Connect on Serverless Platforms: Low Cost Add-Ons
Atlassian Connect on Serverless Platforms: Low Cost Add-Ons
 
Is Serverless The New Swiss Cheese? - AWS Seattle User Group
Is Serverless The New Swiss Cheese? - AWS Seattle User GroupIs Serverless The New Swiss Cheese? - AWS Seattle User Group
Is Serverless The New Swiss Cheese? - AWS Seattle User Group
 
Chef Actions: Delightful near real-time activity tracking!
Chef Actions: Delightful near real-time activity tracking!Chef Actions: Delightful near real-time activity tracking!
Chef Actions: Delightful near real-time activity tracking!
 
Build a JIRA Server Add-on as a Microservice - You Can Do It!
Build a JIRA Server Add-on as a Microservice - You Can Do It!Build a JIRA Server Add-on as a Microservice - You Can Do It!
Build a JIRA Server Add-on as a Microservice - You Can Do It!
 
Ed Elliott - Practical DSC in Azure
Ed Elliott - Practical DSC in AzureEd Elliott - Practical DSC in Azure
Ed Elliott - Practical DSC in Azure
 
Bringing Server Add-ons to the Cloud and Back Again
Bringing Server Add-ons to the Cloud and Back AgainBringing Server Add-ons to the Cloud and Back Again
Bringing Server Add-ons to the Cloud and Back Again
 
Getting Started with Spring Boot
Getting Started with Spring BootGetting Started with Spring Boot
Getting Started with Spring Boot
 
Software Delivery at Warp Speed: Five Essential Techniques
Software Delivery at Warp Speed: Five Essential TechniquesSoftware Delivery at Warp Speed: Five Essential Techniques
Software Delivery at Warp Speed: Five Essential Techniques
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
 
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
 
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
 
Serverless Delivery
Serverless DeliveryServerless Delivery
Serverless Delivery
 
How to Build a Better JIRA Add-on
How to Build a Better JIRA Add-onHow to Build a Better JIRA Add-on
How to Build a Better JIRA Add-on
 
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release PipelinesWinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release Pipelines
 
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalk
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalkContinuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalk
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalk
 
Puppet Release Workflows at Jive Software
Puppet Release Workflows at Jive SoftwarePuppet Release Workflows at Jive Software
Puppet Release Workflows at Jive Software
 

En vedette

Turning Human Capital into High Performance Organizational Capital
Turning Human Capital into High Performance Organizational CapitalTurning Human Capital into High Performance Organizational Capital
Turning Human Capital into High Performance Organizational CapitalJohn Willis
 
Providing CI / CD as a Service - AWS Summit Sydney April 2015
Providing CI / CD as a Service - AWS Summit Sydney April 2015Providing CI / CD as a Service - AWS Summit Sydney April 2015
Providing CI / CD as a Service - AWS Summit Sydney April 2015Peter Leschev
 
All daydevops 2016 - Turning Human Capital into High Performance Organizati...
All daydevops   2016 - Turning Human Capital into High Performance Organizati...All daydevops   2016 - Turning Human Capital into High Performance Organizati...
All daydevops 2016 - Turning Human Capital into High Performance Organizati...John Willis
 
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...Peter Leschev
 
Infrastructure as Code Maturity Model v1
Infrastructure as Code Maturity Model v1Infrastructure as Code Maturity Model v1
Infrastructure as Code Maturity Model v1Gary Stafford
 
Deming to devops - Devops DC June 2015
Deming to devops   - Devops DC June 2015 Deming to devops   - Devops DC June 2015
Deming to devops - Devops DC June 2015 John Willis
 
AWS re:Invent 2016: Chalk Talk: Succeeding at Infrastructure-as-Code (GPSCT312)
AWS re:Invent 2016: Chalk Talk: Succeeding at Infrastructure-as-Code (GPSCT312)AWS re:Invent 2016: Chalk Talk: Succeeding at Infrastructure-as-Code (GPSCT312)
AWS re:Invent 2016: Chalk Talk: Succeeding at Infrastructure-as-Code (GPSCT312)Amazon Web Services
 
Dockerizing CS50: From Cluster to Cloud to Appliance to Container by David Ma...
Dockerizing CS50: From Cluster to Cloud to Appliance to Container by David Ma...Dockerizing CS50: From Cluster to Cloud to Appliance to Container by David Ma...
Dockerizing CS50: From Cluster to Cloud to Appliance to Container by David Ma...Docker, Inc.
 
Immutable Awesomeness by John Willis and Josh Corman
Immutable Awesomeness by John Willis and Josh CormanImmutable Awesomeness by John Willis and Josh Corman
Immutable Awesomeness by John Willis and Josh CormanDocker, Inc.
 
Infrastructure as code: running microservices on AWS using Docker, Terraform,...
Infrastructure as code: running microservices on AWS using Docker, Terraform,...Infrastructure as code: running microservices on AWS using Docker, Terraform,...
Infrastructure as code: running microservices on AWS using Docker, Terraform,...Yevgeniy Brikman
 

En vedette (12)

Turning Human Capital into High Performance Organizational Capital
Turning Human Capital into High Performance Organizational CapitalTurning Human Capital into High Performance Organizational Capital
Turning Human Capital into High Performance Organizational Capital
 
KANBAN FOR IT OPS (DRAGOS DUMITRIU) - LKCE13
KANBAN FOR IT OPS (DRAGOS DUMITRIU) - LKCE13KANBAN FOR IT OPS (DRAGOS DUMITRIU) - LKCE13
KANBAN FOR IT OPS (DRAGOS DUMITRIU) - LKCE13
 
Providing CI / CD as a Service - AWS Summit Sydney April 2015
Providing CI / CD as a Service - AWS Summit Sydney April 2015Providing CI / CD as a Service - AWS Summit Sydney April 2015
Providing CI / CD as a Service - AWS Summit Sydney April 2015
 
All daydevops 2016 - Turning Human Capital into High Performance Organizati...
All daydevops   2016 - Turning Human Capital into High Performance Organizati...All daydevops   2016 - Turning Human Capital into High Performance Organizati...
All daydevops 2016 - Turning Human Capital into High Performance Organizati...
 
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...
 
Infrastructure as Code Maturity Model v1
Infrastructure as Code Maturity Model v1Infrastructure as Code Maturity Model v1
Infrastructure as Code Maturity Model v1
 
Deming to devops - Devops DC June 2015
Deming to devops   - Devops DC June 2015 Deming to devops   - Devops DC June 2015
Deming to devops - Devops DC June 2015
 
AWS re:Invent 2016: Chalk Talk: Succeeding at Infrastructure-as-Code (GPSCT312)
AWS re:Invent 2016: Chalk Talk: Succeeding at Infrastructure-as-Code (GPSCT312)AWS re:Invent 2016: Chalk Talk: Succeeding at Infrastructure-as-Code (GPSCT312)
AWS re:Invent 2016: Chalk Talk: Succeeding at Infrastructure-as-Code (GPSCT312)
 
(ARC307) Infrastructure as Code
(ARC307) Infrastructure as Code(ARC307) Infrastructure as Code
(ARC307) Infrastructure as Code
 
Dockerizing CS50: From Cluster to Cloud to Appliance to Container by David Ma...
Dockerizing CS50: From Cluster to Cloud to Appliance to Container by David Ma...Dockerizing CS50: From Cluster to Cloud to Appliance to Container by David Ma...
Dockerizing CS50: From Cluster to Cloud to Appliance to Container by David Ma...
 
Immutable Awesomeness by John Willis and Josh Corman
Immutable Awesomeness by John Willis and Josh CormanImmutable Awesomeness by John Willis and Josh Corman
Immutable Awesomeness by John Willis and Josh Corman
 
Infrastructure as code: running microservices on AWS using Docker, Terraform,...
Infrastructure as code: running microservices on AWS using Docker, Terraform,...Infrastructure as code: running microservices on AWS using Docker, Terraform,...
Infrastructure as code: running microservices on AWS using Docker, Terraform,...
 

Similaire à Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infrastructure as Code

How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...Peter Leschev
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Lean IT Consulting
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Amazon Web Services
 
Trusting the Unknown
Trusting the UnknownTrusting the Unknown
Trusting the UnknownJesse Houwing
 
Trusting the Unknown
Trusting the UnknownTrusting the Unknown
Trusting the Unknownssuser37f369
 
DCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDocker, Inc.
 
Docker and Puppet for Continuous Integration
Docker and Puppet for Continuous IntegrationDocker and Puppet for Continuous Integration
Docker and Puppet for Continuous IntegrationGiacomo Vacca
 
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...Amazon Web Services
 
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow Puppet
 
Steamlining your puppet development workflow
Steamlining your puppet development workflowSteamlining your puppet development workflow
Steamlining your puppet development workflowTomas Doran
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the CloudRyan Cuprak
 
Containerising bootiful microservices javaeeconf
Containerising bootiful microservices javaeeconfContainerising bootiful microservices javaeeconf
Containerising bootiful microservices javaeeconfIvan Vasyliev
 
Cloud-Native Builds & Deployments in Bitbucket Pipelines
Cloud-Native Builds & Deployments in Bitbucket PipelinesCloud-Native Builds & Deployments in Bitbucket Pipelines
Cloud-Native Builds & Deployments in Bitbucket PipelinesAtlassian
 
Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP applicationJavier López
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsAmazon Web Services
 
InSpec at DevOps ATL Meetup January 22, 2020
InSpec at DevOps ATL Meetup January 22, 2020InSpec at DevOps ATL Meetup January 22, 2020
InSpec at DevOps ATL Meetup January 22, 2020Mandi Walls
 
Practical Cloud & Workflow Orchestration
Practical Cloud & Workflow OrchestrationPractical Cloud & Workflow Orchestration
Practical Cloud & Workflow OrchestrationChris Dagdigian
 
Creating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on HerokuCreating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on HerokuJoe Kutner
 
Continuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesContinuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesLuke Marsden
 
Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Weaveworks
 

Similaire à Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infrastructure as Code (20)

How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
 
Trusting the Unknown
Trusting the UnknownTrusting the Unknown
Trusting the Unknown
 
Trusting the Unknown
Trusting the UnknownTrusting the Unknown
Trusting the Unknown
 
DCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development Pipeline
 
Docker and Puppet for Continuous Integration
Docker and Puppet for Continuous IntegrationDocker and Puppet for Continuous Integration
Docker and Puppet for Continuous Integration
 
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
 
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
 
Steamlining your puppet development workflow
Steamlining your puppet development workflowSteamlining your puppet development workflow
Steamlining your puppet development workflow
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the Cloud
 
Containerising bootiful microservices javaeeconf
Containerising bootiful microservices javaeeconfContainerising bootiful microservices javaeeconf
Containerising bootiful microservices javaeeconf
 
Cloud-Native Builds & Deployments in Bitbucket Pipelines
Cloud-Native Builds & Deployments in Bitbucket PipelinesCloud-Native Builds & Deployments in Bitbucket Pipelines
Cloud-Native Builds & Deployments in Bitbucket Pipelines
 
Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP application
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
 
InSpec at DevOps ATL Meetup January 22, 2020
InSpec at DevOps ATL Meetup January 22, 2020InSpec at DevOps ATL Meetup January 22, 2020
InSpec at DevOps ATL Meetup January 22, 2020
 
Practical Cloud & Workflow Orchestration
Practical Cloud & Workflow OrchestrationPractical Cloud & Workflow Orchestration
Practical Cloud & Workflow Orchestration
 
Creating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on HerokuCreating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on Heroku
 
Continuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesContinuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with Kubernetes
 
Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes
 

Dernier

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Dernier (20)

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infrastructure as Code

  • 1.
  • 2. Peter Leschev @peterleschev Husband, Father of 3 & Atlassian Build Engineering
  • 3. A Build Engineering Team’s Journey of Infrastructure as Code Nov-2014
  • 4. Build Engineering today @ Atlassian • Build platform & services used internally within the company • 90k builds per month • 43k automated tests just for JIRA • Developers expect a reliable infrastructure & fast CI feedback
  • 5. Build Engineering today @ Atlassian • 1000 build agents (own hardware + EC2 instances) • include SCM clients, JDKs, JVM build tools, databases, headless browser testing, python builds, NodeJS, installers & more • Maintain 20 AMIs of various build configurations • 8 Bamboo Servers • maven.atlassian.com / 6 Nexus instances • Monitoring - opsview / graphite / statsd
  • 7. Infrastructure as Code = Puppet + SCM ?
  • 8. 4 years ago... • Manually maintained snowflakes • Started using puppet
  • 10. Production rollout failure puppetmaster build agents
  • 11. Confidence of Change HIGH NONE Lifecycle of an infra change confidence Dev Rollout Soak in Prod
  • 12.
  • 14. Style in Pull Requests
  • 15. Puppet Lint https://github.com/rodjek/puppet-lint Tim Sharpe @rodjek • Automated style checking • Setup automated build that runs checks & posts results • Setup ratchet build to detect regressions
  • 16. Confidence of Change HIGH NONE initial + Code review Lifecycle of an infra change confidence Dev Code review Rollout Soak in Prod
  • 17. Using Staging for Development • Coding on Puppet Master • Culture of manually modifying production - Configuration Drift • Impact on Builds puppetmaster build agents staging puppet environment
  • 18. Vagrant http://www.vagrantup.com/ Mitchell Hashimoto @mitchellh • Easily spin up Infrastructure locally on your laptop • Reproducible / disposable environments • Machine provisioning via Virtual Box / VMWare / AWS • Configuration applied via Shell Scripts / Puppet / Chef • Develop and test infrastructure changes locally
  • 19. Vagrant Vagrantfile vagrant basebox http://www.vagrantup.com/ Mitchell Hashimoto @mitchellh
  • 20. Vagrant Spins up a local VM to a known state Make some puppet changes and then run: Destroy the VM when done to apply your changes SSH into your VM using: to check your changes http://www.vagrantup.com/ Mitchell Hashimoto @mitchellh
  • 21. Confidence of Change HIGH NONE initial + Code review + Vagrant Lifecycle of an infra change confidence Dev Code review Rollout Soak in Prod
  • 22. Vagrant != Production • Vagrant basebox differences with production machines • Originally using publicly available vagrant baseboxes • Installed packages biggest differences • Generating a basebox manually was a painful process
  • 23. Packer http://packer.io Mitchell Hashimoto @mitchellh Vagrant box for Virtualbox packer template JSON Vagrant box for AWS
  • 24. Basebox generation via CI • Latest basebox generated in CI & published to fileshare • No need to generate baseboxes locally
  • 25. Confidence in Change HIGH NONE initial + Code review + Vagrant + Packer Lifecycle of an infra change confidence Dev Code review Rollout Soak in Prod
  • 26. Developing locally Rolling out to staging Rolling out to production Broken build agents!
  • 27. Cucumber https://github.com/cucumber/aruba • Behaviour Driven Development
  • 28. Cucumber & Vagrant Vagrant Custom Provisioner Virtual Box VM puppet apply cucumber *.features via ssh
  • 29. Disadvantages • Requires cucumber dependencies to be installed on tested VM • Tests run within the VM making testing firewall rules harder
  • 30. Confidence in Change HIGH NONE initial + Code review + Vagrant + Packer + Cukes Lifecycle of an infra change confidence Dev Code review Rollout Soak in Prod
  • 31. But it works on my machine! “ – Every Developer”
  • 32. Continuous Integration • ‘From scratch’ provisioning • Confidence that you can rebuild in disaster
  • 33. The Pets: you give nice names, you stroke them, and when they get ill, you nurse them back to health, taking a long time over it The Cattle: you give them numbers. When they get ill, you shoot them – Tim Bell, CERN ” “
  • 34. Confidence in Change HIGH NONE initial + Code review + Vagrant + Packer + Cukes + CI Lifecycle of an infra change confidence Dev Code review CI & Rollout Soak in Prod
  • 36. Spread out CI provision VM #1 Moved from sequential to parallel provisioning provision VM #2 provision VM #3 provision VM #4 provision VM #1 provision VM #2 provision VM #3 provision VM #4
  • 37. There are so many MacPros you can steal
  • 38. The ones I had my eye on....
  • 39. Profiling Puppet Runs Add “--evaltrace” to puppet apply + = Collect and show the longest occurrences of: “Evaluated in ([d.]+) seconds”
  • 40. Profiling Cucumber runs http://itshouldbeuseful.wordpress.com/2010/11/10/find-your-slowest-running-cucumber-features/
  • 41. Delta Provisioning • Provision locally & for CI • Faster & different class of problems found • Matches production state ‘from scratch’ provision delta provision provision VM export VM fileshare import VM box provision VM on success
  • 42. Confidence in Change HIGH NONE initial + Code review + Vagrant + Packer + Cukes + CI + Delta CI Lifecycle of an infra change confidence Dev Code review CI & Rollout Soak in Prod
  • 44. Branch builds BUILDENG-5669 master BUILDENG-5670
  • 45. Confidence in Change HIGH NONE initial + Code review + Vagrant + Packer + Cukes + CI + Delta CI + Branch CI Lifecycle of an infra change confidence Dev Branch CI Code review CI & Rollout Soak in Prod
  • 48. Vagrant-AWS https://github.com/mitchellh/vagrant-aws • MacPros no longer required • They were limited in supply & old • 2x speed improvement • Only limited by our credit card limit
  • 49. Catalog Diff Step 1: Generate a hash of a node’s catalog puppet master --logdest console --compile HOSTNAME HOSTNAME.json - Sort elements - Remove timestamps - Generate shasum f50db91e6461f5bdcb56769a8f77da1fac26943d
  • 50. Catalog Diff Step 2: Compare the hash of master versus your branch to avoid unnecessary provisioning Example 1: master branch f50db91e6461f5bdcb56769a8f77da1fac26943d = f50db91e6461f5bdcb56769a8f77da1fac26943d Hash is the same, no build required Example 2: master branch f50db91e6461f5bdcb56769a8f77da1fac26943d != 18033e4d21b78bab6deb3ae1ff3c147ade5a37ca Hash is different, build required
  • 51. Catalog Diff Step 3: Profit! Reduction in feedback time + $$$ saved Images: http://pixabay.com/p-30984/ https://www.flickr.com/photos/williamnyk/3598113750/
  • 52.
  • 54. Painful Puppet Rollouts • Puppet runs impacted running builds • Disabling all the build agents • Performing the roll out • git clone / librarian-puppet / symlink update on puppetmaster • Manually kick off puppet on all the build agents • Enabling all the build agents • Set of Puppet environments for every bamboo server
  • 55. Graceful Service restarts + Bamboo Agent JVM process watches for touch file & shutdowns when Idle (written as a Bamboo Plugin)
  • 56. Puppet Environments • BEFORE - Multiple puppet envs for each Bamboo Server • jbac_staging • jbac_production • cbac_staging • cbac_production • etc • AFTER - Changed to use ‘staging’ & ‘production’ only
  • 57. Updates on Puppetmaster • BEFORE: Manually on puppetmaster • git clone the puppet tree • run librarian-puppet to pull external modules • Update staging / production symlink • AFTER: Bamboo build which performs the above steps automatically
  • 58. Bot automation - ‘open prs’
  • 59. Less Human interaction + More automation = Higher Confidence
  • 60. Less Human Effort = Increased frequency of releases
  • 61. Confidence in Change HIGH NONE initial + Code review + Vagrant + Packer + Cukes + CI + Delta CI + Branch CI + Frequent Releases Lifecycle of an infra change confidence Dev Branch CI Code review CI & Rollout Soak in Prod
  • 62. I’m scared! “– Peter Leschev, 3.5” years ago Should I be scared? “ – Peter Leschev, 3 months a”go
  • 64. Confidence in Change HIGH NONE initial + Code review + Vagrant + Packer + Cukes + CI + Delta CI + Branch CI + Frequent Releases + Notification Lifecycle of an infra change confidence Dev Branch CI Code review CI & Rollout Soak in Prod
  • 65. Confidence in Change HIGH NONE before after Lifecycle of an infra change confidence Dev Branch CI Code review CI & Rollout Soak in Prod
  • 66. Confidence in Change or Finding & fixing problems sooner rather than later
  • 67. Snowflakes Pets Cattle Stateless Machines
  • 68. We’re still on the Journey Come join us! atlassian.com/jobs
  • 70. Puppet Module for Sonatype Nexus • https://forge.puppetlabs.com/atlassian/nexus_rest • Configure Nexus using Custom Puppet Provider Types rather than XML files