Continuous Delivery Overview

Post on 02-Jul-2015

936 views 1 download

description

Continuous Delivery (CD) is often thought to be within the purview of tech practitioners – developers, testers, operations, delivery managers, etc. However, the industry is fast realizing that CD is actually more of a business decision. CD can be the game changer to help the organization stay a step ahead by delivering value to the customer reliably and frequently. CD isn’t a geeky fad, but a huge business enabler vouched for by Facebook, LinkedIn, Flickr and the like. In this session I’ll Introduce the principles, the practices, the tools, and the business value proposition of continuous delivery both from a business point of view and from a technical point of view.

Transcript of Continuous Delivery Overview

CONTINUOUS DELIVERY

Luca Minudel

O v e r v i e w o f

SIEMENS S62

Used in Italy from 1962 to 1980, 18 years

2

WHY CONTINUOUS DELIVERY?

3

4

WHY CONTINUOUS DELIVERY?1) INNOVATE FASTEROne step ahead

5

WHY CONTINUOUS DELIVERY?1) FASTER AND SAFER TOGETHERHave your cake and eat it too

6

7

WHY CONTINUOUS DELIVERY?2) BUSINESS, MARKET AND IT ALIGNEDPlay ball together

8

FAST FREQUENT COMUNICATIONSharing the same context

9

10

WHY CONTINUOUS DELIVERY?3) OVERCOME THE ‘90% DONE’ SYNDROME Done and done

11

12

Validated learning over

working software (over

comprehensive documentation)

Kent Beck

13

WHY CONTINUOUS DELIVERY?3) REDUCE RISKBuild the right thing, build it right

14

UNRELEASED CHANGES = RISK

1 1

2

1

2

3

4

1

2

3

Value

ReleaseTime

1 2 3 4

1

1

2

1

2

3

RELEASED CHANGES = VALUE

PREPARING FOR CONTINUOUS DELIVERYIterative software development & Continuous Integration

17

from Adaptive Leadership by Jim Highsmith

18

ITERATIVE DEVELOPMENTUse with care.

19

ITERATIVE DEVELOPMENT

20

CONTINUOUS INTEGRATION

Is a software 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 tests to detect integration errors as quickly as possible.

Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.

21

Martin Fowler

ARE YOU DOING CONTINUOUS DELIVERY?

22

THE CD WORKING GROUP AT THOUGHTWORKS SAYS

You are doing CD when:

①your software is deployable throughout its lifecycle

②your team prioritizes keeping the software deployable

over working on new features

③anybody can get fast, automated feedback on the

production readiness of their systems whenever

somebody makes a change to them

④you can perform push-button deployments of any version

of the software to any environment on demand.

23

CONTINUOUS DELIVERY & AGILE ?Agile Manifesto

24

AGILE MANIFESTO

Principle #1

Our highest priority is to satisfy the customer

through early and continuous delivery

of valuable software.

25

CONTINUOUS DELIVERY & LEAN?Lean principles

26

LEAN SOFTWARE DEVELOPMENT

Principle #5

Deliver as fast as possible.

27

LEAN SOFTWARE DEVELOPMENT

28

HIRING DEVOPS?Hey HR, creating a separate role for DevOps misses the point

29

DEVOPS DEFINITION

A term coined by Patrick Debois

To encourage people to think about software development

and software support in a holistic way, as opposed to two

separate activities.

30

DEVOPS DEFINITION

A term coined by Patrick Debois

To encourage people to think about software development

and software support in a holistic way, as opposed to two

separate activities.

31

DEVOPS DEFINITION

A term coined by Patrick Debois

To encourage people to think about software development

and software support in a holistic way, as opposed to two

separate activities.

32

DEVOPS DEFINITION

33

Development Operations

DEVOPS DEFINITION

34

Development Operations

DEVOPS DEFINITION

35

Development OperationsDevOps

DEVOPS ANTI-PATTERN

DEVOPS AND CAMS

John Willis uses acronym CAMS for

Culture

Automation

Measurements

Sharing

36

TOOLS FOR CONTINUOUS DELIVERYIndividuals and interactions over processes and tools

