linuxtag 2012 - continuous delivery - dream to reality

74
Continuous Delivery Dream => Reality Dr. Clement Escoffier, akquinet

Upload: clement-escoffier

Post on 08-May-2015

1.037 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Linuxtag 2012  - continuous delivery - dream to reality

Continuous Delivery

Dream => Reality

Dr. Clement Escoffier, akquinet

Page 2: Linuxtag 2012  - continuous delivery - dream to reality

This is a work of fiction. Names, characters, places and projects are all products of the author’s

imagination. Any resemblance to actual events, locales or projects is

entirely coincidental

Page 3: Linuxtag 2012  - continuous delivery - dream to reality

SITUATION

Again, purely imaginary ;-)

Page 4: Linuxtag 2012  - continuous delivery - dream to reality

• Running for 2 years

• 4-6 developers

• Agile (Scrum)

Quite a big project

Page 5: Linuxtag 2012  - continuous delivery - dream to reality

As in all big projects,the build is chaotic

Page 6: Linuxtag 2012  - continuous delivery - dream to reality

Taking forever, Intermittent failures,Inconsistent output,

Non-reproducible builds,Authorization failures

Page 7: Linuxtag 2012  - continuous delivery - dream to reality

Releasing => Stress

Delivery => Error-prone

=> Delays

Page 8: Linuxtag 2012  - continuous delivery - dream to reality

Delays => Customer

Page 9: Linuxtag 2012  - continuous delivery - dream to reality

Trust => Pressure

Page 10: Linuxtag 2012  - continuous delivery - dream to reality

Quality => Technic. Debt

=> Non optimal project situation

Page 11: Linuxtag 2012  - continuous delivery - dream to reality

“Let’s deliver a version every day”

Output from an escalation meeting

Page 12: Linuxtag 2012  - continuous delivery - dream to reality

• Web App, JavaEE…• Up and Running

• Mobile App• Downloadable or in a Market

• Desktop App• Installers, Market, Auto-update• Installed on a system

Did you say “deliver” ?

Page 13: Linuxtag 2012  - continuous delivery - dream to reality

Developers

More Releases =>

Page 14: Linuxtag 2012  - continuous delivery - dream to reality

Project Managers

More Paperwork =>

Page 15: Linuxtag 2012  - continuous delivery - dream to reality

Ops

More Changes =>

Page 16: Linuxtag 2012  - continuous delivery - dream to reality

CONTINUOUS DELIVERY – THE CHALLENGE

Seamless Disruptive Changes

Page 17: Linuxtag 2012  - continuous delivery - dream to reality

How to introducecontinuous delivery

seamlessly ?

Page 18: Linuxtag 2012  - continuous delivery - dream to reality

“Let’s all commit to a continuous delivery

model …

Page 19: Linuxtag 2012  - continuous delivery - dream to reality

… but without changing the way

we work”

Page 20: Linuxtag 2012  - continuous delivery - dream to reality

CONTINUOUS DELIVERY – PRINCIPLES

Will try to make it not so boring

Page 21: Linuxtag 2012  - continuous delivery - dream to reality

• Manual software building and deployment

• Deploying in production-like environment only after releasing

• Manual configuration of the environment

Delivery anti-patterns

Page 22: Linuxtag 2012  - continuous delivery - dream to reality

A set of good practices to

simplify software delivery

AutomationResponsibilityPipeline

Page 23: Linuxtag 2012  - continuous delivery - dream to reality

Automation

Page 24: Linuxtag 2012  - continuous delivery - dream to reality

Bootstrap / Configuration

[Insert your own] Tests

Release, Deployment ProcessDatabase Evolution

Page 25: Linuxtag 2012  - continuous delivery - dream to reality
Page 26: Linuxtag 2012  - continuous delivery - dream to reality

Commit Stage

Acceptance Tests

UI Tests

Deployment Tests

Capacity Tests

Release

Page 27: Linuxtag 2012  - continuous delivery - dream to reality

It’s not only source code…

Page 28: Linuxtag 2012  - continuous delivery - dream to reality

Source

Data

Configuration

Environment

Page 29: Linuxtag 2012  - continuous delivery - dream to reality

Build tools &

Build processes

Page 30: Linuxtag 2012  - continuous delivery - dream to reality

Check-in everything

Source Code

Deployment Script

Data

Evolutions

Build ScriptsEnvironmentDescription

Configuration

Page 31: Linuxtag 2012  - continuous delivery - dream to reality

Traceability

Unique Versioning

Human-readable

Introspectable

Tags

ReproducibleBuild

Notifications

Page 32: Linuxtag 2012  - continuous delivery - dream to reality

Continuous Integration

Commit Often

Avoid branches

UnderstandableTest Suites

Use ‘branchby abstraction’

Fast feedbackComprehensive

Tests

Page 33: Linuxtag 2012  - continuous delivery - dream to reality

Automate Tests

Unit Tests

Test Groups

DeploymentTests

IntegrationTests

SystemTests

UI Tests

Page 34: Linuxtag 2012  - continuous delivery - dream to reality

Automate Deployment

Describe yourenvironment

Always deploy the same way

Manage configurations

AvoidDev vs. Prod

Did I tell you toTEST ?

Do itfrequently

Plan rollbacks

Page 35: Linuxtag 2012  - continuous delivery - dream to reality

Implement a teststrategy

