54
Aviran Mordo Head of Engineering @aviranm linkedin.com/in/aviran aviransplace.com Advanced A/B Testing

Advanced A/B Testing - Jax London 2015

Embed Size (px)

Citation preview

Page 1: Advanced A/B Testing - Jax London 2015

Aviran MordoHead of Engineering

@aviranmlinkedin.com/in/aviranaviransplace.com

Advanced A/B Testing

Page 2: Advanced A/B Testing - Jax London 2015
Page 3: Advanced A/B Testing - Jax London 2015

Wix In Numbers

Over 72M users + 1.5M new users/month

Static storage is >2Pb of data

3 data centers + 3 clouds (Google, Amazon, Azure)

2B HTTP requests/day

1000 people work at Wix

Page 4: Advanced A/B Testing - Jax London 2015

729(Experiments in Aug

‘15)

Page 5: Advanced A/B Testing - Jax London 2015

Basic A/B testing

Experiment driven development

PETRI – Wix’s 3rd generation open source experiment system

Challenges and best practices

Complexities and effect on product

Agenda

Page 6: Advanced A/B Testing - Jax London 2015

04:59A/B Test

Page 7: Advanced A/B Testing - Jax London 2015

To B or NOT to B?AB

Page 8: Advanced A/B Testing - Jax London 2015

Home page results (How many registered)

Page 9: Advanced A/B Testing - Jax London 2015

Experiment Driven Development

Page 10: Advanced A/B Testing - Jax London 2015

This is the Wix editor

Page 11: Advanced A/B Testing - Jax London 2015

Gallery managerWhat can we improve?

Page 12: Advanced A/B Testing - Jax London 2015

Is this better?

Page 13: Advanced A/B Testing - Jax London 2015

It’s not about winning – it’s about NOT LOSING

Page 14: Advanced A/B Testing - Jax London 2015

Product Experiments Toggles & Reporting

Infrastructure

Page 15: Advanced A/B Testing - Jax London 2015

How do you know what is running?

Page 16: Advanced A/B Testing - Jax London 2015

If I “know” it is better, do I really need to test it?

Why so many?

Page 17: Advanced A/B Testing - Jax London 2015
Page 18: Advanced A/B Testing - Jax London 2015

Sign-upChoose Templa

teEdit site Publish Premiu

m

The theory

Page 19: Advanced A/B Testing - Jax London 2015

Result = Fail

Page 20: Advanced A/B Testing - Jax London 2015

Intent matters

Page 21: Advanced A/B Testing - Jax London 2015

EVERY new feature is A/B tested

Measure success

If flawed, the impact is just for % of our users

Conclusion

Page 22: Advanced A/B Testing - Jax London 2015

Start with 50% / 50% ?

Page 23: Advanced A/B Testing - Jax London 2015
Page 24: Advanced A/B Testing - Jax London 2015

New code can have bugsConversion can dropUsage can dropUnexpected cross test dependencies

Sh*t happens (Test could fail)

Page 25: Advanced A/B Testing - Jax London 2015

Numbers look good but sample size is small

We need more data!

Expand

Reaching statistical significance

25% 50% 75% 100%

75% 50% 25% 0%Control Group (A)

Test Group (B)

Page 26: Advanced A/B Testing - Jax London 2015

Language GEOBrowser User-agentOS

Minimize affected users (in case of failure) Gradual exposure (percentage of…)

Company employeesUser rolesAny other criteria you have (extendable)All users

Page 27: Advanced A/B Testing - Jax London 2015

First time visitors = Never visited wix.com

New registered users = Untainted users

Existing registered users = Already familiar with the

service

Not all users are equal

Page 28: Advanced A/B Testing - Jax London 2015

Signed-in user Test group is determined by the user IDGuarantee toss consistency across browsers

Anonymous user (Home page)Test group is randomly determinedCannot guarantee consistent experience cross

browsers

11% of Wix users use more than one desktop browser

