Upload
dirk-hoerig
View
1.031
Download
0
Tags:
Embed Size (px)
DESCRIPTION
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.
Citation preview
!
Continuous Deployment
Me: Hajo Eichler !!!
‣ Head Product Development
‣ DevQaOps
!!!!
‣ github.com/hajoeichler
!!!
‣ founded 2006
‣ Munich & Berlin
‣ 40 people
‣ Cloud eCommerce Software provider
‣ company behind SPHERE.IO, first eCommerce PaaS
!‣ commercetools.com
‣ @commercetools
‣ @sphereio
SPHERE.IO !
‣ Single Source Commerce
‣ Open API for products, customer, cards, orders, tax ...
‣ SDK, templates, CLI, connectors, examples, plugin-ins, etc as Open Source
SPHERE API
📱PHP
JAVA
"
NODE.JS
RUBYIOS
ANDROID
SPHERE API
App Stack !
‣ Scala
‣ Play 2
‣ REST/JSON
‣ Netty
‣ Mongo
‣ ElasticSearch
Ops Stack
!
‣ Puppet
‣ mcollective
‣ hiera/raziel
‣ Ruby
‣ nginx
‣ Rackspace
Today’s challenge...
Code Server
... in practice !
LB
LB
different languages
config
several environment
multiple serverfast
iterationssensitive data
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
System automation - bootstrapping !
‣ Running on Rackspacebootstrap with http://fog.io
‣ We build nodes from scratch based on standard distro image
‣ Automated DNS management using AWS Route53
System automation - configuration !hiera packed with YAML = plain text
!!!!!!!!! Define for each environment
Versioned in GitHub
System automation - provisioning
‣ Infrastructure as code
‣ Role based puppet
‣ Puppet standalone
Config
Package
Service
System automation - configuration !hiera packed with YAML = plain text
!!!!!!!!! Define for each environment
Versioned in GitHub
System automation - configuration
‣ Hiera with YAML - just text files
‣ Treat config as code
‣ Versioning via GitHub
System automation - credentials !!
Raziel
‣ Take care of sensitive data
‣ Using GPG encryption
‣ Keep versioning and history
!
‣ github.com/hajoeichler/raziel
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
Pretty complex... !
LB
LB
different languages
config
several environment
multiple serverfast
iterationssensitive data
Demystify !
‣ Build tooling that brings complexity of systems down to a
!
‣ single command line
‣ click of a button
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”
Demystify operations !
‣ git like interface (GLI)
‣ mcollective agent
github.com/hajoeichler/JenkinsJobConfigGenerator
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?
Demystify deployments !
!
!
!
!
!
!
HipChat with
robut = mco client
The big picture !
!
!
!
!
!
!
CI ProductionStaging
S3 repo
robut robutrobut
GitHub UserVoice
JIRA PagerDuty
...
Mission Control
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
Data Source: eMarketer 2012
Data Source: eMarketer 2012
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
!
SPHERE.IO - from developers to developers!
Try: admin.sphere.io ‣ 60 days for free!
‣ no cc required
‣ #holyshit