import continuous.delivery.*

48
import continuous.delivery.* Anton Arhipov @antonarhipov Product Lead ZeroTurnaround Monday, November 19, 12

Upload: anton-arhipov

Post on 28-Jan-2015

109 views

Category:

Technology


0 download

DESCRIPTION

Organizing continuous delivery pipeline with Jenkins, Artifactory & LiveRebel

TRANSCRIPT

Page 1: import continuous.delivery.*

import continuous.delivery.*Anton Arhipov

@antonarhipov

Product LeadZeroTurnaround

Monday, November 19, 12

Page 2: import continuous.delivery.*

INDIVIDUALS and INTERACTIONS

over

Agenda

PROCESSES and TOOLS,blah, blah, blah ...

Agile Manifesto says:

Monday, November 19, 12

Page 3: import continuous.delivery.*

Agenda

PROCESSES and TOOLS

Monday, November 19, 12

Page 4: import continuous.delivery.*

Fedex process

• Package

• Dropoff

• Transfer

• Delivery

• Profit!

Monday, November 19, 12

Page 5: import continuous.delivery.*

• Package

• Test

• Approve

• Deploy

• Profit!

Java EE

Monday, November 19, 12

Page 6: import continuous.delivery.*

• What exactly is in prod now?

• How did it get deployed?

• How did it get there?

• Where did it come from?

• How did you package the application?

Questions?

Monday, November 19, 12

Page 7: import continuous.delivery.*

Fedex FAIL

Monday, November 19, 12

Page 8: import continuous.delivery.*

Software FAIL

Monday, November 19, 12

Page 9: import continuous.delivery.*

Monday, November 19, 12

Page 10: import continuous.delivery.*

Continuous DeliveryPipeline

Monday, November 19, 12

Page 11: import continuous.delivery.*

A pipeline?

Source: http://startupblog.files.wordpress.com/2008/09/pipeline1.jpg

Monday, November 19, 12

Page 12: import continuous.delivery.*

Continuous Delivery pipeline!

Source: http://studentthinktank.eu/wp-content/uploads/2012/02/03_TURKMEN-PIPELINE.jpg

Monday, November 19, 12

Page 13: import continuous.delivery.*

• Automate

• Record

• Test

• Recover

Philosophy

Monday, November 19, 12

Page 14: import continuous.delivery.*

• Orchestration Platform

• Delivery Manager

• Artifact Repository

The Pipeline

Monday, November 19, 12

Page 15: import continuous.delivery.*

Jenkins(OSS Continuous Integration Server)

Monday, November 19, 12

Page 16: import continuous.delivery.*

Orchestration platform

Monday, November 19, 12

Page 17: import continuous.delivery.*

LiveRebel(Commercial Delivery Manager)

Monday, November 19, 12

Page 18: import continuous.delivery.*

• Deploy/Undeploy

• Update

• No downtime

• No lost sessions

• Plain old restarts

• Environment/deployment status

What can you do with LiveRebel?

Monday, November 19, 12

Page 19: import continuous.delivery.*

• No good OSS alternative

• Supports many app servers

• No downtime updates

• Integrates with OSS projects

Why LiveRebel?

Monday, November 19, 12

Page 20: import continuous.delivery.*

And we freakin’built it!

Monday, November 19, 12

Page 21: import continuous.delivery.*

Artifactory(OSS/Commercial Artifact Repository)

Monday, November 19, 12

Page 22: import continuous.delivery.*

• FTP

• Jenkins

• Nexus (and the like)

Alternatives

Monday, November 19, 12

Page 23: import continuous.delivery.*

Monday, November 19, 12

Page 24: import continuous.delivery.*

Now let’s build a pipeline!

Monday, November 19, 12

Page 25: import continuous.delivery.*

The Pipeline / The Repos

Monday, November 19, 12

Page 26: import continuous.delivery.*

TestBuildRepository

Pipeline Build Test

QA

QA Dist

Deployment Test

RC

GO!

ProdStaging

Monday, November 19, 12

Page 27: import continuous.delivery.*

The tools in the pipeline

Monday, November 19, 12

Page 28: import continuous.delivery.*

Pipeline phases

Monday, November 19, 12

Page 29: import continuous.delivery.*

Build phase

Monday, November 19, 12

Page 30: import continuous.delivery.*

Test phase

Monday, November 19, 12

Page 31: import continuous.delivery.*

QA phase

Monday, November 19, 12

Page 32: import continuous.delivery.*

Production phase

Monday, November 19, 12

Page 33: import continuous.delivery.*

Dirty details in Jenkins

Monday, November 19, 12

Page 34: import continuous.delivery.*

• Database

• Configuration & Environment

• Tests & Monitoring

Themes Not Covered

Monday, November 19, 12

Page 35: import continuous.delivery.*

• How do you package the application?

• Where did it come from?

• Where does it go?

• How does it get deployed?

• What exactly is in prod now?

Questions?

Monday, November 19, 12

Page 36: import continuous.delivery.*

The answers are

in the pipeline!

Monday, November 19, 12

Page 37: import continuous.delivery.*

• Jenkins jobs represent the workflow

• Artifactory is a sync-point

• LiveRebel manages apps and versions

• Manual flows with REST

• Tracking with scripts & text files

Pipeline Summary

Monday, November 19, 12

Page 38: import continuous.delivery.*

Not bad, but what about the process??Monday, November 19, 12

Page 39: import continuous.delivery.*

Monday, November 19, 12

Page 40: import continuous.delivery.*

Traditional Process

Developer

Release Engineer SysOp

QA

Monday, November 19, 12

Page 41: import continuous.delivery.*

Powered by CD

Developer

CD Engineer SysOp

QA

Manager

Monday, November 19, 12

Page 42: import continuous.delivery.*

What’s changed?

Monday, November 19, 12

Page 43: import continuous.delivery.*

What’s changed?

• Increased significance of automated QA

Monday, November 19, 12

Page 44: import continuous.delivery.*

What’s changed?

• Increased significance of automated QA

• Reduced manual testing

Monday, November 19, 12

Page 45: import continuous.delivery.*

What’s changed?

• Increased significance of automated QA

• Reduced manual testing

• Infrastructure roles NOT involved with release

Monday, November 19, 12

Page 46: import continuous.delivery.*

What’s changed?

• Increased significance of automated QA

• Reduced manual testing

• Infrastructure roles NOT involved with release

• Release approval is a business decision

Monday, November 19, 12

Page 47: import continuous.delivery.*

What’s changed?

• Increased significance of automated QA

• Reduced manual testing

• Infrastructure roles NOT involved with release

• Release approval is a business decision

• Automation is the key

Too good to be true, eh?

Monday, November 19, 12

Page 48: import continuous.delivery.*

Q & A

@antonarhipov

[email protected]

Monday, November 19, 12