Keeping consistent UX

Page 29: Advanced A/B Testing - Jax London 2015

Which Test Group are You?

Non-Developers Developers

Test Group A Test Group B

Page 30: Advanced A/B Testing - Jax London 2015

Calling Laboratory is Easy

Page 31: Advanced A/B Testing - Jax London 2015

Start new experiment

Page 32: Advanced A/B Testing - Jax London 2015

We need that feature

…and failure is not an option

Page 33: Advanced A/B Testing - Jax London 2015

Adding a mobile view

Page 34: Advanced A/B Testing - Jax London 2015

First trial failed Performance had to be

improved

Page 35: Advanced A/B Testing - Jax London 2015

Halting the test results in loss of data. What can we do about it?

Page 36: Advanced A/B Testing - Jax London 2015

Solution – Pause !

• Maintain NEW experience for already exposed users

• No additional users will be exposed to the NEW feature

Page 37: Advanced A/B Testing - Jax London 2015

Decision (What to do with the data) 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)

Page 38: Advanced A/B Testing - Jax London 2015

Robots are users too!

Page 39: Advanced A/B Testing - Jax London 2015

Always exclude robots

Don’t let Google index a losing page

Don’t let bots affect statistics

Page 40: Advanced A/B Testing - Jax London 2015

There is MORE than one

Page 41: Advanced A/B Testing - Jax London 2015

# of active experiment Possible # of states

10 102420 1,048,57630 1,073,741,824

Possible states >= 2^(# experiments)

Wix has ~600 active experiments ~4.149516e+180

Page 42: Advanced A/B Testing - Jax London 2015

Integrated into the product

Page 43: Advanced A/B Testing - Jax London 2015

Why should product managers care about the

system architecture

Page 44: Advanced A/B Testing - Jax London 2015

Share document with other users

Page 45: Advanced A/B Testing - Jax London 2015

Document owner is part of a test that enables a new video

component

Page 46: Advanced A/B Testing - Jax London 2015

?

What will the other user experience when editing a shared document ?

Owner Friend

Page 47: Advanced A/B Testing - Jax London 2015

Assignment may be different than owner’s

Owner (B) Friend (A)

Page 48: Advanced A/B Testing - Jax London 2015

Enable features by existing content What will happened when you remove a component

Enable features by document owner’s assignment The friend now expects to find the new feature on his own

docs

Exclude experimental features from shared documents

You are not really testing the entire system

Possible solutions

Page 49: Advanced A/B Testing - Jax London 2015

A/B testing introduces complexity

Page 50: Advanced A/B Testing - Jax London 2015

Petri is more than just an A/B test framework

Feature toggle

A/B TestPersonalizatio

n

Internal testing

Continuous deployment

Jira integration

Experiments

Dynamic configuration

QA

Automated testing

Page 52: Advanced A/B Testing - Jax London 2015

Q&AHead of EngineeringAviran Mordo

@aviranmwww.linkedin.com/in/aviranhttp://www.aviransplace.com

https://github.com/wix/petrihttp://goo.gl/yMUzta

Page 53: Advanced A/B Testing - Jax London 2015

Creditshttp://upload.wikimedia.org/wikipedia/commons/b/b2/Fiber_optics_testing.jpghttp://goo.gl/nEiepThttps://www.flickr.com/photos/ilo_oli/2421536836https://www.flickr.com/photos/dexxus/5791228117http://goo.gl/SdeJ0ohttp://weltender.deviantart.com/art/Pause-relax-think-159996895https://www.flickr.com/photos/112923805@N05/15005456062https://www.flickr.com/photos/wiertz/8537791164https://www.flickr.com/photos/laenulfean/5943132296https://www.flickr.com/photos/torek/3470257377https://www.flickr.com/photos/i5design/5393934753https://www.flickr.com/photos/argonavigo/5320119828

Page 54: Advanced A/B Testing - Jax London 2015

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

Why Petri