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.
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. SPHERE.IO
!
‣ Single Source Commerce
‣ Open API for products, customer, cards, orders, tax ...
‣ SDK, templates, CLI, connectors, examples, plugin-ins, etc
as Open Source
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. 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. 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. 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. System automation - credentials
!
!
Raziel
‣ Take care of sensitive data
‣ Using GPG encryption
‣ Keep versioning and history
!
‣ github.com/hajoeichler/raziel
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
16. Demystify
!
‣ Build tooling that brings complexity
of systems down to a
!
‣ single command line
‣ click of a button
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”
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
21. The big picture
!
!
!
!
! GitHub
UserVoice
! JIRA
PagerDuty
! ...
Mission
Control
S3 repo
robut
robut
robut
CI
Staging
Production
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. 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