Continuous delivery @wcap 5-09-2013

159
Continuous Delivery 05 - 09 - 2013

description

Release software is no less important than activities that precede it. The Continuous Delivery is a set of practices and methodologies that build an ecosystem for the software development lifecycle. We will see how to build this ecosystem around the applications developed, for which this release activities becomes a low-risk, inexpensive, fast and predictable.

Transcript of Continuous delivery @wcap 5-09-2013

Page 1: Continuous delivery   @wcap 5-09-2013

Continuous Delivery05 - 09 - 2013

Page 2: Continuous delivery   @wcap 5-09-2013

David FunaroCTO@Dnsee

@ingdavidino davidfunaro.com

Page 3: Continuous delivery   @wcap 5-09-2013

Overview

Page 4: Continuous delivery   @wcap 5-09-2013

STARTUP

Page 5: Continuous delivery   @wcap 5-09-2013

STARTUP

Page 6: Continuous delivery   @wcap 5-09-2013

STARTUP

Testo?

Page 7: Continuous delivery   @wcap 5-09-2013

STARTUP

Testo?

Implementation

Page 8: Continuous delivery   @wcap 5-09-2013

• is the only phase ?

• it’s really sufficient to release software

Implementation

Page 9: Continuous delivery   @wcap 5-09-2013

Implementation

Page 10: Continuous delivery   @wcap 5-09-2013

Progettazione

Implementation

Page 11: Continuous delivery   @wcap 5-09-2013

Progettazione

Implementation

Analisi

Page 12: Continuous delivery   @wcap 5-09-2013

Collaudo

Progettazione

Implementation

Analisi

Page 13: Continuous delivery   @wcap 5-09-2013

Collaudo

Progettazione

Implementation

Analisi

Manutezione

Page 14: Continuous delivery   @wcap 5-09-2013

Collaudo

Progettazione

Implementation

Analisi

Manutezione

Page 15: Continuous delivery   @wcap 5-09-2013

Collaudo

Progettazione

Implementation

Analisi

Manutezione

Software DevelopmentLife Cycle

Page 16: Continuous delivery   @wcap 5-09-2013

SW - LC

Feedback

Page 17: Continuous delivery   @wcap 5-09-2013

SW - LC

Feedback

• New Features

• Bug fixing

• System specification Changes

• Web services changes

• Customer support tips

Page 18: Continuous delivery   @wcap 5-09-2013

Software Evolution

Page 19: Continuous delivery   @wcap 5-09-2013

RELEASE

Soft

war

e C

ompo

nent

s ‣Layout ‣Frontend‣Backend‣Api‣Webservices‣...‣...‣...‣Librerie

Changes

Page 20: Continuous delivery   @wcap 5-09-2013

RELEASE

FEEDBACK

new features monetize bug

performance layout

Page 21: Continuous delivery   @wcap 5-09-2013

RELEASE

? Miss Release Price ?

Page 22: Continuous delivery   @wcap 5-09-2013

Reaction MetricsC

hang

e

REL

EASE

Page 23: Continuous delivery   @wcap 5-09-2013

Reaction MetricsC

hang

e

REL

EASE

Time interval ...

Security

Skills

Cost

Predictable

Stress

Repeatability

Page 24: Continuous delivery   @wcap 5-09-2013

• How many time you need to release software

Time interval ...

Page 25: Continuous delivery   @wcap 5-09-2013

• Everything will be ok ?

• Can i be sure that every needed step will be done ?

• Exceptions, are managed ?

• Data migration goes well ?

• Can i go back (rollback) ?

Security

Page 26: Continuous delivery   @wcap 5-09-2013

• Have, the selected person, all the skill needed to terminate the procedure ?

• What about his behavior in some exception flow case

Skills

Page 27: Continuous delivery   @wcap 5-09-2013

• How many people you need ?

• For how many time ?

• Other Resources ?

Cost

Page 28: Continuous delivery   @wcap 5-09-2013

• are able to indicate how much time will care ?

Predictable

Page 29: Continuous delivery   @wcap 5-09-2013

