• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Releasing To Production Every Week
 

Releasing To Production Every Week

on

  • 3,757 views

Presented at DevTeach Vancouver 2009

Presented at DevTeach Vancouver 2009

Statistics

Views

Total Views
3,757
Views on SlideShare
2,850
Embed Views
907

Actions

Likes
0
Downloads
27
Comments
0

3 Embeds 907

http://exortech.com 897
http://www.slideshare.net 7
http://theoldreader.com 3

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Releasing To Production Every Week Releasing To Production Every Week Presentation Transcript

    • Releasing to Production Every Week
    • 1 year
    • 46 releases
    • 1 rollback
    • summary
    • lessons learned
    • poll:
    • how long is your release cycle?
    • Company
    • real-time energy monitoring
    • building energy efficiency
    • save $
    • save kW
    • save
    • aggregate data
    • hosted solution
    • SaaS
    • Java
    • learn
    • Team
    • • 9 developers
    • • 9 developers • 1 product manager
    • • 9 developers • 1 product manager • 1 graphic designer
    • • 9 developers • 1 product manager • 1 graphic designer • 1 tester*
    • • 9 developers • 1 product manager • 1 graphic designer • 1 tester* * recently added
    • what’s missing?
    • operations?
    • support?
    • QA?
    • project manager?
    • DBA?
    • generalizing specialists
    • fungibility
    • rotating responsibility
    • daily support duty
    • few hand-offs
    • empowered
    • Process
    • Goal: • to surface risk as early as possible to keep problems out of production
    • maximize feedback
    • shrink time
    • Continuous Integration
    • Continuous Integration • 3-4 Commits/dev/day
    • Automated Build
    • Automated Build • 3 minute build
    • Automated Build • 3 minute build • 30-40 builds/day
    • Automated Build • 3 minute build • 30-40 builds/day
    • Automated Test Deploy
    • Automated Test Deploy • 4-5 times per day
    • Automated Test Deploy • 4-5 times per day • Scheduled nightly at 11PM
    • Daily Standup
    • Daily Standup • Weekly company standup
    • Daily Review
    • Daily Review • Quick peer feature review
    • Weekly Demo
    • Weekly Demo • 15 minute company- wide user-driven demo
    • weekly cycle Mon Tues Wed Thurs Fri 9:30AM 10:00AM Release 5pm Planning User-driven Testing Release Meeting Demo
    • “agile”
    • Scrum?
    • XP?
    • what’s missing?
    • user stories?
    • user stories?
    • user stories?
    • story boards?
    • story boards?
    • story boards?
    • estimation?
    • estimation?
    • estimation? fits or it doesn’t
    • pairing?
    • pairing?
    • pairing? as needed
    • pairing? as needed code reviews
    • TDD?
    • TDD?
    • TDD? 30% coverage
    • TDD? 30% coverage + Selenium
    • TDD? 30% coverage + Selenium
    • retrospectives?
    • retrospectives?
    • retrospectives? Release Review
    • retrospectives? Release Review 5 Whys
    • 5 Whys
    • lightweight RCA
    • just-in-time
    • within 24 hours
    • 1 Jira per question
    • Practices
    • Daily support rotation
    • 5 Whys
    • Continuous Monitoring
    • Continuous Monitoring Socket App Server LogMaster Logger WARN | ERROR
    • Continuous Monitoring
    • Continuous Monitoring • Proactive response to issues
    • Continuous Monitoring • Proactive response to issues • Clean logs
    • Continuous Monitoring • Proactive response to issues • Clean logs • Message throttling
    • Continuous Monitoring • Proactive response to issues • Clean logs • Message throttling • Gmail
    • Continuous Monitoring • Proactive response to issues • Clean logs • Message throttling • Gmail • Managing the signal-to-noise ratio
    • Continuous Monitoring
    • Continuous Monitoring
    • Continuous Monitoring
    • Continuous Monitoring App Server web app gmond gmetad UDP multicast RRD
    • Continuous Monitoring
    • Continuous Monitoring
    • Continuous Monitoring
    • Continuous Monitoring
    • Test mirrors Prod
    • Trust Test
    • Zero-downtime Deployment
    • Zero-downtime Deploys Load Balancer App Server App Server App Server Deploy
    • Zero-downtime Deploys
    • Zero-downtime Deploys • Fully automated deployment
    • Zero-downtime Deploys • Fully automated deployment • One button deploy from TeamCity
    • Zero-downtime Deploys • Fully automated deployment • One button deploy from TeamCity • Gracefully bring down servers
    • Zero-downtime Deploys What about the DB?
    • Zero-downtime Deploys Bering
    • Zero-downtime Deploys 001_create_login_table 001_add_inv_constraint 002_add_login_id_index 002_drop_alias_column 003_create_user_table 004_create_group_table Expand Contract
    • Zero-downtime Deploys
    • Zero-downtime Deploys • Database migration decoupled from the release
    • Zero-downtime Deploys • Database migration decoupled from the release • Simplified rollback
    • Zero-downtime Deploys • Database migration decoupled from the release • Simplified rollback • Some additional complexity in writing migrations
    • Incremental Rollout
    • Incremental Rollout
    • Incremental Rollout • New features are released to user subset (by role)
    • Incremental Rollout • New features are released to user subset (by role) • “Release is a marketing term”
    • Incremental Rollout • New features are released to user subset (by role) • “Release is a marketing term” • Production levers
    • Incremental Rollout • New features are released to user subset (by role) • “Release is a marketing term” • Production levers • Selective degredation
    • Production DB Restore
    • Production DB Restore
    • Production DB Restore • Nightly backups
    • Production DB Restore • Nightly backups • Automated Test DB refresh every Monday morning
    • Production DB Restore • Nightly backups • Automated Test DB refresh every Monday morning • Local DB refresh on demand
    • Production DB Restore • Nightly backups • Automated Test DB refresh every Monday morning • Local DB refresh on demand • Cleansed
    • WANGMI
    • WANGMI aka the discipline to defer
    • Single Feature Release
    • • Daily Support Rotation • 5 Whys • Continuous Monitoring • Test mirrors Prod • Zero-downtime deployment • Incremental rollout • Production DB restore • WANGMI - the discipline to defer • Single Feature Release
    • Tools
    • Questions? owen@pulseenergy.com
    • Nov 3, 4, 5 • Martin Fowler • Mary Poppendieck • Eric Evans • Michael Feathers • Michael Nygard
    • Questions? owen@pulseenergy.com
    • • Eric Ries: Continuous Deployment
    • • Daily rotating support duty • Log: 100MB/server/day • 30 KLOC
    • • ThoughtWorks • Working with clients to shorten their release cycle • “Agile” • CruiseControl.NET