SlideShare a Scribd company logo
Strategies In Continuous Delivery
Learn the “magic” behind the scenes
Aviran Mordo
Server Group Manager @ Wix
@aviranm
http://www.linkedin.com/in/aviran
21:34
About Wix
21:34
Wix in Numbers
• Over 35,000,000 users
– Adding over 1,000,000 new users each month
• Static storage is over 150TB of data
– Adding over 1TB of files every day
• 3 Data centers + 2 Clouds (Google AE, Amazon)
– Around 300 servers
• Over 40,000,000 Server API calls per day
• ~400 people work at wix
– Over 100 people in R&D
21:34
Is Doing Multiple
Deployments A Day Takes
Guts ?
21:34
21:34
From Jan’ 2013 – Jun’ 2013
• 1500
• 470
• 200
21:34
From Jan’ 2013 – Jun’2013
• 1500 Deployments
• 470 A/B Tests
• 200 Feature Toggles
Continuous Delivery at Wix
• Abandon “VERSION” paradigm – move feature
centric life
• Make small and frequent release as soon as
possible
• Automate everything – TDD/CI/CD
• Measure Everything
–A/B test every new feature
–Monitor real KPIs (business, not CPU)
21:34
Continuous Delivery at Wix
• Empower the developer
–The developer is responsible from product idea to 1M
active users
–Remove every obstacle in the developer’s path
–Big cultural change from waterfall – affects the whole
company
21:34
Test Driven Development
• No new code is pushed to Git without being fully tested
• Before fixing a bug first write a test to reproduce the bug
• Cover legacy (untested) systems with Integration tests
21:34
Test Driven Development
• What people think is the impact on development
–TDD slows down development
–With TDD we write more code (product + test code).
• Current Test Count (U-Tests + IT-Tests) – over
10,000
21:34
Test Driven Development
• Actual impact on development
–We develop products faster
–Removes fear of change
–Easier to enter some one else’s project
–Do we really need QA? (Yes, they code tests)
–Writing a feature is 10-30% slower, 45-90% less bugs
–50% faster to reach production.
–Considerably faster time to fix bugs
21:34
Guidelines for successful TDD
• Tests should run on project checkout to a random
computer.
• Tests that cannot be debugged on a developer
machine will never consistently run for any period
of time
• Tests should run fast
• Tests have to be readable – They are the project’s
specs
21:34
Feature Toggles
21:34
Feature Toggles
• Everyone develops on the Trunk
• Every piece of code can get to production at
anytime
21:34
Feature Toggle to the rescue
• Unused new code can go to production – no harm done
• Operational new code goes with a guard – use new or old code by
feature toggle
21:34
Usage example
Simple “if” statement in your code
21:34
Feature Toggle Strategies (gradual expose users)
• Company employees
• Specific users or group of users
• Percentage of traffic
• By GEO
• By Language
• By user-agent
• User Profile based
• By context (site id or some kind of hash on site id)
21:34
Feature Toggle Override
• By specific server
– Used to test system load
– New database flows/migration
– Refactoring that may affect performance and memory usage
• By Url parameter
– Enable internal testing
– Product acceptance
– Faking GEO
• By FT cookie value
– Testing
– When working with API on a single page application
21:34
Feature Toggles Management
21:34
A/B Tests
21:34
A/B Test
• Every new feature is A/B tested
• We open the new feature to a % of users
– Define KPIs to check if the new feature is
better or worse
– If it is better, we keep it
– If worse, we check why and improve
– If we find flaws, the impact is just for % of our
users (kind of Feature Toggle)
21:34
An interesting site effect on product
• How many times did you have the conversion
“what is better”?
– Put the menu on top / on the side
• Well, how about building both and A/B Testing?
21:34
Marking users with toss value in a cookie
• Anonymous user
– Toss is randomly determined
– Can not guarantee persistent experience if changing browser
• Registered User
– Toss is determined by the user ID
– Guarantee toss persistency across browsers
– Allows setting additional tossing criteria (for example new users only)
– Only use this for sections that a user has to be authenticated
21:34
• Do not mix anonymous and registered tests
• AB test parentage of users with optional filters
– New Users Only (Registered users only)
– By language
– By GEO
– By Browser
– user-agent
– OS
– Any other criteria you have on your users
21:34
A/B Test Features
• A/B Test Override
– Allows setting a value of a test for validation
– Helps support experience what users experiencing
• Override methods
– Via URL parameter
– Via cookie
• Start/Stop Test
• Pause tests
• Bots always get “A”21:34
Manage your tests
21:34
Refactoring
21:34
Refactoring
• Before refactoring make sure everything is covered with
tests
– Legacy code usually covered by IT tests
• Refactor from inside out
– Small iterations with tests
– Refactor small methods - make sure the tests don’t break
– Deploy often
• Re-write from the outside in
– Write from scratch
– Code duplication sometimes needed (temporary)
– Protected by Feature Toggle21:34
Code branch
21:34
New Code Old Code
FT
Opene
d
Yes No
DB Schema Changes Without
Downtime
• Adding columns
– Use another table link by primary key
– Use blob field for schema flexibility
• Removing fields
– Stop using. Do not do any DB schema
changes
21:34
New DB schema
• Plan a lazy migration path controlled by feature toggle
1. Write to old / Read from old
2. Write to both / Read from old
3. Write to both / Read from new, fallback to old
4. Write to new / Read from new, fallback to old
5. Eagerly migrate data in the background
6. Write to new / Read from new
21:34
Gradual Deployment
21:34
• Assume two components
• We shutdown one and install on it the
new version. It is not active yet
• Do self test
• Activate the new server it is passes self test
• Continue deploying the other servers,
a few at a time, checking each one with
self test
A 1.1 B 1.1
A 1.1
B 1.2
A 1.1A 1.1 B 1.1B 1.1
A 1.1A 1.1
B 1.1
B 1.2
A 1.1
B 1.2
A 1.1A 1.1
B 1.1
B 1.2
A 1.1 B 1.1A 1.1A 1.1 B 1.1B 1.2
Self Test / Post Deployment Test
After each server deployment run a self test before deploying the
next server.
• Checking server configuration and topology
– Make sure database is accessible (DB connection string)
– Is the schema the one I expect
– Access required local resources (data files, other config files, templates,
etc’)
– Access remote resources
– RPC / REST endpoints reachable and operational
• Server will refuse requests unless it passes the self test
• Allow a way to skip self test (and continue deployment)21:34
Tools - App-info
21:34
Backward and Forward compatible
• Assume two components
• We release a new version of one
• Now Rollback the other…
21:34
A 1.1
B 1.2
A 1.2
B 1.1A 1.1A 1.1
B 1.1
B 1.2
A 1.2A 1.1
B 1.1B 1.1
A 1.1 B 1.1A 1.1A 1.1 B 1.1B 1.1
A 1.0
A 1.2A 1.1 B 1.2B 1.1
B 1.2 A 1.2
A 1.2A 1.1 B 1.2B 1.1
B 1.0
Production Visibility
21:34
Prepare for a rainy day
How does it work – CD Practices
• Test driven development
• Small Development Iterations
• Backwards and Forwards compatible
• Gradual Deployment & Self-Test
• Feature Toggle
• A/B Testing
• Exception Classification
• Production visibility
21:34
Where are we today?
• We have re-written our flash editor product as an
HTML 5 editor
– In just 4 months
• Introduced Wix 3rd party applications (developers API)
– In just 6 weeks
• We are easily replacing significant parts of our
infrastructure
• And we are doing ~10 releases a day!
21:34
0
5
10
15
20
25
30
35
1/1/2013
1/4/2013
1/8/2013
1/11/2013
1/15/2013
1/18/2013
1/22/2013
1/27/2013
1/30/2013
2/3/2013
2/6/2013
2/10/2013
2/13/2013
2/18/2013
2/21/2013
2/25/2013
2/28/2013
3/4/2013
3/7/2013
3/12/2013
3/15/2013
3/19/2013
3/24/2013
4/3/2013
4/7/2013
4/10/2013
4/15/2013
4/19/2013
4/23/2013
4/28/2013
5/1/2013
5/6/2013
5/9/2013
5/13/2013
5/19/2013
5/22/2013
5/26/2013
5/29/2013
6/1/2013
6/4/2013
6/7/2013
6/11/2013
6/16/2013
(blank)
Total
Total
21:34
21:34
Aviran Mordo
@aviranm
http://www.linkedin.com/in/aviran
Read more: The Road To Continuous Delivery:
http://goo.gl/K6zEK
http://www.slideshare.net/aviranwix/strategies-in-continuous-delivery

