Continuous Deployment - Developers Conference Hamburg #dchh
-
Upload
dirk-hoerig -
Category
Technology
-
view
1.031 -
download
0
description
Transcript of Continuous Deployment - Developers Conference Hamburg #dchh
!
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