59
Continuous Deployment Titas Norkūnas / @varsketiz

Continuous Deployment (english)

Embed Size (px)

DESCRIPTION

Slides for Continuous Deployment talk on agileday 2013 in Vilnius - tak (in lithuanian) here - http://www.youtube.com/watch?v=ti1Pfu9dnYY

Citation preview

Page 1: Continuous Deployment (english)

Continuous DeploymentTitas Norkūnas / @varsketiz

Page 2: Continuous Deployment (english)
Page 3: Continuous Deployment (english)

Assembla the Product

~ 350.000 Projects tracked

~ 350.000 Repositories hosted

~ 850.000 Users registered

~ 5.000.000 Tasks created

Page 4: Continuous Deployment (english)

Assembla the Team

● 40 People (20 Developers)

● 20 Countries

● 15 Different Timezones

● 163 Prod Deploys in April

Page 5: Continuous Deployment (english)

Assembla the Team

Page 6: Continuous Deployment (english)

Assembla the Team

Me

Colleague I work with the most

Page 7: Continuous Deployment (english)

Have you heard about Continuous Deployment before?

Page 8: Continuous Deployment (english)

How often do you deploy?

Page 9: Continuous Deployment (english)

This is about

● The Why

● Common concerns

● The How

● Good to haves and common issues

● How we did it

Page 10: Continuous Deployment (english)

Why bother?

Agile manifesto:

"Our highest priority is to satisfy the

customer through early and

continuous delivery of valuable software."

Page 11: Continuous Deployment (english)

Why bother?

Agile manifesto:

"Working software is the primary

measure of progress."

Page 12: Continuous Deployment (english)

Why bother?

Agile manifesto:

"Simplicity – the art of maximizing the

amount of work not done – is

essential."

Page 13: Continuous Deployment (english)

Why bother?

MVP:

"The minimum viable product is that

version of a new product which

allows a team to collect the maximum amount of validated learning about

customers with the least effort."

Page 14: Continuous Deployment (english)

Why bother?

Your favorite tech company does it:

● Github

● Amazon

● Heroku

● Linkedin

● Etsy

● ... <endless list> ...

Page 15: Continuous Deployment (english)

Why bother?

Your favorite tech company does it:

● Github

● Amazon - Prod Deploy every 11s!● Heroku

● Linkedin

● Etsy

● ... <endless list> ...

Page 16: Continuous Deployment (english)

Benefits

● Deliver value ASAP

● Advance every day

● Always be informed

● Have a fast feedback cycle

● Create a top-notch environment

Page 17: Continuous Deployment (english)

Concerns

● But isn't that dangerous?

● That will cost much more!

● It will reduce quality!

● That's just cowboy-coding!

Page 18: Continuous Deployment (english)

But isn't that dangerous? - No.

● Less changes in every release

● Minimal issue fix and deploy time

● Deploys are standard

Page 19: Continuous Deployment (english)

That will cost much more! - No.

● Automated deploys - one time fee

● Cheap a/b testing

● Always ASAP code delivery

Page 20: Continuous Deployment (english)

It will reduce quality! - No.

● Hide features that are

not ready

● Never rush to "make it"

● Keep all current testing

practices

Page 21: Continuous Deployment (english)

That's just cowboy-coding! - No.

● Standardize configuration

● Standardize migrations

● Standardize all environments

Page 22: Continuous Deployment (english)
Page 23: Continuous Deployment (english)

The How

● "Continuous" team mentality

● Proper Continuous Integration

● Deployment Automation

● Metrics and Alerts

Page 24: Continuous Deployment (english)

There is only one rule to Continuous Deployment - keep

your Mainline deployable.

Page 25: Continuous Deployment (english)

Define deployable

Page 26: Continuous Deployment (english)

Automated tests pass

Page 27: Continuous Deployment (english)

Automated tests pass, code reviewed and tested by peer or

QA

Page 28: Continuous Deployment (english)

Automated tests pass, code reviewed and tested by peer or QA, code tested on production

by a subset of users

Page 29: Continuous Deployment (english)

Mainline stability

● Don't break the trust to save 5

minutes

● Don't assume you know everything

● Don't block others

Page 30: Continuous Deployment (english)
Page 31: Continuous Deployment (english)

Continuous Integration

Branch →

Mainline →

Page 32: Continuous Deployment (english)

Continuous Integration

2?1

Mainline →

Branch →

Page 33: Continuous Deployment (english)

Continuous Integration

Mainline →

1 ?

4

Branch →

3

Mainline →

Branch →

Page 34: Continuous Deployment (english)

Backmerge from Mainline to branch for integrate and build. Premature integration is evil

Page 35: Continuous Deployment (english)

Deployment Automation

● Easy - with a click of a button

● Risk-free - be able to rollback

● Consistent - no surprises

● Traceable - who, when what

Page 36: Continuous Deployment (english)

Easy - with a click of a button

Page 37: Continuous Deployment (english)

Risk-free - be able to rollback

Page 38: Continuous Deployment (english)

Consistent - no surprises

Page 39: Continuous Deployment (english)

Traceable - who, when, what?

Page 40: Continuous Deployment (english)
Page 41: Continuous Deployment (english)

Metrics and Alerts

● Real-time

● Monitor key business metrics

● Have a dashboard for app metrics

● Alert on abnormalities not

thresholds

Page 42: Continuous Deployment (english)

Business metrics

Page 43: Continuous Deployment (english)

Application Metrics

Page 44: Continuous Deployment (english)

Abnormalities, not thresholds

Page 45: Continuous Deployment (english)

The good to haves

● Fast tests and fast deploys

● Configuration automation

● Fast developer onboarding

● Uniform migration strategy

Page 46: Continuous Deployment (english)

Fast tests and fast deploys

Page 47: Continuous Deployment (english)

Configuration automation

Page 48: Continuous Deployment (english)

Fast developer onboarding

Page 49: Continuous Deployment (english)

Uniform migration strategy

Page 50: Continuous Deployment (english)

"Continuous" is a game-changer. How does it change the game for

other people in the company?

Page 51: Continuous Deployment (english)

How Assembla did it

Page 52: Continuous Deployment (english)

Release Count Evolution

Page 53: Continuous Deployment (english)

Release Count Evolution

Frustration

Page 54: Continuous Deployment (english)

Release Count Evolution

Page 55: Continuous Deployment (english)

Release Count Evolution

Page 56: Continuous Deployment (english)

Release Count Evolution

LOL Vacation

Page 57: Continuous Deployment (english)

Release Count Evolution

Page 58: Continuous Deployment (english)

Common issues

● Wait, but how do I deploy schema

changes without downtime?

● I need manual testing in my

workflow...

● Does not scale.

Page 59: Continuous Deployment (english)