SlideShare a Scribd company logo
1 of 40
Download to read offline
Progressive Feature Rollout
PHP User Group Milano
2017.06.21
Fabio Mora
mail@fabiomora.com
http://fabiomora.com
1 / Discovery: idea and validation
Awesome new feature!!1!
Different roles, different needs
Product Owner
● Give users features
● Validate ideas
● Short feedback loop
● Design right prototypes
Software Engineer
● Build cheap prototypes
● Put dev time in the
right features
● Keep tech debt low
User
● Have the site available
● Use a coherent service
● See interesting features
Heads to...
Trade-off? Or even make the cheapest thing...
https://martinfowler.com/bliki/DesignStaminaHypothesis.html
“If the functionality for your initial release is below the design payoff line, then it may be worth trading off design quality for speed; but...”
A cheap prototype!
A look to the metrics using Google Analytics
● Google Analytics out of the box
○ Sessions, Page Views, Users, Bounce Rate, Session Duration…
■ Reports: Audience, Overview. Then “Select a metric” section
○ Custom Events
■ Reports: Behaviour, Events, Overview. Then browse by “Event Action”
● Click-Through Rate (CTR) definition might help us
○ Ratio of the whole user traffic who click on a specific Call To Action (CTA)
○ CTR = Clicks / Page Views * 100
Category: register
Action: credential-start
Category: register
Action: facebook-landing
Category: impression
Action: master OR feature-fb
Using Google Analytics events
A quick prototype with feature branches
master
feature-a
Branch
git checkout master
git checkout -b feature-a
Merge in master
git rebase master
git checkout master
git merge feature-a https://martinfowler.com/bliki/FeatureBranch.html
A/B Testing
master
master
+
variation
all traffic
%
%
split
logic
A really really simple way to A/B test
A {0, 1} random toggle and a X-Feature HTTP Header
A really really simple way to A/B test
A Template Engine condition and GA events
A really really simple way to A/B test
50% vs 50% ...test it!
Going further with A/B Testing
Unit of
Division
Example Pro Cons
Event Page View
Simplicity
Randomness
UX Inconsistent
Fingerprint
PHPSESSID,
Cookies
UX consistent by
channel
Low randomness
Condition User Login UX Consistent
Low randomness
Not always applicable
A/B Testing: key points
● Unit Of Division
○ Is the only thing we’re allowed to design
○ Indipendent, homogeneus, representative (of the whole traffic)
● Evaluation Metric
○ Depends on the feature (e.g. CTR)
○ Other: time on page, loading time, first byte (avg, median, quantiles)
○ Focus on a few metrics!
A/B Testing: key points
● Significant Improvement
○ Tangible improvement from business point of view
● Sample Size
○ Repeatability: statistical phenomenon, variability, robustness, multiple runs
○ Significance: regarding a probability model
Refer to Math
● A/B Testing
○ Bernoulli Distribution fits {0, 1} events
○ Parameters: confidence, power, sample size, tangible improvement
○ Here Statistical Confidence (interval) is close to Statistical Repeatability
○ http://www.evanmiller.org/ab-testing/sample-size.html
● A/B/C/D… Testing
○ Way more complex
○ https://en.wikipedia.org/wiki/Bonferroni_correction
A bit of help...
Aside note: randomness and PHP
● rand()
● mt_rand()
rand()
rand()
mt_rand()
mt_rand()
3 / Delivery: make, test, deploy, rollout
Let’s implement it!
And BOOM the awesome-awesome new feature!!1!
Feature Toggling
Switch
● Traditional turned on/off
● Helps you to keep a
feature in master
● Can be used as override
Percentage
● Useful for A/B tests
● Minimize load risks
Condition
● Very specific
● The “logged in” test
● Split users by clusters
Demo Time!
https://github.com/morafabio/ws-feature-rollout
A word about backend metrics
● Time series based databases
● Carbon (StatsD), Graphite, Grafana
● composer require liuggio/statsd-php-client
Dashboard: visualize distribution (stacked)
legendValue(alias(scale(stacked(stats.web.registration.social.count),60),"Social"),"last")
legendValue(alias(scale(stacked(stats.web.registration.master.count),60),"Master"),"last")
Dashboard: visualize distribution (%)
legendValue(alias(stacked( asPercent(stats.web.registration.social.count,sumSeries(
stats.web.registration.social.count, stats.web.registration.master.count))), "Master"), "last")
legendValue(alias(stacked(asPercent(sumSeries( stats.web.registration.master.count),sumSeries(
stats.web.registration.social.count, stats.web.registration.master.count))),"Social"),"last")
Dashboard: track application responses
alias(hitcount(stats.web.registration.response-200,"5minutes"),"Ok")
alias(hitcount(stats.web.registration.response-400,"5minutes"),"Bad Request")
alias(hitcount(stats.web.registration.response-500,"5minutes"),"Internal Server Error")
...
4 / Wrap up all the things!
Key Learnings
● Track all the things!
● Trust statistics, don’t DYI
● Pay attention to team interactions
● Use a circuit breaker
● Define a fallback strategy
● Allocate cleanup time in advice
● Build packages, split things
● Handle errors properly
● Consider vendors (Mixpanel, Optimizely...)
Thanks!
Criticism, questions, doubts?
Credits
● Riccardo Tortul for the math/stat background
● Pictures
a. Photos are my own, except
b. http://it.disney.wikia.com/

