continuous deployment at kitchensurfing

Post on 15-Jan-2015

2.953 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Continuous Deployment is gaining popularity with companies like Facebook and Etsy, but its successful implementation creates technical challenges and will require any team to make workflow changes. Learn how Kitchensurfing switched to continuous deployments and how they’ve grown from one deploy a week to 10+ deploys a day with zero downtime and zero worries, thanks to MongoDB. Hear about our workflow, the tools we use, and how we manage communication with product owners to make sure everyone is always in the loop.

TRANSCRIPT

CONTINUOUSDEPLOYMENT

Lars Kluge, CTO and Co-founder of Kitchensurfing

KITCHENSURFING

WHO IS FAMILIAR WITH …?

DEFINITION

Continuous Deployment is the automatedprocess of shipping your product to

production, with every push to master.

MOTIVATION?Earlier feedback for your business: get features in front ofusers as early as possibleFaster development: develop, push, next featureLower the risk of deploymentsMotivation for everyone involved: changes can be doneimmediately--no wait for the next scheduled release

WHO IS USING IT?Facebook, Etsy, Quora, Linkedin, …

IS IT PRACTICAL FOR SMALLER STARTUPS?

YES.We use it and love it at Kitchensurfing.

OUR STACKRuby on Rails, MongoDB, Heroku, …

OUR WORKFLOW

1. Pick up a ticket in Pivotal Tracker2. Code3. Commit with reference to ticket id4. Pull Request on Github5. Code Review6. Multiple Staging Environments if manual check necessary7. CI: Codeship runs test suite for pull request8. Merge into master9. Github notifies Pivotal Tracker that ticket is merged

10. CI runs again11. On successful build, Codeship deploys to Heroku12. Release Notes Email sent by Heroku

OUR LEARNINGS

MONGODB HELPS.

NO SCHEMA.

ETSY

source

WITH MONGODB:While (re)inventing your product,

no* schema migration necessary.

YOUNG PRODUCT = A LOT SCHEMA CHANGES

TRUST YOUR TEST SUITE

RELEASE BIG PRODUCTS IN SMALL PIECES

USE FEATURE FLAGSShow new features only to your beta user group

Avoid the 'big bang' release

OBSERVE PRODUCTION AFTER DEPLOYNot only exception tracking

How are business #s changing?

Cloud behavior

MMS (MongoDB Monitoring Service)

New Relic

BEHAVIOR CHANGEIs your team ready to make the behavior change?The whole team needs to support it.Introduce Continuous Deployment as early as possible; it'sgetting harder down the road.

PRODUCT TEAMHow to break down features into small, easy to release pieces?

What is the order of operation?

COMMUNICATIONKeep your team in the loopRelease Notes EmailWhat is online, what's not?Ticket finished, does it mean it's online?

RUNTIME OF TEST SUITE> 15 Min. trickyContext Switch is expensive for Engineers

HEROKU PREBOOT$ heroku labs:enable -a myapp preboot

OUR FUTURE PLANSBetter Release Notes Email based on finished stories inTrackerStatistics in Pull Request to understand the change basedon compiled JS, CSS size, test suite build time, # of databasequeries, etc.Engineering Dashboard: See how a deploy changes business#s

THANK YOU.larskluge.com

@aekym

top related