Transcript
Page 1: Continuous Deployment - Developers Conference Hamburg #dchh

!

Continuous Deployment

Page 2: Continuous Deployment - Developers Conference Hamburg #dchh

Me: Hajo Eichler !!!

‣ Head Product Development

‣ DevQaOps

!!!!

[email protected]

‣ github.com/hajoeichler

!!!

‣ founded 2006

‣ Munich & Berlin

‣ 40 people

‣ Cloud eCommerce Software provider

‣ company behind SPHERE.IO, first eCommerce PaaS

!‣ commercetools.com

‣ @commercetools

‣ @sphereio

Page 3: Continuous Deployment - Developers Conference Hamburg #dchh

SPHERE.IO !

‣ Single Source Commerce

‣ Open API for products, customer, cards, orders, tax ...

‣ SDK, templates, CLI, connectors, examples, plugin-ins, etc as Open Source

Page 4: Continuous Deployment - Developers Conference Hamburg #dchh

SPHERE API

Page 5: Continuous Deployment - Developers Conference Hamburg #dchh

📱PHP

JAVA

"

NODE.JS

RUBYIOS

ANDROID

SPHERE API

Page 6: Continuous Deployment - Developers Conference Hamburg #dchh

App Stack !

‣ Scala

‣ Play 2

‣ REST/JSON

‣ Netty

‣ Mongo

‣ ElasticSearch

Ops Stack

!

‣ Puppet

‣ mcollective

‣ hiera/raziel

‣ Ruby

‣ nginx

‣ Rackspace

Page 7: Continuous Deployment - Developers Conference Hamburg #dchh

Today’s challenge...

Code Server

Page 8: Continuous Deployment - Developers Conference Hamburg #dchh

... in practice !

LB

LB

different languages

config

several environment

multiple serverfast

iterationssensitive data

Page 9: Continuous Deployment - Developers Conference Hamburg #dchh

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

Page 10: Continuous Deployment - Developers Conference Hamburg #dchh

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

Page 11: Continuous Deployment - Developers Conference Hamburg #dchh

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

Page 12: Continuous Deployment - Developers Conference Hamburg #dchh

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

Page 13: Continuous Deployment - Developers Conference Hamburg #dchh

System automation - credentials !!

Raziel

‣ Take care of sensitive data

‣ Using GPG encryption

‣ Keep versioning and history

!

‣ github.com/hajoeichler/raziel

Page 14: Continuous Deployment - Developers Conference Hamburg #dchh

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

Page 15: Continuous Deployment - Developers Conference Hamburg #dchh

Pretty complex... !

LB

LB

different languages

config

several environment

multiple serverfast

iterationssensitive data

Page 16: Continuous Deployment - Developers Conference Hamburg #dchh

Demystify !

‣ Build tooling that brings complexity of systems down to a

!

‣ single command line

‣ click of a button

Page 17: Continuous Deployment - Developers Conference Hamburg #dchh

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”

Page 18: Continuous Deployment - Developers Conference Hamburg #dchh

Demystify operations !

‣ git like interface (GLI)

‣ mcollective agent

Page 19: Continuous Deployment - Developers Conference Hamburg #dchh

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?

Page 20: Continuous Deployment - Developers Conference Hamburg #dchh

Demystify deployments !

!

!

!

!

!

!

HipChat with

robut = mco client

Page 21: Continuous Deployment - Developers Conference Hamburg #dchh

The big picture !

!

!

!

!

!

!

CI ProductionStaging

S3 repo

robut robutrobut

GitHub UserVoice

JIRA PagerDuty

...

Mission Control

Page 22: Continuous Deployment - Developers Conference Hamburg #dchh

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

Page 23: Continuous Deployment - Developers Conference Hamburg #dchh

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

Page 24: Continuous Deployment - Developers Conference Hamburg #dchh

Questions?commercetools.com

@commercetools @sphereio

Page 25: Continuous Deployment - Developers Conference Hamburg #dchh

!

SPHERE.IO - from developers to developers!

Try: admin.sphere.io ‣ 60 days for free!

‣ no cc required

‣ #holyshit