More Related Content

What's hot (20)

PPTX
Scaling Wix engineering
Aviran Mordo
 
PPTX
Database Deployment Pipeline - SQL In The City Workshop 2014
Red Gate Software
 
PDF
Simplify Salesforce Testing with AI-Driven Codeless Tools
Sauce Labs
 
PPTX
Continuous everything
TEST Huddle
 
PPTX
Agile Testing in Enterprise: Way to transform - SQA Days 2014
Andrey Rebrov
 
PPTX
#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?
Vincent Biret
 
PDF
TestCorner #22 - How DevOps helps QA daily works​
HTC
 
PDF
STARWest: Use Jenkins For Continuous 
Load Testing And Mobile Test Automation
Clever Moe
 
PPTX
Visual Studio LightSwitch (Beta 1) Overview
Steve Lange
 
PDF
DevOps: Find Solutions, Not More Defects
TechWell
 
PPTX
Test Automation Canvas
Andrey Rebrov
 
PDF
Continuous Integration, Deploy, Test From Beginning To End 2014
Clever Moe
 
PPTX
Avoiding test hell
Yun Ki Lee
 
PDF
CloudBees Continuous Integration and Test with Appvance PerformanceCloud
Clever Moe
 
PDF
Running JMeter Tests In Appvance PerformanceCloud
Clever Moe
 
