Building a continuous delivery platform for the biggest spike in e-commerce - Puppet Camp Dublin '12
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

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

on

  • 2,136 views

Roland Tritsch, VP of Technical Operations at the Gilt Groupe, speaks on "Building a continuous delivery platform for the biggest spike in e-commerce" at PuppetCamp Dublin, 2012. ...

Roland Tritsch, VP of Technical Operations at the Gilt Groupe, speaks on "Building a continuous delivery platform for the biggest spike in e-commerce" at PuppetCamp Dublin, 2012.

Learn More: http://www.puppetlabs.com

Statistics

Views

Total Views
2,136
Views on SlideShare
1,787
Embed Views
349

Actions

Likes
0
Downloads
15
Comments
0

4 Embeds 349

http://www.scoop.it 335
http://puppetlabs.com 8
https://puppetlabs.com 3
http://webcache.googleusercontent.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • 1. Puppet Camp Dublin - 2012André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 LinuxLoad Balancing (Zeus) ● CDN (Akamai) ● Puppet, Cobbler, ...Aggregation (Java, Scala, ...) ● Zenoss, Nagios, ... ● Git & GerritLoad Balancing (Zeus) ● JenkinsServices (Java, Scala, Ruby, ...)Database (PostgreSQL, MongoDB, ...)
  • 4. Puppet at Gilt ...● Weve 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)
  • 5. Puppet - Incremental rollout
  • 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. Lessons learned / Best practices ...Puppet ...● Dont 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.
  • 10. Next steps ...
  • 11. 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
  • 12. Architecture ... QA - Selenium / Deployment -Code - Gerrit TestComplete Puppet Ion Cannon Build - Performance Analytics Jenkins/Nexus
  • 13. 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
  • 14. Questions?