• What about the stress

• stress => error-prone

Stress

Page 30: Continuous delivery   @wcap 5-09-2013

• Just finish a deploy. Software released. A bug is found. You have to re-start

Repeatability

Page 31: Continuous delivery   @wcap 5-09-2013

Reaction Metrics

REL

EASE

Time interval ...

Security

Skills

Cost

Predictable

Stress

Repeatability

Production

Page 32: Continuous delivery   @wcap 5-09-2013

Reaction Metrics

REL

EASE

Time interval ...

Security

Skills

Cost

Predictable

Stress

Repeatability

Production

Staging

Page 33: Continuous delivery   @wcap 5-09-2013

Reaction Metrics

REL

EASE

Time interval ...

Security

Skills

Cost

Predictable

Stress

Repeatability

Production

Testing

Staging

Page 34: Continuous delivery   @wcap 5-09-2013

No Automation Process ?

Page 35: Continuous delivery   @wcap 5-09-2013

Lots of things to consider

• Code dependency management

• System evolution management

• Data management and architecture

• Component management

Page 36: Continuous delivery   @wcap 5-09-2013

Software Release

• Low Risk

• Cheap

• Frequent

• Rapid

• Predictable

... should be

Continuous Delivery

Page 37: Continuous delivery   @wcap 5-09-2013

What we need

• Source Code Management

• Continuous Integration Server

• Automated Deploy

• Real Time Alerting

• Root Cause Analysis

Page 38: Continuous delivery   @wcap 5-09-2013

Deploy Pipeline

Commit StageCompileUnitTestAnalysis

Build Installers

ReleaseAutomated acceptance

testign

Automated capacity testing

Manual TestingShowcases

Explorarorytesting

Page 39: Continuous delivery   @wcap 5-09-2013

Overview

Commit /push Testing

FAIL

SUCCESS Automated Deploy

Procedure

dev team

Page 40: Continuous delivery   @wcap 5-09-2013

ContinuousDelivery

Tools

MethodologiesPractices

Cautions

Page 41: Continuous delivery   @wcap 5-09-2013

Anti-patterns

• Deploy software manually

• Manual Configuration

• Deploy to a production-like Env Only after development is complete

Page 42: Continuous delivery   @wcap 5-09-2013

Benefits

• Empower Team

• Reducing Errors

• Lowering Stress

• Deployment Flexibility

• Practice Make Perfect

Page 43: Continuous delivery   @wcap 5-09-2013

Keep Everything in version control

Automate Almost Everything

Keys

Page 44: Continuous delivery   @wcap 5-09-2013

PAUSE

Page 45: Continuous delivery   @wcap 5-09-2013

SECTION ISource Code Management

Page 46: Continuous delivery   @wcap 5-09-2013

i sent you a mail with the last change

... are you shure ?

i can’t find the new file ?!?

The problem

Page 47: Continuous delivery   @wcap 5-09-2013
Page 48: Continuous delivery   @wcap 5-09-2013
Page 49: Continuous delivery   @wcap 5-09-2013

SCM : What is it ?

3

57

10

Repository

Page 50: Continuous delivery   @wcap 5-09-2013

SCM : What it does ?

• Keeping multiple file version

• Collaboration

Page 51: Continuous delivery   @wcap 5-09-2013

CHECK POINT

Page 52: Continuous delivery   @wcap 5-09-2013

Application Evolution

Page 53: Continuous delivery   @wcap 5-09-2013

Sharing

Page 54: Continuous delivery   @wcap 5-09-2013

isn’t just for source code

Cautions

you need everything required to re-create your application’s binaries and the environments in

which they run.

Page 55: Continuous delivery   @wcap 5-09-2013

How it works

Page 56: Continuous delivery   @wcap 5-09-2013

Trunk/Master

Page 57: Continuous delivery   @wcap 5-09-2013

Check-in

Push

Local

3

Page 58: Continuous delivery   @wcap 5-09-2013

Check-in

Push

Local

34