PDF
Putting Quality First through Continuous Testing
TechWell
 
PPTX
Accelerating Your Test Execution Pipeline
SmartBear
 
PPTX
StarWest 2013 Performance is not an afterthought – make it a part of your Agi...
Andreas Grabner
 
PPTX
JavaOne - Performance Focused DevOps to Improve Cont Delivery
Andreas Grabner
 
PDF
Hacker News Meetup April 2014
Dan Quine
 
Scaling Wix engineering
Aviran Mordo
 
Database Deployment Pipeline - SQL In The City Workshop 2014
Red Gate Software
 
Simplify Salesforce Testing with AI-Driven Codeless Tools
Sauce Labs
 
Continuous everything
TEST Huddle
 
Agile Testing in Enterprise: Way to transform - SQA Days 2014
Andrey Rebrov
 
#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?
Vincent Biret
 
TestCorner #22 - How DevOps helps QA daily works​
HTC
 
STARWest: Use Jenkins For Continuous 
Load Testing And Mobile Test Automation
Clever Moe
 
Visual Studio LightSwitch (Beta 1) Overview
Steve Lange
 
DevOps: Find Solutions, Not More Defects
TechWell
 
Test Automation Canvas
Andrey Rebrov
 
Continuous Integration, Deploy, Test From Beginning To End 2014
Clever Moe
 
Avoiding test hell
Yun Ki Lee
 
CloudBees Continuous Integration and Test with Appvance PerformanceCloud
Clever Moe
 
Running JMeter Tests In Appvance PerformanceCloud
Clever Moe
 
Putting Quality First through Continuous Testing
TechWell
 
Accelerating Your Test Execution Pipeline
SmartBear
 
StarWest 2013 Performance is not an afterthought – make it a part of your Agi...
Andreas Grabner
 
JavaOne - Performance Focused DevOps to Improve Cont Delivery
Andreas Grabner
 
Hacker News Meetup April 2014
Dan Quine
 

Viewers also liked (20)

PPTX
Scaling wix with microservices and multi cloud - 2015
Aviran Mordo
 
PPTX
Scaling up to 30M users - The Wix Story
Aviran Mordo
 
PPTX
Mircoservices, dev ops and Engineering best practices at Wix.com
Aviran Mordo
 
PPTX
Entregas Contínuas com feature toggles
solon_aguiar
 
PDF
Who will test your tests?
Yahya Poonawala
 
PPTX
Pull requests and testers can be friends
Alan Parkinson
 