Page 36: Linuxtag 2012  - continuous delivery - dream to reality

Promotion / Release<<Prod Ready>>

Capacity Tests

Deployment Tests

UI Tests

Acceptance Tests

Commit StageTest + Package V1 V2 V3

Page 37: Linuxtag 2012  - continuous delivery - dream to reality

Artifact Repository

Source Repository

CommitStage

V3

AcceptanceTests

Prom. / Rel. Stage

V3

Page 38: Linuxtag 2012  - continuous delivery - dream to reality

• As fast as possible• < 5 min is good• < 10 min is acceptable

mvn clean install

• Package, Changelog, Scripts…

The Commit Stage

Page 39: Linuxtag 2012  - continuous delivery - dream to reality

Build only one package:Distribution

Page 40: Linuxtag 2012  - continuous delivery - dream to reality

This package is reusedby all the test phases

Page 41: Linuxtag 2012  - continuous delivery - dream to reality

Describe your environment

Page 42: Linuxtag 2012  - continuous delivery - dream to reality

Reduce the distance betweenDev & Prod

Page 43: Linuxtag 2012  - continuous delivery - dream to reality

Always deploy using the same way

Page 44: Linuxtag 2012  - continuous delivery - dream to reality

BACK TO OUR PROJECT

Implementation Time

Page 45: Linuxtag 2012  - continuous delivery - dream to reality

SCM => SVN, Git, Git-SVN

Page 46: Linuxtag 2012  - continuous delivery - dream to reality

Build Tool => Maven

Page 47: Linuxtag 2012  - continuous delivery - dream to reality

continuous-versioning-mp+

maven-release-plugin

Page 48: Linuxtag 2012  - continuous delivery - dream to reality

CI => Jenkins

Page 49: Linuxtag 2012  - continuous delivery - dream to reality

Artifact Repo => Nexus

Page 50: Linuxtag 2012  - continuous delivery - dream to reality

Development

• Maven build• -SNAPSHOT

• Continuous Versioning

A1.0.0-SNAPSHOT

B1.0.0-SNAPSHOT

C1.0.0

Page 51: Linuxtag 2012  - continuous delivery - dream to reality

• Vagrant• http://vagrantup.com/

Virtual Environment

Page 52: Linuxtag 2012  - continuous delivery - dream to reality

• Provisioned using• Shell script• Puppet Manifests• Chef Recipes

=> Your deployment script

Virtual Environment

Page 53: Linuxtag 2012  - continuous delivery - dream to reality

Commit Stage

Artifact Repository

Source Repository

mvn clean install

1.0.0-SNAPSHOT

Page 54: Linuxtag 2012  - continuous delivery - dream to reality

Commit Stage

mvn clean install

1.0.0-SNAPSHOT

Fast-Release

1.0.0_42

Artifact Repository

Source Repository

tag

Page 55: Linuxtag 2012  - continuous delivery - dream to reality

All other stages are using the _42 version

Page 56: Linuxtag 2012  - continuous delivery - dream to reality

Testing Stages

IntegrationTests

DeploymentTests

UITests

Vagrant Box

Initialize a new VM +

Deployment

Page 57: Linuxtag 2012  - continuous delivery - dream to reality

Testing Stages

DeploymentTests

UITests

Vagrant Box Staging System

DeploymentTests again

Deployment on a staging system

OtherTests

Page 58: Linuxtag 2012  - continuous delivery - dream to reality

Releasing

Page 59: Linuxtag 2012  - continuous delivery - dream to reality

Releasing Promoting

Page 60: Linuxtag 2012  - continuous delivery - dream to reality

Take the current staged version (RC) => Declare it as G.A.

Page 61: Linuxtag 2012  - continuous delivery - dream to reality

TOOLING

Page 62: Linuxtag 2012  - continuous delivery - dream to reality

• Builds• Reproducible• Avoid system deps

• Make, Ant, Maven, Gradle, SBT

Build Tools

Page 63: Linuxtag 2012  - continuous delivery - dream to reality

• Avoid ‘works on my machine’•Dev/ Test / Run on prod-like system

• Vagrant is awesome

Virtualization

Page 64: Linuxtag 2012  - continuous delivery - dream to reality

• Customizable• Pipeline concepts

• Jenkins, Hudson, Team City, Bamboo• Travis

Continuous Integration

Page 65: Linuxtag 2012  - continuous delivery - dream to reality

• Describe your environment• Treat your infra as code

• Shell Script, Puppet, Chef

CMS

Page 66: Linuxtag 2012  - continuous delivery - dream to reality

• Specific CMS to deploy your application

• Go, Deploy-it, Puppet/Mcollective, JMX

Application Deployer

Page 67: Linuxtag 2012  - continuous delivery - dream to reality

SOME FINAL WORDS

Page 68: Linuxtag 2012  - continuous delivery - dream to reality

Responsibility

Page 69: Linuxtag 2012  - continuous delivery - dream to reality

Following the rules

Page 70: Linuxtag 2012  - continuous delivery - dream to reality

Trust is back

Page 71: Linuxtag 2012  - continuous delivery - dream to reality

Seeing changes

Page 72: Linuxtag 2012  - continuous delivery - dream to reality

Always being ready

Page 73: Linuxtag 2012  - continuous delivery - dream to reality

Track & Visualize everything

Page 74: Linuxtag 2012  - continuous delivery - dream to reality

Danke !