Page 59: Continuous delivery   @wcap 5-09-2013

Local

Check-out

Pull

8

29

Page 60: Continuous delivery   @wcap 5-09-2013

Local

Check-out

Pull

8

2

9

Page 61: Continuous delivery   @wcap 5-09-2013

Local

Conflict/Resolve

Pull

!3

5

Page 62: Continuous delivery   @wcap 5-09-2013

Conflict/Resolve

!

Page 63: Continuous delivery   @wcap 5-09-2013

Branching & Merging

Page 64: Continuous delivery   @wcap 5-09-2013

Tag

Page 65: Continuous delivery   @wcap 5-09-2013

Best Practice

• Little Commit

• Frequent Commit

• Consistent commit

• User Meaningful Commit message

Page 66: Continuous delivery   @wcap 5-09-2013

Different Products

Page 67: Continuous delivery   @wcap 5-09-2013

DEMO

Page 68: Continuous delivery   @wcap 5-09-2013

PAUSE

Page 69: Continuous delivery   @wcap 5-09-2013

SECTION IIContinuous Integration

Page 70: Continuous delivery   @wcap 5-09-2013

After your commit nothing works anymore

But ... “was working on my computer”

Ops

INTEGRATION PROBLEM

(dopo un commit )

Page 71: Continuous delivery   @wcap 5-09-2013

It was working on the stage environment !!!

Ops (dopo un deploy in produzione)

INTEGRATION PROBLEM

Page 72: Continuous delivery   @wcap 5-09-2013

sleepless nights before demo ... bug just after release

Page 73: Continuous delivery   @wcap 5-09-2013

Cos

t

Analysis Design Implementation Testing Maintenance

Changes

Page 74: Continuous delivery   @wcap 5-09-2013

DEFECT BUG≠

Glossary

Page 76: Continuous delivery   @wcap 5-09-2013

t

integrazione

Regressione

Working

Broken

Page 77: Continuous delivery   @wcap 5-09-2013

t

integrazione

Regressione

Working

Broken

Effort

Page 78: Continuous delivery   @wcap 5-09-2013

In software development the components integration need to be tested continuosly...

in order to find inconsistenciesas soon as possible

Good Solution

Page 79: Continuous delivery   @wcap 5-09-2013

Continuous Integration

Page 80: Continuous delivery   @wcap 5-09-2013

Cont inuous In tegrat ion i s a so f tware development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day.

Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.

Martin Fowler

Page 81: Continuous delivery   @wcap 5-09-2013

Requirements

Source Code Management

Page 82: Continuous delivery   @wcap 5-09-2013

Requirements

Page 83: Continuous delivery   @wcap 5-09-2013

Test Scopes

Page 84: Continuous delivery   @wcap 5-09-2013

Agile-Testing-Quadrants

Page 85: Continuous delivery   @wcap 5-09-2013

CI Flow

Page 86: Continuous delivery   @wcap 5-09-2013

F

CI Flow

Page 87: Continuous delivery   @wcap 5-09-2013

F

Checkout last Commit

CI Flow

Build and Tests Process

Page 88: Continuous delivery   @wcap 5-09-2013

F

Checkout last Commit

CI Flow

Build and Tests Process

Page 89: Continuous delivery   @wcap 5-09-2013

F

F

F

Checkout last Commit

CI Flow

Build and Tests Process

Page 90: Continuous delivery   @wcap 5-09-2013

F

F

F

F

F

F

Checkout last Commit

CI Flow

Build and Tests Process

Page 91: Continuous delivery   @wcap 5-09-2013

F

F

F

F

F

FF

F

Checkout last Commit

CI Flow

Build and Tests Process

Page 92: Continuous delivery   @wcap 5-09-2013

F

F

F

F

F

FF

F

Checkout last Commit

CI Flow

Build and Tests Process

Page 93: Continuous delivery   @wcap 5-09-2013

Github Jenkins Hooks

Page 94: Continuous delivery   @wcap 5-09-2013

Build & Test

✓ Process creating executable code

✓Unit test

✓Quality criteria