PDF
Continuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.io
Mike Fotinakis
 
PDF
Overcoming the fear of deployments
Andrei Tognolo
 
PDF
Continuous Integration, Delivery and Deployment
Eero Laukkanen
 
PDF
Refactoring for Software Design Smells - Tech Talk
Ganesh Samarthyam
 
PPTX
Why we used Feature Branching
Alan Parkinson
 
PPTX
Requirement and Test for Continuous Delivery - Customer in focus at Scania Co...
Jonatan Mossberg
 
PDF
Trunk Based Development (CBSoft 2011)
Wildtech
 
PDF
Feature Toggle Examples
Wildtech
 
PDF
Feature Flags Are Flawed: Let's Make Them Better
Stephen Young
 
PDF
Feature flags to speed up & de risk development
LaunchDarkly
 
PPTX
Feature Flagging to Reduce Risk in Database Migrations
LaunchDarkly
 
PPTX
Feature Toggles
Devi Sridharan
 
PDF
Test Automation
nikos batsios
 
PPTX
Feature Toggle XP Conference 2016 Kalpana Gulati
XP Conference India
 
Scaling wix with microservices and multi cloud - 2015
Aviran Mordo
 
Scaling up to 30M users - The Wix Story
Aviran Mordo
 
Mircoservices, dev ops and Engineering best practices at Wix.com
Aviran Mordo
 
Entregas Contínuas com feature toggles
solon_aguiar
 
Who will test your tests?
Yahya Poonawala
 
Pull requests and testers can be friends
Alan Parkinson
 
Continuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.io
Mike Fotinakis
 
Overcoming the fear of deployments
Andrei Tognolo
 
Continuous Integration, Delivery and Deployment
Eero Laukkanen
 
Refactoring for Software Design Smells - Tech Talk
Ganesh Samarthyam
 
Why we used Feature Branching
Alan Parkinson
 
Requirement and Test for Continuous Delivery - Customer in focus at Scania Co...
Jonatan Mossberg
 
Trunk Based Development (CBSoft 2011)
Wildtech
 
Feature Toggle Examples
Wildtech
 
Feature Flags Are Flawed: Let's Make Them Better
Stephen Young
 
Feature flags to speed up & de risk development
LaunchDarkly
 
Feature Flagging to Reduce Risk in Database Migrations
LaunchDarkly
 
Feature Toggles
Devi Sridharan
 
Test Automation
nikos batsios
 
Feature Toggle XP Conference 2016 Kalpana Gulati
XP Conference India
 
Ad

Similar to Strategies in continuous delivery (20)

PDF
SQL Server DevOps Jumpstart
Ori Donner
 
PPTX
Deploying at will - SEI
Strongstep - Innovation in software quality
 
PPTX
Dev/Test scenarios in DevOps world
Davide Benvegnù
 
PDF
Architecture for the cloud deployment case study future
Len Bass
 
PPTX
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro - Database DevOps
 
PDF
Continuous Deployment of your Application @JUGtoberfest
Marcin Grzejszczak
 
PPT
Understand release engineering
gaoliang641
 
PDF
Architecting for the cloud storage build test
Len Bass
 
PDF
The Evolution of Continuous Delivery at Scale @ Linkedin
C4Media
 
PPTX
Evolutionary database design
Salehein Syed
 
PPTX
Webinar: "DBMaestro: Database Enforced Change Management (DECM) tool"
Emerasoft, solutions to collaborate
 
PDF
Continuous Deployment of your Application @SpringOne
ciberkleid
 
PPTX
Continuous Integration for Salesforce1 Platform
Techsophy Inc.
 
PPTX
Introduction to GOCD - Amulya Sharma
Amulya Sharma
 
PPTX
Extreme Makeover OnBase Edition
DataBank, A KYOCERA Group Company
 
PPTX
In (database) automation we trust
DBmaestro - Database DevOps
 
PDF
Continuous Delivery: releasing Better and Faster at Dashlane
Dashlane
 
PPTX
Why retail companies can't afford database downtime
DBmaestro - Database DevOps
 
PPTX
Always On - Zero Downtime releases
Anders Lundsgård
 
PPTX
The Challenges & Pitfalls of Database Continuous Delivery
Perforce
 
