SlideShare a Scribd company logo
Experimenting on Humans 
Aviran Mordo 
Head of Back-end Engineering 
@aviranm 
www.linkedin.com/in/aviran 
www.aviransplace.com 
Sagy Rozman 
Back-end Guild master 
@sagyrozman 
www.linkedin.com/in/sagyrozman
Advanced A/B Testing at Wix - Aviran Mordo and Sagy Rozman, Wix.com
Wix In Numbers 
• Over 55M users + 1M new users/month 
• Static storage is >1.5Pb of data 
• 3 data centers + 3 clouds (Google, Amazon, Azure) 
• 1.5B HTTP requests/day 
• 900 people work at Wix, of which ~ 300 in R&D
1542 
(A/B Tests in 3 months)
Agenda 
• Basic A/B testing 
• Experiment driven development 
• PETRI – Wix’s 3rd generation open source experiment 
system 
• Challenges and best practices 
• How to (code samples)
11:31 
A/B Test
A 
B 
To B or NOT to B?
Home page results 
(How many registered)
Experiment Driven 
Development
This is the Wix editor
Our gallery manager 
What can we improve?
Is this better?
Don’t be a loser
Product Experiments 
Toggles & Reporting 
Infrastructure
How do you know what is running?
Why so many? 
If I “know” it is better, do I really 
need to test it?
Advanced A/B Testing at Wix - Aviran Mordo and Sagy Rozman, Wix.com
Sign-up 
The theory 
Choose 
Template 
Edit site 
Publish 
Premium
Result = Fail
Intent matters
Conclusion 
• EVERY new feature is A/B tested 
• We open the new feature to a % of users 
â—‹ Measure success 
â—‹ If it is better, we keep it 
â—‹ If worse, we check why and improve 
• If flawed, the impact is just for % of our users
Start with 50% / 50% ?
Advanced A/B Testing at Wix - Aviran Mordo and Sagy Rozman, Wix.com
Sh*t happens (Test could fail) 
• New code can have bugs 
• Conversion can drop 
• Usage can drop 
• Unexpected cross test dependencies
Minimize affected users 
(in case of failure) 
Gradual exposure (percentage of…) 
• Language 
• GEO 
• Browser 
• User-agent 
• OS 
• Company employees 
• User roles 
• Any other criteria you have 
(extendable) 
• All users
Not all users are equal 
• First time visitors = Never visited wix.com 
• New registered users = Untainted users
We need that 
feature 
…and failure 
is not an 
option
Defensive Testing
Adding a mobile view
First trial failed 
Performance had to be improved
Halting the test results in loss of data. 
What can we do about it?
Solution – Pause the experiment! 
• Maintain NEW experience for already exposed users 
• No additional users will be exposed to the NEW feature
PETRI’s pause implementation 
• Use cookies to persist assignment 
â—‹ If user changes browser assignment is unknown 
• Server side persistence solves this 
â—‹ You pay in performance & scalability
Decision 
Keep feature Drop feature 
Improve code & 
resume experiment 
Keep backwards compatibility for 
exposed users forever? 
Migrate users to another equivalent 
feature 
Drop it all together (users lose data/ 
work)
The road to 
success
Reaching statistical significance 
• Numbers look good but sample size is small 
• We need more data! 
• Expand 
Control Group (A)75% 
50% 
25% 
0% 
Test Group (B) 
25% 
50% 
75% 
100%
Keep user experience consistent 
Control 
Group 
(A) 
Test 
Group 
(B)
Keeping persistent UX 
• Signed-in user (Editor) 
â—‹ Test group assignment is determined by the user ID 
â—‹ Guarantee toss persistency across browsers 
• Anonymous user (Home page) 
â—‹ Test group assignment is randomly determined 
â—‹ Can not guarantee persistent experience if changing 
browser 
• 11% of Wix users use more than one desktop 
browser
There is MORE than one
Possible states >= 2^(# experiments) 
# of active 
experiment 
Possible # of 
states 
10 1024 
20 1,048,576 
30 1,073,741,824 
Wix has ~200 active experiments = 1.606938e+60
A/B testing introduces 
complexity
Support tools 
• Override options (URL parameters, cookies, headers…) 
• Near real time user BI tools 
• Integrated developer tools in the product
Define 
Code 
Expand Experiment 
Merge 
code 
Close
Define spec 
• Spec = Experiment template (in the code) 
â—‹ Define test groups 
â—‹ Mandatory limitations (filters, user types) 
â—‹ Scope = Group of related experiments (usually by product) 
• Why is it needed 
â—‹ Type safety 
â—‹ Preventing human errors (typos, user types) 
â—‹ Controlled by the developer (developer knows about the context) 
â—‹ Conducting experiments in batch
Spec code snippet 
public class ExampleSpecDefinition extends 
SpecDefinition { 
@Override 
protected ExperimentSpecBuilder 
customize(ExperimentSpecBuilder builder) { 
return builder 
.withOwner("OWNERS_EMAIL_ADDRESS") 
.withScopes(aScopeDefinitionForAllUserTypes( 
"SOME_SCOPE")) 
.withTestGroups(asList("Group A", "Group B")); 
} 
}
Conducting experiment 
• Experiment = “If” statement in the code 
final String result = 
laboratory.conductExperiment(key, fallback, new 
StringConverter()); 
if (result.equals("group a")) 
// execute group a's logic 
else if (result.equals("group b")) 
// execute group b's logic 
// in case conducting the experiment failed - 
the fallback value is returned 
// in this case you would usually execute the 
'old' logic
Upload spec 
• Upload the specs to Petri server 
â—‹ Enables to define an experiment instance 
{ 
"creationDate" : "2014-01-09T13:11:26.846Z", 
"updateDate" : "2014-01-09T13:11:26.846Z", 
"scopes" : [ { 
"name" : "html-editor", 
"onlyForLoggedInUsers" : true 
}, { 
"name" : "html-viewer", 
"onlyForLoggedInUsers" : false 
} ], 
"testGroups" : [ "old", "new" ], 
"persistent" : true, 
"key" : "clientExperimentFullFlow1", 
"owner" : "" 
}
Start new experiment (limited population)
Manage experiment states
Ending successful experiment 
1. Convert A/B Test to Feature Toggle (100% ON) 
2. Merge the code 
3. Close the experiment 
4. Remove experiment instance
Experiment lifecycle 
• Define spec 
• Use Petri client to conduct experiment in 
the code (defaults to old) 
• Sync spec 
• Open experiment 
• Manage experiment state 
• End experiment
Petri is more than just an A/B test 
framework 
Feature toggle 
A/B Test 
Internal testing 
Personalization 
Continuous 
deployment 
Jira integration 
Experiments 
Dynamic 
configuration 
QA 
Automated 
testing
Other things we (will) do with Petri 
• Expose features internally to company employees 
• Enable continuous deployment with feature toggles 
• Select assignment by sites (not only by users) 
• Automatic selection of winning group* 
• Exposing feature to #n of users* 
• Integration with Jira 
* Planned feature
Petri is now an open source project 
https://github.com/wix/petri
Q&A 
http://goo.gl/L7pHnd 
https://github.com/wix/petri 
Aviran Mordo 
Head of Back-end Engineering 
@aviranm 
www.linkedin.com/in/aviran 
www.aviransplace.com 
Sagy Rozman 
Back-end Guild master 
@sagyrozman 
www.linkedin.com/in/sagyrozman
Credits 
http://upload.wikimedia.org/wikipedia/commons/b/b2/Fiber_optics_testing.jpg 
http://goo.gl/nEiepT 
https://www.flickr.com/photos/ilo_oli/2421536836 
https://www.flickr.com/photos/dexxus/5791228117 
http://goo.gl/SdeJ0o 
https://www.flickr.com/photos/112923805@N05/15005456062 
https://www.flickr.com/photos/wiertz/8537791164 
https://www.flickr.com/photos/laenulfean/5943132296 
https://www.flickr.com/photos/torek/3470257377 
https://www.flickr.com/photos/i5design/5393934753 
https://www.flickr.com/photos/argonavigo/5320119828
Why Petri 
• Modeled experiment lifecycle 
• Open source (developed using TDD from day 1) 
• Running at scale on production 
• No deployment necessary 
• Both back-end and front-end experiment 
• Flexible architecture
PERTI Server 
Your app 
Laboratory 
DB 
Logs

More Related Content

PPTX
OOP 2016 - Building Software That Eats The World
PDF
Continuous Deployment: The Dirty Details
PPTX
Web and App Performance: Top Problems to avoid to keep you out of the News
PDF
Load Testing with JMeter, BlazeMeter, New Relic
PPTX
JavaOne 2015: Top Performance Patterns Deep Dive
PPTX
Top Java Performance Problems and Metrics To Check in Your Pipeline
PDF
How to address operational aspects effectively with Agile practices - Matthew...
PPTX
Deploy Faster Without Failing Faster - Metrics-Driven - Dynatrace User Groups...
OOP 2016 - Building Software That Eats The World
Continuous Deployment: The Dirty Details
Web and App Performance: Top Problems to avoid to keep you out of the News
Load Testing with JMeter, BlazeMeter, New Relic
JavaOne 2015: Top Performance Patterns Deep Dive
Top Java Performance Problems and Metrics To Check in Your Pipeline
How to address operational aspects effectively with Agile practices - Matthew...
Deploy Faster Without Failing Faster - Metrics-Driven - Dynatrace User Groups...

What's hot (20)

PPTX
How to explain DevOps to your mom
PPTX
Mobile User Experience: Auto Drive through Performance Metrics
PPTX
Four Practices to Fix Your Top .NET Performance Problems
PDF
Cut your Grails application to pieces - build feature plugins
PPTX
A Prophet in Production Shiri Hochhauser
PPTX
Metrics Driven DevOps - Automate Scalability and Performance Into your Pipeline
PPTX
Application Quality Gates in Continuous Delivery: Deliver Better Software Fas...
PPTX
StarWest 2013 Performance is not an afterthought – make it a part of your Agi...
PPTX
JavaOne - Performance Focused DevOps to Improve Cont Delivery
PDF
Performance tuning Grails applications
PDF
Security as Code: DOES15
PPTX
Leandro Melendez - Switching Performance Left & Right
PPTX
WinOps Conf 2016 - Gael Colas - Configuration Management Theory: Why Idempote...
PPTX
London WebPerf Meetup: End-To-End Performance Problems
PPTX
Hugs instead of Bugs: Dreaming of Quality Tools for Devs and Testers
PPTX
Sydney Continuous Delivery Meetup May 2014
PPTX
Docker/DevOps Meetup: Metrics-Driven Continuous Performance and Scalabilty
PPTX
Performance monitoring - Adoniram Mishra, Rupesh Dubey, ThoughtWorks
PPTX
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
PDF
Performance tuning Grails applications
How to explain DevOps to your mom
Mobile User Experience: Auto Drive through Performance Metrics
Four Practices to Fix Your Top .NET Performance Problems
Cut your Grails application to pieces - build feature plugins
A Prophet in Production Shiri Hochhauser
Metrics Driven DevOps - Automate Scalability and Performance Into your Pipeline
Application Quality Gates in Continuous Delivery: Deliver Better Software Fas...
StarWest 2013 Performance is not an afterthought – make it a part of your Agi...
JavaOne - Performance Focused DevOps to Improve Cont Delivery
Performance tuning Grails applications
Security as Code: DOES15
Leandro Melendez - Switching Performance Left & Right
WinOps Conf 2016 - Gael Colas - Configuration Management Theory: Why Idempote...
London WebPerf Meetup: End-To-End Performance Problems
Hugs instead of Bugs: Dreaming of Quality Tools for Devs and Testers
Sydney Continuous Delivery Meetup May 2014
Docker/DevOps Meetup: Metrics-Driven Continuous Performance and Scalabilty
Performance monitoring - Adoniram Mishra, Rupesh Dubey, ThoughtWorks
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
Performance tuning Grails applications
Ad

Similar to Advanced A/B Testing at Wix - Aviran Mordo and Sagy Rozman, Wix.com (20)

PPTX
Experimenting on Humans - Advanced A/B Tests - QCon SF 2014
PPTX
The Art of A/B Testing
PPTX
Advanced A/B Testing - Jax London 2015
PPTX
Advanced A/B testing - Aviran Mordo
PDF
Petri for kyiv.pptx
PDF
5 Steps to Jump Start Your Test Automation
PPTX
Accelerating Your Test Execution Pipeline
PPTX
VT.NET 20160411: An Intro to Test Driven Development (TDD)
PDF
Experimenting on Humans
PDF
Fostering Long-Term Test Automation Success
PDF
Accelerating Your Test Execution Pipeline
PDF
No Devops Without Continuous Testing
PDF
Software Quality and Test Strategies for Ruby and Rails Applications
PDF
Cloud-based Test Microservices JavaOne 2014
PPTX
Continuous Delivery - Automate & Build Better Software with Travis CI
 
PPTX
Automated Acceptance Tests & Tool choice
 
PDF
How to Build Your Own Test Automation Framework?
PDF
Test Automation using UiPath Test Suite - Developer Circle Part-3 - 07262022.pdf
PPTX
All you need is fast feedback loop, fast feedback loop, fast feedback loop is...
PPTX
Cerberus_Presentation1
Experimenting on Humans - Advanced A/B Tests - QCon SF 2014
The Art of A/B Testing
Advanced A/B Testing - Jax London 2015
Advanced A/B testing - Aviran Mordo
Petri for kyiv.pptx
5 Steps to Jump Start Your Test Automation
Accelerating Your Test Execution Pipeline
VT.NET 20160411: An Intro to Test Driven Development (TDD)
Experimenting on Humans
Fostering Long-Term Test Automation Success
Accelerating Your Test Execution Pipeline
No Devops Without Continuous Testing
Software Quality and Test Strategies for Ruby and Rails Applications
Cloud-based Test Microservices JavaOne 2014
Continuous Delivery - Automate & Build Better Software with Travis CI
 
Automated Acceptance Tests & Tool choice
 
How to Build Your Own Test Automation Framework?
Test Automation using UiPath Test Suite - Developer Circle Part-3 - 07262022.pdf
All you need is fast feedback loop, fast feedback loop, fast feedback loop is...
Cerberus_Presentation1
Ad

More from DevOpsDays Tel Aviv (20)

PDF
YOUR OPEN SOURCE PROJECT IS LIKE A STARTUP, TREAT IT LIKE ONE, EYAR ZILBERMAN...
PPTX
GRAPHQL TO THE RES(T)CUE, ELLA SHARAKANSKI, Salto
PPTX
MICROSERVICES ABOVE THE CLOUD - DESIGNING THE INTERNATIONAL SPACE STATION FOR...
PPTX
THE (IR)RATIONAL INCIDENT RESPONSE: HOW PSYCHOLOGICAL BIASES AFFECT INCIDENT ...
PPTX
PRINCIPLES OF OBSERVABILITY // DANIEL MAHER, DataDog
PPTX
NUDGE AND SLUDGE: DRIVING SECURITY WITH DESIGN // J. WOLFGANG GOERLICH, Duo S...
PPTX
(Ignite) TAKE A HIKE: PREVENTING BATTERY CORROSION - LEAH VOGEL, CHEGG
PPTX
BUILDING A DR PLAN FOR YOUR CLOUD INFRASTRUCTURE FROM THE GROUND UP, MOSHE BE...
PPTX
THE THREE DISCIPLINES OF CI/CD SECURITY, DANIEL KRIVELEVICH, Cider Security
PDF
THE PLEASURES OF ON-PREM, TOMER GABEL
PPTX
CONFIGURATION MANAGEMENT IN THE CLOUD NATIVE ERA, SHAHAR MINTZ, EggPack
PPTX
SOLVING THE DEVOPS CRISIS, ONE PERSON AT A TIME, CHRISTINA BABITSKI, Develeap
PPTX
OPTIMIZING PERFORMANCE USING CONTINUOUS PRODUCTION PROFILING ,YONATAN GOLDSCH...
PPTX
HOW TO SCALE YOUR ONCALL OPERATION, AND SURVIVE TO TELL, ANTON DRUKH
PPTX
HOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearB
PPTX
FLYING BLIND - ACCESSIBILITY IN MONITORING, FEU MOUREK, Icinga
PPTX
(Ignite) WHAT'S BURNING THROUGH YOUR CLOUD BILL - GIL BAHAT, CIDER SECURITY
PPTX
SLO DRIVEN DEVELOPMENT, ALON NATIV, Tomorrow.io
PPTX
ONBOARDING IN LOCKDOWN, HILA FOX, Augury
PPTX
DON'T PANIC: GETTING YOUR INFRASTRUCTURE DRIFT UNDER CONTROL, ERAN BIBI, Firefly
YOUR OPEN SOURCE PROJECT IS LIKE A STARTUP, TREAT IT LIKE ONE, EYAR ZILBERMAN...
GRAPHQL TO THE RES(T)CUE, ELLA SHARAKANSKI, Salto
MICROSERVICES ABOVE THE CLOUD - DESIGNING THE INTERNATIONAL SPACE STATION FOR...
THE (IR)RATIONAL INCIDENT RESPONSE: HOW PSYCHOLOGICAL BIASES AFFECT INCIDENT ...
PRINCIPLES OF OBSERVABILITY // DANIEL MAHER, DataDog
NUDGE AND SLUDGE: DRIVING SECURITY WITH DESIGN // J. WOLFGANG GOERLICH, Duo S...
(Ignite) TAKE A HIKE: PREVENTING BATTERY CORROSION - LEAH VOGEL, CHEGG
BUILDING A DR PLAN FOR YOUR CLOUD INFRASTRUCTURE FROM THE GROUND UP, MOSHE BE...
THE THREE DISCIPLINES OF CI/CD SECURITY, DANIEL KRIVELEVICH, Cider Security
THE PLEASURES OF ON-PREM, TOMER GABEL
CONFIGURATION MANAGEMENT IN THE CLOUD NATIVE ERA, SHAHAR MINTZ, EggPack
SOLVING THE DEVOPS CRISIS, ONE PERSON AT A TIME, CHRISTINA BABITSKI, Develeap
OPTIMIZING PERFORMANCE USING CONTINUOUS PRODUCTION PROFILING ,YONATAN GOLDSCH...
HOW TO SCALE YOUR ONCALL OPERATION, AND SURVIVE TO TELL, ANTON DRUKH
HOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearB
FLYING BLIND - ACCESSIBILITY IN MONITORING, FEU MOUREK, Icinga
(Ignite) WHAT'S BURNING THROUGH YOUR CLOUD BILL - GIL BAHAT, CIDER SECURITY
SLO DRIVEN DEVELOPMENT, ALON NATIV, Tomorrow.io
ONBOARDING IN LOCKDOWN, HILA FOX, Augury
DON'T PANIC: GETTING YOUR INFRASTRUCTURE DRIFT UNDER CONTROL, ERAN BIBI, Firefly

Recently uploaded (20)

PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Machine learning based COVID-19 study performance prediction
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
 
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
cuic standard and advanced reporting.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
NewMind AI Weekly Chronicles - August'25 Week I
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Diabetes mellitus diagnosis method based random forest with bat algorithm
Machine learning based COVID-19 study performance prediction
Unlocking AI with Model Context Protocol (MCP)
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Agricultural_Statistics_at_a_Glance_2022_0.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
 
Advanced methodologies resolving dimensionality complications for autism neur...
Chapter 3 Spatial Domain Image Processing.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Empathic Computing: Creating Shared Understanding
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
cuic standard and advanced reporting.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
NewMind AI Monthly Chronicles - July 2025
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
NewMind AI Weekly Chronicles - August'25 Week I

Advanced A/B Testing at Wix - Aviran Mordo and Sagy Rozman, Wix.com

  • 1. Experimenting on Humans Aviran Mordo Head of Back-end Engineering @aviranm www.linkedin.com/in/aviran www.aviransplace.com Sagy Rozman Back-end Guild master @sagyrozman www.linkedin.com/in/sagyrozman
  • 3. Wix In Numbers • Over 55M users + 1M new users/month • Static storage is >1.5Pb of data • 3 data centers + 3 clouds (Google, Amazon, Azure) • 1.5B HTTP requests/day • 900 people work at Wix, of which ~ 300 in R&D
  • 4. 1542 (A/B Tests in 3 months)
  • 5. Agenda • Basic A/B testing • Experiment driven development • PETRI – Wix’s 3rd generation open source experiment system • Challenges and best practices • How to (code samples)
  • 7. A B To B or NOT to B?
  • 8. Home page results (How many registered)
  • 10. This is the Wix editor
  • 11. Our gallery manager What can we improve?
  • 14. Product Experiments Toggles & Reporting Infrastructure
  • 15. How do you know what is running?
  • 16. Why so many? If I “know” it is better, do I really need to test it?
  • 18. Sign-up The theory Choose Template Edit site Publish Premium
  • 21. Conclusion • EVERY new feature is A/B tested • We open the new feature to a % of users â—‹ Measure success â—‹ If it is better, we keep it â—‹ If worse, we check why and improve • If flawed, the impact is just for % of our users
  • 22. Start with 50% / 50% ?
  • 24. Sh*t happens (Test could fail) • New code can have bugs • Conversion can drop • Usage can drop • Unexpected cross test dependencies
  • 25. Minimize affected users (in case of failure) Gradual exposure (percentage of…) • Language • GEO • Browser • User-agent • OS • Company employees • User roles • Any other criteria you have (extendable) • All users
  • 26. Not all users are equal • First time visitors = Never visited wix.com • New registered users = Untainted users
  • 27. We need that feature …and failure is not an option
  • 30. First trial failed Performance had to be improved
  • 31. Halting the test results in loss of data. What can we do about it?
  • 32. Solution – Pause the experiment! • Maintain NEW experience for already exposed users • No additional users will be exposed to the NEW feature
  • 33. PETRI’s pause implementation • Use cookies to persist assignment â—‹ If user changes browser assignment is unknown • Server side persistence solves this â—‹ You pay in performance & scalability
  • 34. Decision Keep feature Drop feature Improve code & resume experiment Keep backwards compatibility for exposed users forever? Migrate users to another equivalent feature Drop it all together (users lose data/ work)
  • 35. The road to success
  • 36. Reaching statistical significance • Numbers look good but sample size is small • We need more data! • Expand Control Group (A)75% 50% 25% 0% Test Group (B) 25% 50% 75% 100%
  • 37. Keep user experience consistent Control Group (A) Test Group (B)
  • 38. Keeping persistent UX • Signed-in user (Editor) â—‹ Test group assignment is determined by the user ID â—‹ Guarantee toss persistency across browsers • Anonymous user (Home page) â—‹ Test group assignment is randomly determined â—‹ Can not guarantee persistent experience if changing browser • 11% of Wix users use more than one desktop browser
  • 39. There is MORE than one
  • 40. Possible states >= 2^(# experiments) # of active experiment Possible # of states 10 1024 20 1,048,576 30 1,073,741,824 Wix has ~200 active experiments = 1.606938e+60
  • 42. Support tools • Override options (URL parameters, cookies, headers…) • Near real time user BI tools • Integrated developer tools in the product
  • 43. Define Code Expand Experiment Merge code Close
  • 44. Define spec • Spec = Experiment template (in the code) â—‹ Define test groups â—‹ Mandatory limitations (filters, user types) â—‹ Scope = Group of related experiments (usually by product) • Why is it needed â—‹ Type safety â—‹ Preventing human errors (typos, user types) â—‹ Controlled by the developer (developer knows about the context) â—‹ Conducting experiments in batch
  • 45. Spec code snippet public class ExampleSpecDefinition extends SpecDefinition { @Override protected ExperimentSpecBuilder customize(ExperimentSpecBuilder builder) { return builder .withOwner("OWNERS_EMAIL_ADDRESS") .withScopes(aScopeDefinitionForAllUserTypes( "SOME_SCOPE")) .withTestGroups(asList("Group A", "Group B")); } }
  • 46. Conducting experiment • Experiment = “If” statement in the code final String result = laboratory.conductExperiment(key, fallback, new StringConverter()); if (result.equals("group a")) // execute group a's logic else if (result.equals("group b")) // execute group b's logic // in case conducting the experiment failed - the fallback value is returned // in this case you would usually execute the 'old' logic
  • 47. Upload spec • Upload the specs to Petri server â—‹ Enables to define an experiment instance { "creationDate" : "2014-01-09T13:11:26.846Z", "updateDate" : "2014-01-09T13:11:26.846Z", "scopes" : [ { "name" : "html-editor", "onlyForLoggedInUsers" : true }, { "name" : "html-viewer", "onlyForLoggedInUsers" : false } ], "testGroups" : [ "old", "new" ], "persistent" : true, "key" : "clientExperimentFullFlow1", "owner" : "" }
  • 48. Start new experiment (limited population)
  • 50. Ending successful experiment 1. Convert A/B Test to Feature Toggle (100% ON) 2. Merge the code 3. Close the experiment 4. Remove experiment instance
  • 51. Experiment lifecycle • Define spec • Use Petri client to conduct experiment in the code (defaults to old) • Sync spec • Open experiment • Manage experiment state • End experiment
  • 52. Petri is more than just an A/B test framework Feature toggle A/B Test Internal testing Personalization Continuous deployment Jira integration Experiments Dynamic configuration QA Automated testing
  • 53. Other things we (will) do with Petri • Expose features internally to company employees • Enable continuous deployment with feature toggles • Select assignment by sites (not only by users) • Automatic selection of winning group* • Exposing feature to #n of users* • Integration with Jira * Planned feature
  • 54. Petri is now an open source project https://github.com/wix/petri
  • 55. Q&A http://goo.gl/L7pHnd https://github.com/wix/petri Aviran Mordo Head of Back-end Engineering @aviranm www.linkedin.com/in/aviran www.aviransplace.com Sagy Rozman Back-end Guild master @sagyrozman www.linkedin.com/in/sagyrozman
  • 56. Credits http://upload.wikimedia.org/wikipedia/commons/b/b2/Fiber_optics_testing.jpg http://goo.gl/nEiepT https://www.flickr.com/photos/ilo_oli/2421536836 https://www.flickr.com/photos/dexxus/5791228117 http://goo.gl/SdeJ0o https://www.flickr.com/photos/112923805@N05/15005456062 https://www.flickr.com/photos/wiertz/8537791164 https://www.flickr.com/photos/laenulfean/5943132296 https://www.flickr.com/photos/torek/3470257377 https://www.flickr.com/photos/i5design/5393934753 https://www.flickr.com/photos/argonavigo/5320119828
  • 57. Why Petri • Modeled experiment lifecycle • Open source (developed using TDD from day 1) • Running at scale on production • No deployment necessary • Both back-end and front-end experiment • Flexible architecture
  • 58. PERTI Server Your app Laboratory DB Logs