Upload
titas-norkunas
View
109
Download
0
Tags:
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
Continuous DeploymentTitas Norkūnas / @varsketiz
Assembla the Product
~ 350.000 Projects tracked
~ 350.000 Repositories hosted
~ 850.000 Users registered
~ 5.000.000 Tasks created
Assembla the Team
● 40 People (20 Developers)
● 20 Countries
● 15 Different Timezones
● 163 Prod Deploys in April
Assembla the Team
Assembla the Team
Me
Colleague I work with the most
Have you heard about Continuous Deployment before?
How often do you deploy?
This is about
● The Why
● Common concerns
● The How
● Good to haves and common issues
● How we did it
Why bother?
Agile manifesto:
"Our highest priority is to satisfy the
customer through early and
continuous delivery of valuable software."
Why bother?
Agile manifesto:
"Working software is the primary
measure of progress."
Why bother?
Agile manifesto:
"Simplicity – the art of maximizing the
amount of work not done – is
essential."
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."
Why bother?
Your favorite tech company does it:
● Github
● Amazon
● Heroku
● Etsy
● ... <endless list> ...
Why bother?
Your favorite tech company does it:
● Github
● Amazon - Prod Deploy every 11s!● Heroku
● Etsy
● ... <endless list> ...
Benefits
● Deliver value ASAP
● Advance every day
● Always be informed
● Have a fast feedback cycle
● Create a top-notch environment
Concerns
● But isn't that dangerous?
● That will cost much more!
● It will reduce quality!
● That's just cowboy-coding!
But isn't that dangerous? - No.
● Less changes in every release
● Minimal issue fix and deploy time
● Deploys are standard
That will cost much more! - No.
● Automated deploys - one time fee
● Cheap a/b testing
● Always ASAP code delivery
It will reduce quality! - No.
● Hide features that are
not ready
● Never rush to "make it"
● Keep all current testing
practices
That's just cowboy-coding! - No.
● Standardize configuration
● Standardize migrations
● Standardize all environments
The How
● "Continuous" team mentality
● Proper Continuous Integration
● Deployment Automation
● Metrics and Alerts
There is only one rule to Continuous Deployment - keep
your Mainline deployable.
Define deployable
Automated tests pass
Automated tests pass, code reviewed and tested by peer or
QA
Automated tests pass, code reviewed and tested by peer or QA, code tested on production
by a subset of users
Mainline stability
● Don't break the trust to save 5
minutes
● Don't assume you know everything
● Don't block others
Continuous Integration
Branch →
Mainline →
Continuous Integration
2?1
Mainline →
Branch →
Continuous Integration
Mainline →
1 ?
4
Branch →
3
Mainline →
Branch →
Backmerge from Mainline to branch for integrate and build. Premature integration is evil
Deployment Automation
● Easy - with a click of a button
● Risk-free - be able to rollback
● Consistent - no surprises
● Traceable - who, when what
Easy - with a click of a button
Risk-free - be able to rollback
Consistent - no surprises
Traceable - who, when, what?
Metrics and Alerts
● Real-time
● Monitor key business metrics
● Have a dashboard for app metrics
● Alert on abnormalities not
thresholds
Business metrics
Application Metrics
Abnormalities, not thresholds
The good to haves
● Fast tests and fast deploys
● Configuration automation
● Fast developer onboarding
● Uniform migration strategy
Fast tests and fast deploys
Configuration automation
Fast developer onboarding
Uniform migration strategy
"Continuous" is a game-changer. How does it change the game for
other people in the company?
How Assembla did it
Release Count Evolution
Release Count Evolution
Frustration
Release Count Evolution
Release Count Evolution
Release Count Evolution
LOL Vacation
Release Count Evolution
Common issues
● Wait, but how do I deploy schema
changes without downtime?
● I need manual testing in my
workflow...
● Does not scale.