Continuous, continuous, continuous

73
Continuous, continuous, continuous. A better way to delivery better code Michele Orselli - @_orso_ Francesco Trucchia - @cphp

description

An introduction on Continuous Delivery (CD) and related practices to delivery high quality software faster

Transcript of Continuous, continuous, continuous

Page 1: Continuous, continuous, continuous

Continuous, continuous, continuous.

A better way to delivery better code

Michele Orselli - @_orso_ Francesco Trucchia - @cphp

Page 2: Continuous, continuous, continuous

Francesco Trucchia Vice Presidente @ideato

@cphp

Michele Orselli CTO @ideato

@_orso_

Page 3: Continuous, continuous, continuous

Agenda1. Motivations

2. Bad smells

3. What is CD

4. Implementing CD

Page 4: Continuous, continuous, continuous

Delivering working software

matters to business people

Page 5: Continuous, continuous, continuous

1. Find the right target market

2. Testing the business model

3. Continuous improvement

4. Scaling fast

Page 6: Continuous, continuous, continuous

Find the right target market

Page 7: Continuous, continuous, continuous

Testing the business model

Page 8: Continuous, continuous, continuous

Continuous improvement

Page 9: Continuous, continuous, continuous

Scaling fast

Page 10: Continuous, continuous, continuous

Bad smells of software delivery

https://www.flickr.com/photos/gotosira/4699308007

Page 11: Continuous, continuous, continuous

1. Business knowledge is not shared

2. Long release time

3. No reality check

4. Long bugs backlog

5. Dev and ops silos

Page 12: Continuous, continuous, continuous

Business knowledge is not shared

Page 13: Continuous, continuous, continuous

Long release time

Page 14: Continuous, continuous, continuous

No reality check

Page 15: Continuous, continuous, continuous

Long bugs backlog

Page 16: Continuous, continuous, continuous

Dev and ops silos

Page 17: Continuous, continuous, continuous

How can you fix these problems?

Page 18: Continuous, continuous, continuous

Continuous Delivery to the rescue!

Page 19: Continuous, continuous, continuous

software is always in a deployable state

deployable software over adding new features

everyone can have feedback on a change

one click deploy

Page 20: Continuous, continuous, continuous

Why CD it’s useful?

Page 21: Continuous, continuous, continuous

value stream map

Page 22: Continuous, continuous, continuous

Requirements Development QA Release

Page 23: Continuous, continuous, continuous

where do we start?

when are we finished?

how do we proceed?

!

Page 24: Continuous, continuous, continuous

CD Maturity Model

Page 25: Continuous, continuous, continuous

framework to understand where we are

two dimensions: process vs app

!

Page 26: Continuous, continuous, continuous

Processoptimized

!

measured !

consistent !

repeatable !

non repeatable

Page 27: Continuous, continuous, continuous

Application

code | configuration | host | data | test

Page 28: Continuous, continuous, continuous

Thank you!

Page 29: Continuous, continuous, continuous

How to proceed?incremental approach

remember: everyone in the team is responsible for software delivery

!

Page 30: Continuous, continuous, continuous

Iterative Development

Page 31: Continuous, continuous, continuous

no big releases

prioritize by business value

deliver value on every iteration

Page 32: Continuous, continuous, continuous

short feedback cycle

small releases are easier to manage

Page 33: Continuous, continuous, continuous

!

but… I want all the features!

Page 34: Continuous, continuous, continuous
Page 35: Continuous, continuous, continuous

short feedback means

test your business early

short deploys

less bugs

Page 36: Continuous, continuous, continuous

Continuous Integration

Page 37: Continuous, continuous, continuous

changes are integrated early

reduced risks

early feedback

“if it hurts do it more frequently”

Page 38: Continuous, continuous, continuous

keep everything in version control

code, doc, data

Page 39: Continuous, continuous, continuous

you have tests for you app

unit

acceptance

capacity

Page 40: Continuous, continuous, continuous

but… tests are a waste of time!

what about testers?

Page 41: Continuous, continuous, continuous
Page 42: Continuous, continuous, continuous

automated tests mean

higher confidence on your software

short deploys

less bugs

Page 43: Continuous, continuous, continuous

CI aims to automate build process

Page 44: Continuous, continuous, continuous

checkout

compile

data integration

automatic tests

metrics collection

deploy

Page 45: Continuous, continuous, continuous

everyone commits every day

Page 46: Continuous, continuous, continuous

data as code

the DBA is part of the team

Page 47: Continuous, continuous, continuous

don’t checkin broken code

Page 48: Continuous, continuous, continuous

team gets visible feedback on builds

Page 49: Continuous, continuous, continuous

keep the build green

Page 50: Continuous, continuous, continuous

Wait… I have a big feature!

Page 51: Continuous, continuous, continuous

branching vs developing on trunk

latent code patterns eg. feature flags

Page 52: Continuous, continuous, continuous

test in a copy of the production env

no more “works on my machine”

Page 53: Continuous, continuous, continuous

today creating vm/containers is cheap!

vagrant, docker

Page 54: Continuous, continuous, continuous

Continuous Delivery

Page 55: Continuous, continuous, continuous

the last mile

Page 56: Continuous, continuous, continuous

Deployment Pipeline

Page 57: Continuous, continuous, continuous

core concept in CD

visualize the stages of the process

metaphor: assembly line

Page 58: Continuous, continuous, continuous

Commit StageAutomated

Acceptance Stage

UAT Manual Testing

Capacity Testing Stage

Production

Page 59: Continuous, continuous, continuous
Page 60: Continuous, continuous, continuous

if a step fails the pipeline stops

build binaries once

deploy in the same way in every env

smoke test deploy

deploy in a copy of production

Page 61: Continuous, continuous, continuous

compile

create binaries

unit tests

code analysis

prepares data for subsequent steps

Commit Stage

Page 62: Continuous, continuous, continuous

acceptance tests

slow but high confidence

run in parallel

whole team responsibility

high confidence our software works

Automated Acceptance

Stage

Page 63: Continuous, continuous, continuous

what we learned from CI

data as code

the DBA is part of the team

UAT Manual Testing

Page 64: Continuous, continuous, continuous

infrastructure as code

puppet, chef, ansible, docker

ops are part of the team

UAT Manual Testing

Page 65: Continuous, continuous, continuous

QA with testers

showcase

env should resemble production

UAT Manual Testing

Page 66: Continuous, continuous, continuous

You can measure:

Scalability

Throughput

Load

Capacity Testing Stage

Page 67: Continuous, continuous, continuous

deploy is already tested on UAT

blue/green deploy

canary release

Production

Page 68: Continuous, continuous, continuous

Create the Pipeline

Page 69: Continuous, continuous, continuous

incremental approach

Page 70: Continuous, continuous, continuous

walking skeleton

automate build

automate unit tests

automate acceptance test

automate release

Page 71: Continuous, continuous, continuous

So…automation can reduce waste

focus on value

incremental approach

cross functional teams

Page 72: Continuous, continuous, continuous

http://www.infoq.com/minibooks/continuous-delivery-overview

Page 73: Continuous, continuous, continuous

Questions?

https://joind.in/12250

Francesco Trucchia Vice Presidente @ideato

@cphp

Michele Orselli CTO @ideato

@_orso_