SlideShare a Scribd company logo
1 of 16
Download to read offline
Puppet Camp
           Dublin - 2012

Andrés Pereira <apereira@gilt.com>
 Roland Tritsch <rtritsch@gilt.com>
Gilt in a nutshell ...
● 5, 500, 1000/200, 300, 1, 18, ...
Gilt in a nutshell ...
Frontend (HTML[5], CSS, JS, ...)      ●   2 DCs + AWS EC2
                                      ●   CentOS Linux
Load Balancing (Zeus)                 ●   CDN (Akamai)
                                      ●   Puppet, Cobbler, ...
Aggregation (Java, Scala, ...)
                                      ●   Zenoss, Nagios, ...
                                      ●   Git & Gerrit
Load Balancing (Zeus)
                                      ●   Jenkins
Services (Java, Scala, Ruby, ...)



Database (PostgreSQL, MongoDB, ...)
Puppet at Gilt ...
● We've been using Puppet for almost 3 years
  ○ ~ 1000 puppet modules
● Typical setup
  ○ Apache httpd+passenger for Puppetmaster
  ○ Puppetcommander (MCollective plugin) to schedule
    puppet runs
  ○ Puppet Dashboard (Reporting)
  ○ In-house External Node Classifier (aka 'Mothership')
Puppet - Incremental rollout
Puppet - Incremental rollout
● Deployment of changes
  ○ Commit to 'development' branch
  ○ Push changes for code review
  ○ Once changes have been reviewed and verified,
    they get merged into 'development'
  ○ A 'canary' flag can be set for a number of nodes
  ○ Change is cherry-picked to 'master' branch
  ○ A 'tag' from master is created and deployed
     ■ See behavior in the canary environment
     ■ Expand the canary env. Rinse & repeat
     ■ Remove canary flag
Puppet - External node Classifier




      http://mothership.sourceforge.net/
Puppet - External node Classifier
● Mothership
  ○ In-house assets management & provisioning tool. It
    also acts as an External Node Classifier for Puppet
     ■ Can provision bare-metal & virtual machines
     ■ Integrated with Cobbler
     ■ Also manages users/groups & sudoers
        ●   Synchronized to LDAP
        ●   Puppet deploys sudoers file
     ■ DNS management
     ■ Hosts can have one or more labels (tags) that
       are mapped to Puppet modules
Lessons learned / Best practices ...
Puppet ...
● Don't just run it!
● Node mgmt can become difficult (+100)
● Keep change in mind (e.g. OS upgrades)
Mothership ...
● ... is not enough. You need at least 2 views
  ○ Logical (deployed/reserved), Physical
● You need to live with Physical != Logical
  ○ Physical will be generated. It is a feedback loop.
Next steps ...
Requirements ...
● Accelerate our ability to do incremental
  deployments (multiple times a day)
   ○ ... with easy rollback
   ○ ... accelerating our ability to innovate
   ○ ... while maintaining 100% uptime
● The "Happy Path" needs to be without
  human intervention
   ○ From Commit to A/B test
Architecture ...
                QA - Selenium /    Deployment -
Code - Gerrit
                 TestComplete        Puppet




                      Ion Cannon




           Build -
                          Performance       Analytics
        Jenkins/Nexus
Takeaways ...
● Keep your modules small, keep them simple
● Keep change in mind
  ○ Do incremental rollout of changes
  ○ Provide a 'default' case in your puppet modules and
    use 'fail' (sdtlib) as a default case.
● If you are looking for a complete CD
  platform, then you need to embed Puppet
  into a larger solution
Questions?

More Related Content

What's hot

What's hot (20)

Juju + KubernetesでGPU の活用
Juju + KubernetesでGPU の活用Juju + KubernetesでGPU の活用
Juju + KubernetesでGPU の活用
 
Gluster as Native Storage for Containers - past, present and future
Gluster as Native Storage for Containers - past, present and futureGluster as Native Storage for Containers - past, present and future
Gluster as Native Storage for Containers - past, present and future
 
Seastar @ SF/BA C++UG
Seastar @ SF/BA C++UGSeastar @ SF/BA C++UG
Seastar @ SF/BA C++UG
 
NUS-ISS Learning Day 2017 - Bots-Managed CloudOps
NUS-ISS Learning Day 2017 - Bots-Managed CloudOpsNUS-ISS Learning Day 2017 - Bots-Managed CloudOps
NUS-ISS Learning Day 2017 - Bots-Managed CloudOps
 
