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

Application of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptxApplication of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptx959SahilShah
 
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)dollysharma2066
 
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
 
Vishratwadi & Ghorpadi Bridge Tender documents
Vishratwadi & Ghorpadi Bridge Tender documentsVishratwadi & Ghorpadi Bridge Tender documents
Vishratwadi & Ghorpadi Bridge Tender documentsSachinPawar510423
 
Earthing details of Electrical Substation
Earthing details of Electrical SubstationEarthing details of Electrical Substation
Earthing details of Electrical Substationstephanwindworld
 
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort serviceGurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort servicejennyeacort
 
Piping Basic stress analysis by engineering
Piping Basic stress analysis by engineeringPiping Basic stress analysis by engineering
Piping Basic stress analysis by engineeringJuanCarlosMorales19600
 
Transport layer issues and challenges - Guide
Transport layer issues and challenges - GuideTransport layer issues and challenges - Guide
Transport layer issues and challenges - GuideGOPINATHS437943
 
Indian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptIndian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptMadan Karki
 
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfCCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfAsst.prof M.Gokilavani
 
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEINFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEroselinkalist12
 
lifi-technology with integration of IOT.pptx
lifi-technology with integration of IOT.pptxlifi-technology with integration of IOT.pptx
lifi-technology with integration of IOT.pptxsomshekarkn64
 
Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.eptoze12
 
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
 
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdfCCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdfAsst.prof M.Gokilavani
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024hassan khalil
 
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfgUnit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfgsaravananr517913
 
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)Dr SOUNDIRARAJ N
 

Recently uploaded (20)

Application of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptxApplication of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptx
 
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
 
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
 
Vishratwadi & Ghorpadi Bridge Tender documents
Vishratwadi & Ghorpadi Bridge Tender documentsVishratwadi & Ghorpadi Bridge Tender documents
Vishratwadi & Ghorpadi Bridge Tender documents
 
Earthing details of Electrical Substation
Earthing details of Electrical SubstationEarthing details of Electrical Substation
Earthing details of Electrical Substation
 
🔝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...
 
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort serviceGurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
 
Piping Basic stress analysis by engineering
Piping Basic stress analysis by engineeringPiping Basic stress analysis by engineering
Piping Basic stress analysis by engineering
 
Transport layer issues and challenges - Guide
Transport layer issues and challenges - GuideTransport layer issues and challenges - Guide
Transport layer issues and challenges - Guide
 
Indian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptIndian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.ppt
 
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfCCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
 
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEINFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
 
lifi-technology with integration of IOT.pptx
lifi-technology with integration of IOT.pptxlifi-technology with integration of IOT.pptx
lifi-technology with integration of IOT.pptx
 
Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.
 
Design and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdfDesign and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdf
 
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
 
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdfCCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
CCS355 Neural Network & Deep Learning UNIT III notes and Question bank .pdf
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024
 
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfgUnit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
 
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
 

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/