✓ Functional Test

✓Non Functional Test

Valid Syntax Compile

Code behavior

Code coverage, Mass detector

Business Acceptance Criteria

Application performance

PASS

Page 95: Continuous delivery   @wcap 5-09-2013

CI - Reduce Risk

• Say goodbye to long and tense integrations

• Increase visibility which enables greater communication

• Catch issues fast and nip them in the bud

• Spend less time debugging and more time adding features

• Proceed in the confidence you’re building on a solid foundation

• Stop waiting to find out if your code’s going to work

• Reduce integration problems allowing you to deliver software more rapidly

Page 96: Continuous delivery   @wcap 5-09-2013

CI - Output

System Status Documentation/Artifacts Quality Check

Page 97: Continuous delivery   @wcap 5-09-2013

“Continuous Integration doesn’t get rid of bugs, but it does make them dramatically easier to find and

remove.”

Martin Fowler

Page 98: Continuous delivery   @wcap 5-09-2013

Immediate feedback on the health of the system

Page 99: Continuous delivery   @wcap 5-09-2013

DEMO

Page 100: Continuous delivery   @wcap 5-09-2013

Team Responsibilities

• Check in frequently• Don’t check in broken code• Don’t check in untested code• Don’t check in when the build is broken• Repair the build as soon as possible

Page 101: Continuous delivery   @wcap 5-09-2013

Ci - Best practice

• CI server === Production Server

• Integrate it from the first commit

• Find best way to get notified

Page 102: Continuous delivery   @wcap 5-09-2013
Page 103: Continuous delivery   @wcap 5-09-2013
Page 104: Continuous delivery   @wcap 5-09-2013

Ci - software

... more and more

Page 105: Continuous delivery   @wcap 5-09-2013

PAUSA

Page 106: Continuous delivery   @wcap 5-09-2013

PARTE IIIAutomated Deploy

Page 107: Continuous delivery   @wcap 5-09-2013

Deployment

“is all the activities that make a software system available for use”

Wikipedia

Page 108: Continuous delivery   @wcap 5-09-2013

A Critical part of the application life-cycle

Deployment

Page 109: Continuous delivery   @wcap 5-09-2013

RELEASE

Real ?

Page 110: Continuous delivery   @wcap 5-09-2013

RELEASE

Real ?

RELEASERELEASERELEASERELEASERELEASERELEASERELEASERELEASERELEASERELEASERELEASEfeedback

Page 111: Continuous delivery   @wcap 5-09-2013

Deployment

• Low Risk

• Cheap

• Frequent

• Rapid

• Predictable

Page 112: Continuous delivery   @wcap 5-09-2013

Low Risk

• Exception catched

• Rollback

• Data on secure

Page 113: Continuous delivery   @wcap 5-09-2013

Cheap

• no more than one click

• no more than one person

• no skilled person

Page 114: Continuous delivery   @wcap 5-09-2013

Frequent

• to get feedback

Page 115: Continuous delivery   @wcap 5-09-2013

Rapid

Page 116: Continuous delivery   @wcap 5-09-2013

Predictable

Page 117: Continuous delivery   @wcap 5-09-2013

Incomplete ways

Page 118: Continuous delivery   @wcap 5-09-2013

Ftp is a deploy procedure ?

Page 119: Continuous delivery   @wcap 5-09-2013

Rsync

Rsync is a deploy procedure ?

Page 120: Continuous delivery   @wcap 5-09-2013

TeamViewer

Teamviewer is a deploy procedure ?

Page 121: Continuous delivery   @wcap 5-09-2013

SCM

$ git pull origin master

$ svn update

Versioning checkout is a deploy procedure ?

Page 122: Continuous delivery   @wcap 5-09-2013

• Incomplete

• Manual procedure

• Slow

• Server Downtime

• No data migration

• No Rollback

Problems

Page 123: Continuous delivery   @wcap 5-09-2013

Automated Deployment Goals

Page 124: Continuous delivery   @wcap 5-09-2013

one click deploy

Deploy

Automated Deployment Goals