More Related Content

Similar to Progressive Feature Rollout

Labeling all the Things with the WDI Skill Labeler
Labeling all the Things with the WDI Skill Labeler Labeling all the Things with the WDI Skill Labeler
Labeling all the Things with the WDI Skill Labeler Kwame Porter Robinson
 
User Stories from Scenarios
User Stories from ScenariosUser Stories from Scenarios
User Stories from ScenariosRavikanth-BA
 
Being a Data Science Product Manager
Being a Data Science Product ManagerBeing a Data Science Product Manager
Being a Data Science Product ManagerRam Narayan Subudhi
 
Agile practices for management
Agile practices for managementAgile practices for management
Agile practices for managementIcalia Labs
 
Prototyping Workshop - Wireframes, Mockups, Prototypes
Prototyping Workshop - Wireframes, Mockups, PrototypesPrototyping Workshop - Wireframes, Mockups, Prototypes
Prototyping Workshop - Wireframes, Mockups, PrototypesMarta Soncodi
 
How to Use Data for Product Decisions by YouTube Product Manager
How to Use Data for Product Decisions by YouTube Product ManagerHow to Use Data for Product Decisions by YouTube Product Manager
How to Use Data for Product Decisions by YouTube Product ManagerProduct School
 
Balancing PM & Software Development Practices by Splunk Sr PM
Balancing PM & Software Development Practices by Splunk Sr PMBalancing PM & Software Development Practices by Splunk Sr PM
Balancing PM & Software Development Practices by Splunk Sr PMProduct School
 
Key Tactics for a Successful Product Launch by Kespry Senior PM
Key Tactics for a Successful Product Launch by Kespry Senior PMKey Tactics for a Successful Product Launch by Kespry Senior PM
Key Tactics for a Successful Product Launch by Kespry Senior PMProduct School
 
Improving Accessibility for Higher Education
Improving Accessibility for Higher EducationImproving Accessibility for Higher Education
Improving Accessibility for Higher EducationAcquia
 
Website testing & optimization framework & results
Website testing & optimization framework & resultsWebsite testing & optimization framework & results
Website testing & optimization framework & resultsSaad Hameed
 
What Are the Basics of Product Manager Interviews by Google PM
What Are the Basics of Product Manager Interviews by Google PMWhat Are the Basics of Product Manager Interviews by Google PM
What Are the Basics of Product Manager Interviews by Google PMProduct School
 
