+ All Categories
Transcript
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


Top Related