Page 125: Continuous delivery   @wcap 5-09-2013

AnyTime AnyWhere AnyOne

Automated Deployment Goals

Page 126: Continuous delivery   @wcap 5-09-2013

Rollback

Automated Deployment Goals

Page 127: Continuous delivery   @wcap 5-09-2013

no downtime

Automated Deployment Goals

Page 128: Continuous delivery   @wcap 5-09-2013

Scalable

Frontend 1 Frontend 1I Frontend III

Balancer

Automated Deployment Goals

Page 129: Continuous delivery   @wcap 5-09-2013

Deployment Elements

• Executable Code

• Dependency Management

• Software configuration

• Environment Management

• Data Migrations

• Manage Cache

• Manage Assets

Page 130: Continuous delivery   @wcap 5-09-2013

Executable code (SCM)

Page 131: Continuous delivery   @wcap 5-09-2013

Dependency Management

Page 132: Continuous delivery   @wcap 5-09-2013

How you keep updated your libraries dependencies ?

to get the feature 103 done, i use library XXX

ok, i’ll note it here ...

to get the feature 103 done, i use library XXX

OK ..

Page 133: Continuous delivery   @wcap 5-09-2013

PIP

Page 134: Continuous delivery   @wcap 5-09-2013
Page 135: Continuous delivery   @wcap 5-09-2013

Data Migration

Page 136: Continuous delivery   @wcap 5-09-2013

What if, after your first production deployment, you have to change the Entity Relationship ?

Page 137: Continuous delivery   @wcap 5-09-2013
Page 138: Continuous delivery   @wcap 5-09-2013

Software Configuration

Page 139: Continuous delivery   @wcap 5-09-2013

How you keep updated your OS componets/libraries ?

to get the feature 103 done, i use library XXX, that require

the module 288

ok, i’ll note it here ...

to get the feature 103 done, i use library XXX, that require

the module 903OK ..

Page 140: Continuous delivery   @wcap 5-09-2013

A new way to setup your environment

Page 141: Continuous delivery   @wcap 5-09-2013

Write Configuration

Script

Page 142: Continuous delivery   @wcap 5-09-2013

Write Configuration

Script

Versionable

Page 143: Continuous delivery   @wcap 5-09-2013

Environment Management

Page 144: Continuous delivery   @wcap 5-09-2013

Production TestingStaging

Page 145: Continuous delivery   @wcap 5-09-2013

Manual - Follow recipe

• Integrity problems

• Problem with exception handling

• Basic Skills requirements

• Time consuming - expensive

• Error - prone

• Stress

Page 146: Continuous delivery   @wcap 5-09-2013

Build a custom Script• Do a backup

• Create new directory

• Update the code

• Update dependencies

• Run migration data

• Update Environements

• Warm up cache

• ...

Page 147: Continuous delivery   @wcap 5-09-2013
Page 148: Continuous delivery   @wcap 5-09-2013

Existing Tools

Fabric

... and more others

Page 149: Continuous delivery   @wcap 5-09-2013
Page 150: Continuous delivery   @wcap 5-09-2013

• Built in Ruby

• Easy setup

• Event Task based, easy to hook into

• Multiple server

• Multistage extension

• Multiple recipe for different environments

Page 151: Continuous delivery   @wcap 5-09-2013
Page 152: Continuous delivery   @wcap 5-09-2013

Web deploy Strategy

Document Root

Page 153: Continuous delivery   @wcap 5-09-2013

Web deploy Strategy

Document Root

Page 154: Continuous delivery   @wcap 5-09-2013

Web deploy Strategy

Document Root

Page 155: Continuous delivery   @wcap 5-09-2013

Web deploy Strategy

Document Root

Page 156: Continuous delivery   @wcap 5-09-2013

DEMO

Page 157: Continuous delivery   @wcap 5-09-2013

Keep Everything in version control

Automate Almost Everything

Page 158: Continuous delivery   @wcap 5-09-2013
Page 159: Continuous delivery   @wcap 5-09-2013

Thanks