HA with Galera
HA with GaleraHA with Galera
HA with Galera
 
Juju 基礎編
Juju 基礎編Juju 基礎編
Juju 基礎編
 
Barcamp presentation
Barcamp presentationBarcamp presentation
Barcamp presentation
 
Cncf meetup-rook
Cncf meetup-rookCncf meetup-rook
Cncf meetup-rook
 
Cncf meetup-rook
Cncf meetup-rookCncf meetup-rook
Cncf meetup-rook
 
OpenShift.io on Gluster
OpenShift.io on GlusterOpenShift.io on Gluster
OpenShift.io on Gluster
 
Supercharge your next Vue app with Nuxt
Supercharge your next Vue app with NuxtSupercharge your next Vue app with Nuxt
Supercharge your next Vue app with Nuxt
 
An Introduction to Priam
An Introduction to PriamAn Introduction to Priam
An Introduction to Priam
 
London Ceph Day: Deploying Ceph and OpenStack with Juju
London Ceph Day: Deploying Ceph and OpenStack with JujuLondon Ceph Day: Deploying Ceph and OpenStack with Juju
London Ceph Day: Deploying Ceph and OpenStack with Juju
 
Comparing Orchestration
Comparing OrchestrationComparing Orchestration
Comparing Orchestration
 
OpenNebulaConf2015 2.03 Docker-Machine and OpenNebula - Jaime Melis
OpenNebulaConf2015 2.03 Docker-Machine and OpenNebula - Jaime MelisOpenNebulaConf2015 2.03 Docker-Machine and OpenNebula - Jaime Melis
OpenNebulaConf2015 2.03 Docker-Machine and OpenNebula - Jaime Melis
 
TechDay - Cambridge 2016 - OpenNebula at Harvard Univerity
TechDay - Cambridge 2016 - OpenNebula at Harvard UniverityTechDay - Cambridge 2016 - OpenNebula at Harvard Univerity
TechDay - Cambridge 2016 - OpenNebula at Harvard Univerity
 
OpenNebula - OpenNebula and tips for CentOS 7
OpenNebula - OpenNebula and tips for CentOS 7OpenNebula - OpenNebula and tips for CentOS 7
OpenNebula - OpenNebula and tips for CentOS 7
 
How to install Digits 5.1 on Ubuntu 14
How to install Digits 5.1 on Ubuntu 14How to install Digits 5.1 on Ubuntu 14
How to install Digits 5.1 on Ubuntu 14
 
Container Service in Action - Imasters Developer Week 2015
Container Service in Action - Imasters Developer Week 2015Container Service in Action - Imasters Developer Week 2015
Container Service in Action - Imasters Developer Week 2015
 
Achieving the ultimate performance with KVM
Achieving the ultimate performance with KVMAchieving the ultimate performance with KVM
Achieving the ultimate performance with KVM
 

Viewers also liked

How Do We Better Sell DevOps? - PuppetConf 2013
How Do We Better Sell DevOps? - PuppetConf 2013How Do We Better Sell DevOps? - PuppetConf 2013
How Do We Better Sell DevOps? - PuppetConf 2013
Puppet
 

Viewers also liked (14)

"Puppet at SpaceX" - Jok Thuau of SpaceX - PuppetCamp LA '12
"Puppet at SpaceX" - Jok Thuau of SpaceX - PuppetCamp LA '12"Puppet at SpaceX" - Jok Thuau of SpaceX - PuppetCamp LA '12
"Puppet at SpaceX" - Jok Thuau of SpaceX - PuppetCamp LA '12
 
How and why you should test
How and why you should testHow and why you should test
How and why you should test
 
Puppet Camp Paris 2014: Module Rewriting The Smart Way
Puppet Camp Paris 2014: Module Rewriting The Smart WayPuppet Camp Paris 2014: Module Rewriting The Smart Way
Puppet Camp Paris 2014: Module Rewriting The Smart Way
 
Building Reusable Puppet Modules
Building Reusable Puppet ModulesBuilding Reusable Puppet Modules
Building Reusable Puppet Modules
 
