25
Continuous Deployment

Continuous Deployment - Developers Conference Hamburg #dchh

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

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