SQL Server DevOps Jumpstart
Ori Donner
 
Dev/Test scenarios in DevOps world
Davide Benvegnù
 
Architecture for the cloud deployment case study future
Len Bass
 
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro - Database DevOps
 
Continuous Deployment of your Application @JUGtoberfest
Marcin Grzejszczak
 
Understand release engineering
gaoliang641
 
Architecting for the cloud storage build test
Len Bass
 
The Evolution of Continuous Delivery at Scale @ Linkedin
C4Media
 
Evolutionary database design
Salehein Syed
 
Webinar: "DBMaestro: Database Enforced Change Management (DECM) tool"
Emerasoft, solutions to collaborate
 
Continuous Deployment of your Application @SpringOne
ciberkleid
 
Continuous Integration for Salesforce1 Platform
Techsophy Inc.
 
Introduction to GOCD - Amulya Sharma
Amulya Sharma
 
Extreme Makeover OnBase Edition
DataBank, A KYOCERA Group Company
 
In (database) automation we trust
DBmaestro - Database DevOps
 
Continuous Delivery: releasing Better and Faster at Dashlane
Dashlane
 
Why retail companies can't afford database downtime
DBmaestro - Database DevOps
 
Always On - Zero Downtime releases
Anders Lundsgård
 
The Challenges & Pitfalls of Database Continuous Delivery
Perforce
 
Ad

More from Aviran Mordo (11)

PDF
Platform as a Runtime - PaaR QCON 2024 - Final
Aviran Mordo
 
PPTX
Scaling Engineering by Hacking Conway’s Law - Geecon,2022
Aviran Mordo
 
PDF
Arrested by the cap devoxx uk 2018
Aviran Mordo
 
PPTX
Scaling wix.com to 100 million users
Aviran Mordo
 
PPTX
Advanced A/B Testing - Jax London 2015
Aviran Mordo
 
PPTX
Scaling wix with microservices architecture jax london-2015
Aviran Mordo
 
PPTX
Scaling wix with microservices architecture devoxx London 2015
Aviran Mordo
 
PPTX
Wix.com Back-end Engineering Guild Manifesto
Aviran Mordo
 
PPTX
Scaling Wix with microservices architecture and multi-cloud platforms - Reve...
Aviran Mordo
 
PPTX
Wix Architecture at Scale - QCon London 2014
Aviran Mordo
 
PPTX
Introduction to HTTP protocol
Aviran Mordo
 
Platform as a Runtime - PaaR QCON 2024 - Final
Aviran Mordo
 
Scaling Engineering by Hacking Conway’s Law - Geecon,2022
Aviran Mordo
 
Arrested by the cap devoxx uk 2018
Aviran Mordo
 
Scaling wix.com to 100 million users
Aviran Mordo
 
Advanced A/B Testing - Jax London 2015
Aviran Mordo
 
Scaling wix with microservices architecture jax london-2015
Aviran Mordo
 
Scaling wix with microservices architecture devoxx London 2015
Aviran Mordo
 
Wix.com Back-end Engineering Guild Manifesto
Aviran Mordo
 
Scaling Wix with microservices architecture and multi-cloud platforms - Reve...
Aviran Mordo
 
Wix Architecture at Scale - QCon London 2014
Aviran Mordo
 
Introduction to HTTP protocol
Aviran Mordo
 

Recently uploaded (20)

PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PDF
Biography of Daniel Podor.pdf
Daniel Podor
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
July Patch Tuesday
Ivanti
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
Biography of Daniel Podor.pdf
Daniel Podor
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
July Patch Tuesday
Ivanti
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 

