Continuous Deployment - Developers Conference Hamburg #dchh

1,687 views

Published on

We want to talk about our approach towards Continuous Deployment and how we have setup our process with integrations to Jenkins, Hipchat, Rackspace and GitHub. We want to show you how a easy to use environment enables every developer to do production releases with just a few lines.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,687
On SlideShare
0
From Embeds
0
Number of Embeds
76
Actions
Shares
0
Downloads
18
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Continuous Deployment - Developers Conference Hamburg #dchh

  1. 1. ! Continuous Deployment
  2. 2. ! ! ! Me: Hajo Eichler ! ! ‣ founded 2006 ‣ Munich & Berlin ‣ 40 people ‣ Cloud eCommerce Software provider ‣ company behind SPHERE.IO, first eCommerce PaaS ! ! ‣ Head Product Development ‣ DevQaOps ! ! ! ! ‣ commercetools.com ‣ hajo@commercetools.com ‣ @commercetools ‣ github.com/hajoeichler ‣ @sphereio
  3. 3. SPHERE.IO ! ‣ Single Source Commerce ‣ Open API for products, customer, cards, orders, tax ... ‣ SDK, templates, CLI, connectors, examples, plugin-ins, etc
 as Open Source
  4. 4. SPHERE API
  5. 5. JAVA NODE.JS IOS RUBY 📱 PHP ANDROID SPHERE API
  6. 6. App Stack Ops Stack ! ! ‣ Scala ‣ Puppet ‣ Play 2 ‣ mcollective ‣ REST/JSON ‣ hiera/raziel ‣ Netty ‣ Ruby ‣ Mongo ‣ nginx ‣ ElasticSearch ‣ Rackspace
  7. 7. Today’s challenge... Code Server
  8. 8. ... in practice ! several environment LB different languages config sensitive data fast iterations LB multiple server
  9. 9. Packaging ! ‣ One system to rule them all (OS, services and apps) ‣ Yum or apt update, rollback and handle config files ‣ fpm is you friend Repository ! ‣ Repository categories for stages ‣ Using S3 for hosting ‣ Implemented with s3cmd ‣ Access controlled
  10. 10. System automation - bootstrapping ! ‣ Running on Rackspace
 bootstrap with http://fog.io ‣ We build nodes from scratch based on standard distro image ‣ Automated DNS management using AWS Route53
  11. 11. System automation - configuration automation - provisioning ! hiera packed with YAML = plain text ! Package ! ! ! Config ! ! ! Service ! ! Define for each environment as code ‣ InfrastructureVersioned in GitHub ‣ Role based puppet ‣ Puppet standalone
  12. 12. System automation - configuration automation - configuration ! hiera packed with YAML = plain text ! ! ! ! ! ! ! ! ! Define YAML environment ‣ Hiera withfor each- just text files Versioned in code ‣ Treat config asGitHub ‣ Versioning via GitHub
  13. 13. System automation - credentials ! ! Raziel ‣ Take care of sensitive data ‣ Using GPG encryption ‣ Keep versioning and history ! ‣ github.com/hajoeichler/raziel
  14. 14. System automation - orchestration ! ‣ How to deal with more than 10 servers? mcollective ‣ Facts/roles link puppet modules to mcollective filters ! ‣ mco ping ‣ mco ping -F roles=sphere-merchantcenter ‣ mco ping -F group=black ‣ mco ping -F roles=sphere-merchantcenter -F group=black ‣ Plugin system ‣ Write your own agents
  15. 15. Pretty complex... ! several environment LB different languages config sensitive data fast iterations LB multiple server
  16. 16. Demystify ! ‣ Build tooling that brings complexity of systems down to a ! ‣ single command line ‣ click of a button
  17. 17. Demystify puppet ! ‣ vagrant brings puppet down to the developer machine ! ‣ run production squeezed in one vm ‣ bit of port magic ‣ port forwarding to developer host ‣ shared folders ! ‣ no more “but it works on my machine”
  18. 18. Demystify operations ! ‣ git like interface (GLI) ‣ mcollective agent
  19. 19. Demystify Continuous Integration ! ‣ we use Jenkins and travis ci ‣ build.sh for all projects ‣ build / test / package / publish ‣ trigger deployments and acceptance tests ‣ build it once only! (no releases) ! ‣ But, what runs where? github.com/hajoeichler/JenkinsJobConfigGenerator
  20. 20. Demystify deployments ! ! ! HipChat with ! robut = mco client ! ! !
  21. 21. The big picture ! ! ! ! ! GitHub UserVoice ! JIRA PagerDuty ! ... Mission Control S3 repo robut robut robut CI Staging Production
  22. 22. BTW: Quality matters ! ‣ All this works only when you can trust your security net = automated tests ! ‣ No explicit QA team, task whatever ‣ Let all involve in the story we use cucumber for specifying ‣ web ‣ command line ‣ API
  23. 23. Things to take home ! ‣ There is a new eCommerce platform ! ‣ Package everything and build it only once ‣ Automate what ever possible - test it! ‣ You build it you deploy it ‣ Give trust to developers and provide nice tooling ‣ Build an audit log on what happens visible to all Data Source: eMarketer 2012
  24. 24. Questions? commercetools.com @commercetools @sphereio
  25. 25. ! SPHERE.IO - from developers to developers! Try: admin.sphere.io ‣ 60 days for free! ‣ no cc required ‣ #holyshit

×