UserZoom Education Series - Research Deep Dive - Advanced - Task-Based TOL (b...
UserZoom Education Series - Research Deep Dive - Advanced - Task-Based TOL (b...UserZoom Education Series - Research Deep Dive - Advanced - Task-Based TOL (b...
UserZoom Education Series - Research Deep Dive - Advanced - Task-Based TOL (b...UserZoom
 
Elena Grewal, Data Science Manager, Airbnb at MLconf SF 2016
Elena Grewal, Data Science Manager, Airbnb at MLconf SF 2016Elena Grewal, Data Science Manager, Airbnb at MLconf SF 2016
Elena Grewal, Data Science Manager, Airbnb at MLconf SF 2016MLconf
 
Workshop Stanford University - 28th July 2018 on Website Optimization
Workshop Stanford University - 28th July 2018 on Website Optimization  Workshop Stanford University - 28th July 2018 on Website Optimization
Workshop Stanford University - 28th July 2018 on Website Optimization Raj Lal
 
The Triangle - A universal method of working with digital analytics and marke...
The Triangle - A universal method of working with digital analytics and marke...The Triangle - A universal method of working with digital analytics and marke...
The Triangle - A universal method of working with digital analytics and marke...Robert Børlum-Bach
 
LSS Creation solution customer fit
LSS Creation    solution  customer fitLSS Creation    solution  customer fit
LSS Creation solution customer fitJohn Sechrest
 

Similar to Progressive Feature Rollout (20)

Labeling all the Things with the WDI Skill Labeler
Labeling all the Things with the WDI Skill Labeler Labeling all the Things with the WDI Skill Labeler
Labeling all the Things with the WDI Skill Labeler
 
User Stories from Scenarios
User Stories from ScenariosUser Stories from Scenarios
User Stories from Scenarios
 
Being a Data Science Product Manager
Being a Data Science Product ManagerBeing a Data Science Product Manager
Being a Data Science Product Manager
 
Agile practices for management
Agile practices for managementAgile practices for management
Agile practices for management
 
Pusheando en master, que es gerundio
Pusheando en master, que es gerundioPusheando en master, que es gerundio
Pusheando en master, que es gerundio
 
Prototyping Workshop - Wireframes, Mockups, Prototypes
Prototyping Workshop - Wireframes, Mockups, PrototypesPrototyping Workshop - Wireframes, Mockups, Prototypes
Prototyping Workshop - Wireframes, Mockups, Prototypes
 
How to Use Data for Product Decisions by YouTube Product Manager
How to Use Data for Product Decisions by YouTube Product ManagerHow to Use Data for Product Decisions by YouTube Product Manager
How to Use Data for Product Decisions by YouTube Product Manager
 
Balancing PM & Software Development Practices by Splunk Sr PM
Balancing PM & Software Development Practices by Splunk Sr PMBalancing PM & Software Development Practices by Splunk Sr PM
Balancing PM & Software Development Practices by Splunk Sr PM
 
Key Tactics for a Successful Product Launch by Kespry Senior PM
Key Tactics for a Successful Product Launch by Kespry Senior PMKey Tactics for a Successful Product Launch by Kespry Senior PM
Key Tactics for a Successful Product Launch by Kespry Senior PM
 
UI/UX Design in Agile process
UI/UX Design in Agile process  UI/UX Design in Agile process
UI/UX Design in Agile process
 
Improving Accessibility for Higher Education
Improving Accessibility for Higher EducationImproving Accessibility for Higher Education
Improving Accessibility for Higher Education
 
Website testing & optimization framework & results
Website testing & optimization framework & resultsWebsite testing & optimization framework & results
Website testing & optimization framework & results
 
What Are the Basics of Product Manager Interviews by Google PM
What Are the Basics of Product Manager Interviews by Google PMWhat Are the Basics of Product Manager Interviews by Google PM
What Are the Basics of Product Manager Interviews by Google PM
 
UserZoom Education Series - Research Deep Dive - Advanced - Task-Based TOL (b...
UserZoom Education Series - Research Deep Dive - Advanced - Task-Based TOL (b...UserZoom Education Series - Research Deep Dive - Advanced - Task-Based TOL (b...
UserZoom Education Series - Research Deep Dive - Advanced - Task-Based TOL (b...
 
Elena Grewal, Data Science Manager, Airbnb at MLconf SF 2016
Elena Grewal, Data Science Manager, Airbnb at MLconf SF 2016Elena Grewal, Data Science Manager, Airbnb at MLconf SF 2016
Elena Grewal, Data Science Manager, Airbnb at MLconf SF 2016
 
Workshop Stanford University - 28th July 2018 on Website Optimization
Workshop Stanford University - 28th July 2018 on Website Optimization  Workshop Stanford University - 28th July 2018 on Website Optimization
Workshop Stanford University - 28th July 2018 on Website Optimization
 
The Triangle - A universal method of working with digital analytics and marke...
The Triangle - A universal method of working with digital analytics and marke...The Triangle - A universal method of working with digital analytics and marke...
The Triangle - A universal method of working with digital analytics and marke...
 
Stories, Backlog & Mapping
Stories, Backlog & MappingStories, Backlog & Mapping
Stories, Backlog & Mapping
 
LSS Creation solution customer fit
LSS Creation    solution  customer fitLSS Creation    solution  customer fit
LSS Creation solution customer fit
 
Technical Debt.pptx
Technical Debt.pptxTechnical Debt.pptx
Technical Debt.pptx
 

More from Fabio Mora

Esperimenti Kanban: tra economia e teoria delle code.
Esperimenti Kanban: tra economia e teoria delle code.Esperimenti Kanban: tra economia e teoria delle code.
Esperimenti Kanban: tra economia e teoria delle code.Fabio Mora
 
La Unix Way vista da un DevOps
La Unix Way vista da un DevOpsLa Unix Way vista da un DevOps
La Unix Way vista da un DevOpsFabio Mora
 
We don't talk about Agile anymore
We don't talk about Agile anymoreWe don't talk about Agile anymore
We don't talk about Agile anymoreFabio Mora
 
A quick introduction: Extreme Programming
A quick introduction: Extreme ProgrammingA quick introduction: Extreme Programming
A quick introduction: Extreme ProgrammingFabio Mora
 
Quick Introduction: Extreme Programming
Quick Introduction: Extreme ProgrammingQuick Introduction: Extreme Programming
Quick Introduction: Extreme ProgrammingFabio Mora
 
It was just Open Source - TEDx Novara
It was just Open Source - TEDx NovaraIt was just Open Source - TEDx Novara
It was just Open Source - TEDx NovaraFabio Mora
 
2009 - Quotidiana Legalità
2009 - Quotidiana Legalità2009 - Quotidiana Legalità
2009 - Quotidiana LegalitàFabio Mora
 
The Crossword Game
The Crossword GameThe Crossword Game
The Crossword GameFabio Mora
 
Continuous Delivery di una WebApp - by example
Continuous Delivery di una WebApp - by exampleContinuous Delivery di una WebApp - by example
Continuous Delivery di una WebApp - by exampleFabio Mora
 
L’elefante nella stanza! [con LiquidO™] - Codemotion 2014
L’elefante nella stanza! [con LiquidO™] - Codemotion 2014L’elefante nella stanza! [con LiquidO™] - Codemotion 2014
L’elefante nella stanza! [con LiquidO™] - Codemotion 2014Fabio Mora
 
L’elefante nella stanza! [con LiquidO™]
L’elefante nella stanza! [con LiquidO™] L’elefante nella stanza! [con LiquidO™]
L’elefante nella stanza! [con LiquidO™] Fabio Mora
 
Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2Fabio Mora
 
Shazam to Spotify - spike/demo web project
Shazam to Spotify - spike/demo web projectShazam to Spotify - spike/demo web project
Shazam to Spotify - spike/demo web projectFabio Mora
 
LinuxDay 2009 - Quali programmi?
LinuxDay 2009 - Quali programmi?LinuxDay 2009 - Quali programmi?
LinuxDay 2009 - Quali programmi?Fabio Mora
 
LinuxDay 2009 - Cos'è Linux?
LinuxDay 2009 - Cos'è Linux?LinuxDay 2009 - Cos'è Linux?
LinuxDay 2009 - Cos'è Linux?Fabio Mora
 
Se “Embrace Change” è difficile.
Se “Embrace Change” è difficile.Se “Embrace Change” è difficile.
Se “Embrace Change” è difficile.Fabio Mora
 
If "Embrace Change" is Hard (@milano-xpug)
If "Embrace Change" is Hard (@milano-xpug)If "Embrace Change" is Hard (@milano-xpug)
If "Embrace Change" is Hard (@milano-xpug)Fabio Mora
 
Perchè Agile? Cambiamenti culturali work in progress.
Perchè Agile? Cambiamenti culturali work in progress.Perchè Agile? Cambiamenti culturali work in progress.
Perchè Agile? Cambiamenti culturali work in progress.Fabio Mora
 
cambiare punto di vista
cambiare punto di vistacambiare punto di vista
cambiare punto di vistaFabio Mora
 
CoderDojo - Galliate, 20 aprile 2013
CoderDojo - Galliate, 20 aprile 2013CoderDojo - Galliate, 20 aprile 2013
CoderDojo - Galliate, 20 aprile 2013Fabio Mora
 

More from Fabio Mora (20)

Esperimenti Kanban: tra economia e teoria delle code.
Esperimenti Kanban: tra economia e teoria delle code.Esperimenti Kanban: tra economia e teoria delle code.
Esperimenti Kanban: tra economia e teoria delle code.
 
La Unix Way vista da un DevOps
La Unix Way vista da un DevOpsLa Unix Way vista da un DevOps
La Unix Way vista da un DevOps
 
We don't talk about Agile anymore
We don't talk about Agile anymoreWe don't talk about Agile anymore
We don't talk about Agile anymore
 
A quick introduction: Extreme Programming
A quick introduction: Extreme ProgrammingA quick introduction: Extreme Programming
A quick introduction: Extreme Programming
 
Quick Introduction: Extreme Programming
Quick Introduction: Extreme ProgrammingQuick Introduction: Extreme Programming
Quick Introduction: Extreme Programming
 
It was just Open Source - TEDx Novara
It was just Open Source - TEDx NovaraIt was just Open Source - TEDx Novara
It was just Open Source - TEDx Novara
 
2009 - Quotidiana Legalità
2009 - Quotidiana Legalità2009 - Quotidiana Legalità
2009 - Quotidiana Legalità
 
The Crossword Game
The Crossword GameThe Crossword Game
The Crossword Game
 
Continuous Delivery di una WebApp - by example
Continuous Delivery di una WebApp - by exampleContinuous Delivery di una WebApp - by example
Continuous Delivery di una WebApp - by example
 
L’elefante nella stanza! [con LiquidO™] - Codemotion 2014
L’elefante nella stanza! [con LiquidO™] - Codemotion 2014L’elefante nella stanza! [con LiquidO™] - Codemotion 2014
L’elefante nella stanza! [con LiquidO™] - Codemotion 2014
 
L’elefante nella stanza! [con LiquidO™]
L’elefante nella stanza! [con LiquidO™] L’elefante nella stanza! [con LiquidO™]
L’elefante nella stanza! [con LiquidO™]
 
Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2
 
Shazam to Spotify - spike/demo web project
Shazam to Spotify - spike/demo web projectShazam to Spotify - spike/demo web project
Shazam to Spotify - spike/demo web project
 
LinuxDay 2009 - Quali programmi?
LinuxDay 2009 - Quali programmi?LinuxDay 2009 - Quali programmi?
LinuxDay 2009 - Quali programmi?
 
LinuxDay 2009 - Cos'è Linux?
LinuxDay 2009 - Cos'è Linux?LinuxDay 2009 - Cos'è Linux?
LinuxDay 2009 - Cos'è Linux?
 
Se “Embrace Change” è difficile.
Se “Embrace Change” è difficile.Se “Embrace Change” è difficile.
Se “Embrace Change” è difficile.
 
If "Embrace Change" is Hard (@milano-xpug)
If "Embrace Change" is Hard (@milano-xpug)If "Embrace Change" is Hard (@milano-xpug)
If "Embrace Change" is Hard (@milano-xpug)
 
Perchè Agile? Cambiamenti culturali work in progress.
Perchè Agile? Cambiamenti culturali work in progress.Perchè Agile? Cambiamenti culturali work in progress.
Perchè Agile? Cambiamenti culturali work in progress.
 
cambiare punto di vista
cambiare punto di vistacambiare punto di vista
cambiare punto di vista
 
CoderDojo - Galliate, 20 aprile 2013
CoderDojo - Galliate, 20 aprile 2013CoderDojo - Galliate, 20 aprile 2013
CoderDojo - Galliate, 20 aprile 2013
 

Recently uploaded

High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
main PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidmain PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidNikhilNagaraju
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxDeepakSakkari2
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile servicerehmti665
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130Suhani Kapoor
 
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfCCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfAsst.prof M.Gokilavani
 
ZXCTN 5804 / ZTE PTN / ZTE POTN / ZTE 5804 PTN / ZTE POTN 5804 ( 100/200 GE Z...
ZXCTN 5804 / ZTE PTN / ZTE POTN / ZTE 5804 PTN / ZTE POTN 5804 ( 100/200 GE Z...ZXCTN 5804 / ZTE PTN / ZTE POTN / ZTE 5804 PTN / ZTE POTN 5804 ( 100/200 GE Z...
ZXCTN 5804 / ZTE PTN / ZTE POTN / ZTE 5804 PTN / ZTE POTN 5804 ( 100/200 GE Z...ZTE
 
microprocessor 8085 and its interfacing
microprocessor 8085  and its interfacingmicroprocessor 8085  and its interfacing
microprocessor 8085 and its interfacingjaychoudhary37
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionDr.Costas Sachpazis
 
Artificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxArtificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxbritheesh05
 
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVRajaP95
 
Internship report on mechanical engineering
Internship report on mechanical engineeringInternship report on mechanical engineering
Internship report on mechanical engineeringmalavadedarshan25
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...VICTOR MAESTRE RAMIREZ
 
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escortsranjana rawat
 
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerAnamika Sarkar
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...Soham Mondal
 

Recently uploaded (20)

High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
 
main PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidmain PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfid
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptx
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile service
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
 
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfCCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
 
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
 
ZXCTN 5804 / ZTE PTN / ZTE POTN / ZTE 5804 PTN / ZTE POTN 5804 ( 100/200 GE Z...
ZXCTN 5804 / ZTE PTN / ZTE POTN / ZTE 5804 PTN / ZTE POTN 5804 ( 100/200 GE Z...ZXCTN 5804 / ZTE PTN / ZTE POTN / ZTE 5804 PTN / ZTE POTN 5804 ( 100/200 GE Z...
ZXCTN 5804 / ZTE PTN / ZTE POTN / ZTE 5804 PTN / ZTE POTN 5804 ( 100/200 GE Z...
 
microprocessor 8085 and its interfacing
microprocessor 8085  and its interfacingmicroprocessor 8085  and its interfacing
microprocessor 8085 and its interfacing
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
 
Artificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxArtificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptx
 
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
 
Internship report on mechanical engineering
Internship report on mechanical engineeringInternship report on mechanical engineering
Internship report on mechanical engineering
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...
 
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
 
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
 
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
 

Progressive Feature Rollout

  • 1. Progressive Feature Rollout PHP User Group Milano 2017.06.21 Fabio Mora mail@fabiomora.com http://fabiomora.com
  • 2. 1 / Discovery: idea and validation
  • 3.
  • 5. Different roles, different needs Product Owner ● Give users features ● Validate ideas ● Short feedback loop ● Design right prototypes Software Engineer ● Build cheap prototypes ● Put dev time in the right features ● Keep tech debt low User ● Have the site available ● Use a coherent service ● See interesting features
  • 7. Trade-off? Or even make the cheapest thing... https://martinfowler.com/bliki/DesignStaminaHypothesis.html “If the functionality for your initial release is below the design payoff line, then it may be worth trading off design quality for speed; but...”
  • 9. A look to the metrics using Google Analytics ● Google Analytics out of the box ○ Sessions, Page Views, Users, Bounce Rate, Session Duration… ■ Reports: Audience, Overview. Then “Select a metric” section ○ Custom Events ■ Reports: Behaviour, Events, Overview. Then browse by “Event Action” ● Click-Through Rate (CTR) definition might help us ○ Ratio of the whole user traffic who click on a specific Call To Action (CTA) ○ CTR = Clicks / Page Views * 100
  • 10. Category: register Action: credential-start Category: register Action: facebook-landing Category: impression Action: master OR feature-fb
  • 12.
  • 13. A quick prototype with feature branches master feature-a Branch git checkout master git checkout -b feature-a Merge in master git rebase master git checkout master git merge feature-a https://martinfowler.com/bliki/FeatureBranch.html
  • 15. A really really simple way to A/B test A {0, 1} random toggle and a X-Feature HTTP Header
  • 16. A really really simple way to A/B test A Template Engine condition and GA events
  • 17. A really really simple way to A/B test 50% vs 50% ...test it!
  • 18. Going further with A/B Testing Unit of Division Example Pro Cons Event Page View Simplicity Randomness UX Inconsistent Fingerprint PHPSESSID, Cookies UX consistent by channel Low randomness Condition User Login UX Consistent Low randomness Not always applicable
  • 19. A/B Testing: key points ● Unit Of Division ○ Is the only thing we’re allowed to design ○ Indipendent, homogeneus, representative (of the whole traffic) ● Evaluation Metric ○ Depends on the feature (e.g. CTR) ○ Other: time on page, loading time, first byte (avg, median, quantiles) ○ Focus on a few metrics!
  • 20. A/B Testing: key points ● Significant Improvement ○ Tangible improvement from business point of view ● Sample Size ○ Repeatability: statistical phenomenon, variability, robustness, multiple runs ○ Significance: regarding a probability model
  • 21. Refer to Math ● A/B Testing ○ Bernoulli Distribution fits {0, 1} events ○ Parameters: confidence, power, sample size, tangible improvement ○ Here Statistical Confidence (interval) is close to Statistical Repeatability ○ http://www.evanmiller.org/ab-testing/sample-size.html ● A/B/C/D… Testing ○ Way more complex ○ https://en.wikipedia.org/wiki/Bonferroni_correction
  • 22. A bit of help...
  • 23. Aside note: randomness and PHP ● rand() ● mt_rand()
  • 28. 3 / Delivery: make, test, deploy, rollout
  • 30. And BOOM the awesome-awesome new feature!!1!
  • 31. Feature Toggling Switch ● Traditional turned on/off ● Helps you to keep a feature in master ● Can be used as override Percentage ● Useful for A/B tests ● Minimize load risks Condition ● Very specific ● The “logged in” test ● Split users by clusters
  • 33. A word about backend metrics ● Time series based databases ● Carbon (StatsD), Graphite, Grafana ● composer require liuggio/statsd-php-client
  • 34. Dashboard: visualize distribution (stacked) legendValue(alias(scale(stacked(stats.web.registration.social.count),60),"Social"),"last") legendValue(alias(scale(stacked(stats.web.registration.master.count),60),"Master"),"last")
  • 35. Dashboard: visualize distribution (%) legendValue(alias(stacked( asPercent(stats.web.registration.social.count,sumSeries( stats.web.registration.social.count, stats.web.registration.master.count))), "Master"), "last") legendValue(alias(stacked(asPercent(sumSeries( stats.web.registration.master.count),sumSeries( stats.web.registration.social.count, stats.web.registration.master.count))),"Social"),"last")
  • 36. Dashboard: track application responses alias(hitcount(stats.web.registration.response-200,"5minutes"),"Ok") alias(hitcount(stats.web.registration.response-400,"5minutes"),"Bad Request") alias(hitcount(stats.web.registration.response-500,"5minutes"),"Internal Server Error") ...
  • 37. 4 / Wrap up all the things!
  • 38. Key Learnings ● Track all the things! ● Trust statistics, don’t DYI ● Pay attention to team interactions ● Use a circuit breaker ● Define a fallback strategy ● Allocate cleanup time in advice ● Build packages, split things ● Handle errors properly ● Consider vendors (Mixpanel, Optimizely...)
  • 40. Credits ● Riccardo Tortul for the math/stat background ● Pictures a. Photos are my own, except b. http://it.disney.wikia.com/