Strategies in continuous delivery

  • 1. Strategies In Continuous Delivery Learn the “magic” behind the scenes Aviran Mordo Server Group Manager @ Wix @aviranm http://www.linkedin.com/in/aviran 21:34
  • 3. Wix in Numbers • Over 35,000,000 users – Adding over 1,000,000 new users each month • Static storage is over 150TB of data – Adding over 1TB of files every day • 3 Data centers + 2 Clouds (Google AE, Amazon) – Around 300 servers • Over 40,000,000 Server API calls per day • ~400 people work at wix – Over 100 people in R&D 21:34
  • 4. Is Doing Multiple Deployments A Day Takes Guts ? 21:34
  • 5. 21:34 From Jan’ 2013 – Jun’ 2013 • 1500 • 470 • 200
  • 6. 21:34 From Jan’ 2013 – Jun’2013 • 1500 Deployments • 470 A/B Tests • 200 Feature Toggles
  • 7. Continuous Delivery at Wix • Abandon “VERSION” paradigm – move feature centric life • Make small and frequent release as soon as possible • Automate everything – TDD/CI/CD • Measure Everything –A/B test every new feature –Monitor real KPIs (business, not CPU) 21:34
  • 8. Continuous Delivery at Wix • Empower the developer –The developer is responsible from product idea to 1M active users –Remove every obstacle in the developer’s path –Big cultural change from waterfall – affects the whole company 21:34
  • 9. Test Driven Development • No new code is pushed to Git without being fully tested • Before fixing a bug first write a test to reproduce the bug • Cover legacy (untested) systems with Integration tests 21:34
  • 10. Test Driven Development • What people think is the impact on development –TDD slows down development –With TDD we write more code (product + test code). • Current Test Count (U-Tests + IT-Tests) – over 10,000 21:34
  • 11. Test Driven Development • Actual impact on development –We develop products faster –Removes fear of change –Easier to enter some one else’s project –Do we really need QA? (Yes, they code tests) –Writing a feature is 10-30% slower, 45-90% less bugs –50% faster to reach production. –Considerably faster time to fix bugs 21:34
  • 12. Guidelines for successful TDD • Tests should run on project checkout to a random computer. • Tests that cannot be debugged on a developer machine will never consistently run for any period of time • Tests should run fast • Tests have to be readable – They are the project’s specs 21:34
  • 14. Feature Toggles • Everyone develops on the Trunk • Every piece of code can get to production at anytime 21:34
  • 15. Feature Toggle to the rescue • Unused new code can go to production – no harm done • Operational new code goes with a guard – use new or old code by feature toggle 21:34
  • 16. Usage example Simple “if” statement in your code 21:34
  • 17. Feature Toggle Strategies (gradual expose users) • Company employees • Specific users or group of users • Percentage of traffic • By GEO • By Language • By user-agent • User Profile based • By context (site id or some kind of hash on site id) 21:34
  • 18. Feature Toggle Override • By specific server – Used to test system load – New database flows/migration – Refactoring that may affect performance and memory usage • By Url parameter – Enable internal testing – Product acceptance – Faking GEO • By FT cookie value – Testing – When working with API on a single page application 21:34
  • 21. A/B Test • Every new feature is A/B tested • We open the new feature to a % of users – Define KPIs to check if the new feature is better or worse – If it is better, we keep it – If worse, we check why and improve – If we find flaws, the impact is just for % of our users (kind of Feature Toggle) 21:34
  • 22. An interesting site effect on product • How many times did you have the conversion “what is better”? – Put the menu on top / on the side • Well, how about building both and A/B Testing? 21:34
  • 23. Marking users with toss value in a cookie • Anonymous user – Toss is randomly determined – Can not guarantee persistent experience if changing browser • Registered User – Toss is determined by the user ID – Guarantee toss persistency across browsers – Allows setting additional tossing criteria (for example new users only) – Only use this for sections that a user has to be authenticated 21:34
  • 24. • Do not mix anonymous and registered tests • AB test parentage of users with optional filters – New Users Only (Registered users only) – By language – By GEO – By Browser – user-agent – OS – Any other criteria you have on your users 21:34
  • 25. A/B Test Features • A/B Test Override – Allows setting a value of a test for validation – Helps support experience what users experiencing • Override methods – Via URL parameter – Via cookie • Start/Stop Test • Pause tests • Bots always get “A”21:34
  • 28. Refactoring • Before refactoring make sure everything is covered with tests – Legacy code usually covered by IT tests • Refactor from inside out – Small iterations with tests – Refactor small methods - make sure the tests don’t break – Deploy often • Re-write from the outside in – Write from scratch – Code duplication sometimes needed (temporary) – Protected by Feature Toggle21:34
  • 29. Code branch 21:34 New Code Old Code FT Opene d Yes No
  • 30. DB Schema Changes Without Downtime • Adding columns – Use another table link by primary key – Use blob field for schema flexibility • Removing fields – Stop using. Do not do any DB schema changes 21:34
  • 31. New DB schema • Plan a lazy migration path controlled by feature toggle 1. Write to old / Read from old 2. Write to both / Read from old 3. Write to both / Read from new, fallback to old 4. Write to new / Read from new, fallback to old 5. Eagerly migrate data in the background 6. Write to new / Read from new 21:34
  • 32. Gradual Deployment 21:34 • Assume two components • We shutdown one and install on it the new version. It is not active yet • Do self test • Activate the new server it is passes self test • Continue deploying the other servers, a few at a time, checking each one with self test A 1.1 B 1.1 A 1.1 B 1.2 A 1.1A 1.1 B 1.1B 1.1 A 1.1A 1.1 B 1.1 B 1.2 A 1.1 B 1.2 A 1.1A 1.1 B 1.1 B 1.2 A 1.1 B 1.1A 1.1A 1.1 B 1.1B 1.2
  • 33. Self Test / Post Deployment Test After each server deployment run a self test before deploying the next server. • Checking server configuration and topology – Make sure database is accessible (DB connection string) – Is the schema the one I expect – Access required local resources (data files, other config files, templates, etc’) – Access remote resources – RPC / REST endpoints reachable and operational • Server will refuse requests unless it passes the self test • Allow a way to skip self test (and continue deployment)21:34
  • 35. Backward and Forward compatible • Assume two components • We release a new version of one • Now Rollback the other… 21:34 A 1.1 B 1.2 A 1.2 B 1.1A 1.1A 1.1 B 1.1 B 1.2 A 1.2A 1.1 B 1.1B 1.1 A 1.1 B 1.1A 1.1A 1.1 B 1.1B 1.1 A 1.0 A 1.2A 1.1 B 1.2B 1.1 B 1.2 A 1.2 A 1.2A 1.1 B 1.2B 1.1 B 1.0
  • 37. How does it work – CD Practices • Test driven development • Small Development Iterations • Backwards and Forwards compatible • Gradual Deployment & Self-Test • Feature Toggle • A/B Testing • Exception Classification • Production visibility 21:34
  • 38. Where are we today? • We have re-written our flash editor product as an HTML 5 editor – In just 4 months • Introduced Wix 3rd party applications (developers API) – In just 6 weeks • We are easily replacing significant parts of our infrastructure • And we are doing ~10 releases a day! 21:34 0 5 10 15 20 25 30 35 1/1/2013 1/4/2013 1/8/2013 1/11/2013 1/15/2013 1/18/2013 1/22/2013 1/27/2013 1/30/2013 2/3/2013 2/6/2013 2/10/2013 2/13/2013 2/18/2013 2/21/2013 2/25/2013 2/28/2013 3/4/2013 3/7/2013 3/12/2013 3/15/2013 3/19/2013 3/24/2013 4/3/2013 4/7/2013 4/10/2013 4/15/2013 4/19/2013 4/23/2013 4/28/2013 5/1/2013 5/6/2013 5/9/2013 5/13/2013 5/19/2013 5/22/2013 5/26/2013 5/29/2013 6/1/2013 6/4/2013 6/7/2013 6/11/2013 6/16/2013 (blank) Total Total
  • 39. 21:34
  • 40. 21:34 Aviran Mordo @aviranm http://www.linkedin.com/in/aviran Read more: The Road To Continuous Delivery: http://goo.gl/K6zEK http://www.slideshare.net/aviranwix/strategies-in-continuous-delivery

Editor's Notes

  • #2: Today I’m going to tell you some of the strategies we use that allow us to deploy 10 times a day
  • #8: Management role is to help developer do its work
  • #9: Management role is to help developer do its work
  • #14: One of the key components to successful CD
  • #19: Full load on a single serverOverride size limitation by setting a cookie on the client
  • #22: Link to purchase on the editor was causing drop in conversion because users went there too soon without intent
  • #23: Link to purchase on the editor was causing drop in conversion because users went there too soon without intent