37

If there is any rule

to selecting tools to support

software delivery and support,

it is to assume that:

any tools chosen may need to

be changed in the future

- Kief Morris.

38

TOOLS FOR CONTINUOUS DELIVERY

■ Package management: RPM, WiX, Wise, …

■ Infrastructure management: Puppet, Chef, …

■ CD server: Go , …

■ Dependencies management: …

■ Binaries repository: …

■ …

■ …

39

WWW.GO.CD OPEN SOURCE - FREE DOWNLOAD

40

WHAT IS CONTINUOUS DELIVERY?Definitions

41

CONTINUOUS DELIVERY

42

PEOPLE PRACTICES

TOOLS

Continuous Delivery is

a software development discipline

where you build software in such a way

that

the software can be

released to production at any time

- Martin Fowler.

43

Continuous Delivery aims to

reduce the cost, time, and risk

of delivering incremental

changes to users

- Jez Humble.

44

MAIN PRINCIPLES AND PRACTICESHow to?

45

Create a

repeatable,

reliable way

to release software

46

Everybody

is responsible

for the delivery process

47

Automate almost everything

48

AUTOMATE ALMOST EVERYTHING

The build

Deployment to test and production environments

Database changes

Tests

Remediation plans

Infrastructure as code

Monitoring

49

AUTOMATE TESTS

50

AUTOMATE TESTS

51

End-to-end, out-of-process, business facing

Localized, in-process, technology facing

AUTOMATE REMEDIATION PLANS

52

AUTOMATE INFRASTRUCTURE

53

If someone threw a server out of the window,

how long would it take to recreate it?

TRUNK BASED DEVELOPMENT

All development is done on the mainline (also known as

the head or trunk) of the source-code repository.

All the developers commit the code to the mainline at least

once per day.

Developers commit only potentially releasable code using

practices like latent-code patterns, feature toggles, and

branch by abstraction.

Every new release is built from the mainline. 54

TRUNK BASED DEVELOPMENT

55

Merge

Merge

Trunk

NO FEATURE BRANCHING

TRUNK BASED DEVELOPMENT

56

Trunk

2 2

3

4

2

3

1 1 1 1

4

5

2

3

1

2

1

3

2

1 1

4

3

2

TRUNK BASED DEVELOPMENT

Merge

Merge

Trunk

2 2

3

4

2

3

1 1 1 1

4

5

2

3

1

2

1

3

2

1 1

4

3

2

1 43

21

4

5

2 3

TRUNK BASED DEVELOPMENT

58

Trunk

1 2 3 4 5

1

1

3 42

4 52 1 3 2 4 3

THE DEPLOYMENT PIPELINE

Models your process for getting software from version

control into the hands of your users.

Implements and automates that process for each stage that

every change to your software goes through, from check-in

to release – and it may also contain a few manual stages

such as approvals.

Visualises in real time the status of the code base.

59

THE DEPLOYMENT PIPELINE

THE DEPLOYMENT PIPELINE

61

BACKLOGPLANNING

MEETING

CODE &

COMMIT

BUILD

UNIT

TESTS

INTEGRATION,

ACCEPTANCE,

TESTS

MANUAL

APPROVAL

CODE

CHANGE

READY TO GO

LIVE

AN EXAMPLE OF A BASIC PIPELINE

WHAT IS CONTINUOUS DELIVERY? AGAINDo me a sketch!

62

CONTINUOUS DELIVERY

63

BEFORE

CONTINUOUS DELIVERY

64

AFTER

LET’S FINISH FROM THE START:

WHY CONTINUOUS DELIVERY?

65

We cannot always decide when

change will come.

We can decide where each

change will take us.

Because we can move

faster

than the change 66

CONTINUOUS DELIVERY OVERVIEW

67

DOWNLOAD THE FREE BOOKLET AT INFOQ:

THANK YOU

For questions or suggestions

Contact us via:

Twitter: @LUKADOTNET

Linker-In: LUCA MINUDEL

Email:

LUCA.MINUDEL@THOUGHTWORKS.COM