Puppet DB: Higher-Order Puppet - Deepak Giridharagopal - PuppetCamp LA '12
Puppet DB: Higher-Order Puppet - Deepak Giridharagopal - PuppetCamp LA '12Puppet DB: Higher-Order Puppet - Deepak Giridharagopal - PuppetCamp LA '12
Puppet DB: Higher-Order Puppet - Deepak Giridharagopal - PuppetCamp LA '12
 
Puppet at Spotify (stockholm)
Puppet at Spotify (stockholm)Puppet at Spotify (stockholm)
Puppet at Spotify (stockholm)
 
Deploying Hadoop-Based Bigdata Environments
Deploying Hadoop-Based Bigdata EnvironmentsDeploying Hadoop-Based Bigdata Environments
Deploying Hadoop-Based Bigdata Environments
 
Dev to Delivery with Puppet, Vagrant and AWS
Dev to Delivery with Puppet, Vagrant and AWSDev to Delivery with Puppet, Vagrant and AWS
Dev to Delivery with Puppet, Vagrant and AWS
 
Agile Deployments with Puppet
Agile Deployments with PuppetAgile Deployments with Puppet
Agile Deployments with Puppet
 
Puppet and AWS: Getting the best of both worlds
Puppet and AWS: Getting the best of both worldsPuppet and AWS: Getting the best of both worlds
Puppet and AWS: Getting the best of both worlds
 
Puppet: What _not_ to do
Puppet: What _not_ to doPuppet: What _not_ to do
Puppet: What _not_ to do
 
Writing & Sharing Great Modules on the Puppet Forge
Writing & Sharing Great Modules on the Puppet ForgeWriting & Sharing Great Modules on the Puppet Forge
Writing & Sharing Great Modules on the Puppet Forge
 
Company culture hacks for competitive advantage
Company culture hacks for competitive advantageCompany culture hacks for competitive advantage
Company culture hacks for competitive advantage
 
How Do We Better Sell DevOps? - PuppetConf 2013
How Do We Better Sell DevOps? - PuppetConf 2013How Do We Better Sell DevOps? - PuppetConf 2013
How Do We Better Sell DevOps? - PuppetConf 2013
 

Similar to Building a continuous delivery platform for the biggest spike in e-commerce - Puppet Camp Dublin '12

Puppet Camp Dublin - 06/2012
Puppet Camp Dublin - 06/2012Puppet Camp Dublin - 06/2012
Puppet Camp Dublin - 06/2012
Roland Tritsch
 
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Docker, Inc.
 
Creating a mature puppet system
Creating a mature puppet systemCreating a mature puppet system
Creating a mature puppet system
rkhatibi
 

Similar to Building a continuous delivery platform for the biggest spike in e-commerce - Puppet Camp Dublin '12 (20)

Puppet Camp Dublin - 06/2012
Puppet Camp Dublin - 06/2012Puppet Camp Dublin - 06/2012
Puppet Camp Dublin - 06/2012
 
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Introduction to Docker at SF Peninsula Software Development Meetup @GuidewireIntroduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
 
Introduction to Docker and all things containers, Docker Meetup at RelateIQ
Introduction to Docker and all things containers, Docker Meetup at RelateIQIntroduction to Docker and all things containers, Docker Meetup at RelateIQ
Introduction to Docker and all things containers, Docker Meetup at RelateIQ
 
A Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things ContainersA Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things Containers
 
Automating MySQL operations with Puppet
Automating MySQL operations with PuppetAutomating MySQL operations with Puppet
Automating MySQL operations with Puppet
 
Monitoring your VM's at Scale
Monitoring your VM's at ScaleMonitoring your VM's at Scale
Monitoring your VM's at Scale
 
Docker and-containers-for-development-and-deployment-scale12x
Docker and-containers-for-development-and-deployment-scale12xDocker and-containers-for-development-and-deployment-scale12x
Docker and-containers-for-development-and-deployment-scale12x
 
SCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scalingSCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scaling
 
[HKOSCon x COSCUP 2020][20200801][Ansible: From VM to Kubernetes]
[HKOSCon x COSCUP 2020][20200801][Ansible: From VM to Kubernetes][HKOSCon x COSCUP 2020][20200801][Ansible: From VM to Kubernetes]
[HKOSCon x COSCUP 2020][20200801][Ansible: From VM to Kubernetes]
 
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
 
Introduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New YorkIntroduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New York
 
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
 
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
 
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
Creating a Mature Puppet System
Creating a Mature Puppet SystemCreating a Mature Puppet System
Creating a Mature Puppet System
 
Creating a mature puppet system
Creating a mature puppet systemCreating a mature puppet system
Creating a mature puppet system
 
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo..."Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
"Lightweight Virtualization with Linux Containers and Docker". Jerome Petazzo...
 
High Available Drupal
High Available DrupalHigh Available Drupal
High Available Drupal
 
Best practices for optimizing Red Hat platforms for large scale datacenter de...
Best practices for optimizing Red Hat platforms for large scale datacenter de...Best practices for optimizing Red Hat platforms for large scale datacenter de...
Best practices for optimizing Red Hat platforms for large scale datacenter de...
 

More from Puppet

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
Puppet
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
Puppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
Puppet
 

More from Puppet (20)

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
 

Recently uploaded

Recently uploaded (20)

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?
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
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
 
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...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
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...
 
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
 
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...
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
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
 
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
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
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
 

Building a continuous delivery platform for the biggest spike in e-commerce - Puppet Camp Dublin '12

  • 1. Puppet Camp Dublin - 2012 Andrés Pereira <apereira@gilt.com> Roland Tritsch <rtritsch@gilt.com>
  • 2. Gilt in a nutshell ... ● 5, 500, 1000/200, 300, 1, 18, ...
  • 3. Gilt in a nutshell ... Frontend (HTML[5], CSS, JS, ...) ● 2 DCs + AWS EC2 ● CentOS Linux Load Balancing (Zeus) ● CDN (Akamai) ● Puppet, Cobbler, ... Aggregation (Java, Scala, ...) ● Zenoss, Nagios, ... ● Git & Gerrit Load Balancing (Zeus) ● Jenkins Services (Java, Scala, Ruby, ...) Database (PostgreSQL, MongoDB, ...)
  • 4. Puppet at Gilt ... ● We've been using Puppet for almost 3 years ○ ~ 1000 puppet modules ● Typical setup ○ Apache httpd+passenger for Puppetmaster ○ Puppetcommander (MCollective plugin) to schedule puppet runs ○ Puppet Dashboard (Reporting) ○ In-house External Node Classifier (aka 'Mothership')
  • 6. Puppet - Incremental rollout ● Deployment of changes ○ Commit to 'development' branch ○ Push changes for code review ○ Once changes have been reviewed and verified, they get merged into 'development' ○ A 'canary' flag can be set for a number of nodes ○ Change is cherry-picked to 'master' branch ○ A 'tag' from master is created and deployed ■ See behavior in the canary environment ■ Expand the canary env. Rinse & repeat ■ Remove canary flag
  • 7. Puppet - External node Classifier http://mothership.sourceforge.net/
  • 8. Puppet - External node Classifier ● Mothership ○ In-house assets management & provisioning tool. It also acts as an External Node Classifier for Puppet ■ Can provision bare-metal & virtual machines ■ Integrated with Cobbler ■ Also manages users/groups & sudoers ● Synchronized to LDAP ● Puppet deploys sudoers file ■ DNS management ■ Hosts can have one or more labels (tags) that are mapped to Puppet modules
  • 9.
  • 10.
  • 11. Lessons learned / Best practices ... Puppet ... ● Don't just run it! ● Node mgmt can become difficult (+100) ● Keep change in mind (e.g. OS upgrades) Mothership ... ● ... is not enough. You need at least 2 views ○ Logical (deployed/reserved), Physical ● You need to live with Physical != Logical ○ Physical will be generated. It is a feedback loop.
  • 13. Requirements ... ● Accelerate our ability to do incremental deployments (multiple times a day) ○ ... with easy rollback ○ ... accelerating our ability to innovate ○ ... while maintaining 100% uptime ● The "Happy Path" needs to be without human intervention ○ From Commit to A/B test
  • 14. Architecture ... QA - Selenium / Deployment - Code - Gerrit TestComplete Puppet Ion Cannon Build - Performance Analytics Jenkins/Nexus
  • 15. Takeaways ... ● Keep your modules small, keep them simple ● Keep change in mind ○ Do incremental rollout of changes ○ Provide a 'default' case in your puppet modules and use 'fail' (sdtlib) as a default case. ● If you are looking for a complete CD platform, then you need to embed Puppet into a larger solution