SlideShare a Scribd company logo
1 of 45
Feature Flag
Roll Out & Roll Back without Deployment
Feature Flag?
New Feature On/Off
Index
1. Problems before Feature Flag
2. Benefits
3. Weak Points
4. Libraries
Problems
before Feature Flag
Deployment == Roll Out
Deployment
before Feature
Flag
Problem 0.
No Test in Production
Test ENV != Prod ENV
Problem 1.
Unclear Delivery Time
From Click To Roll Out:
Maybe.. 30 minutes
Problem 2.
No Way to Dog
Fooding
QA => All Users
RollBack
before Feature
Flag
Problem 3.
Slow Delivery
From Click To Roll Out:
Maybe.. 30 minutes
Solution.
New Feature On/Off
to Some Users
One Click UI
Code Level
if FeatureFlag.active?('fetureFoo', user)
c = a/b
else
c = b == 0 ? 0 : a/b
end
Feature Flag Service
• Create if new flag is detected.
• List flags.
• Update a flag.
• Delete too old flags.
Infrastructure
After Feature Flag
Deployment
after Feature Flag
Benefit 0.
Test in Production
Benefit 1.
Clear & Fast Delivery
Time
One Click &
Real Time Roll Out
Benefit 2.
Easy Dog Fooding
QA => Internal User => All
Rollback
After Feature Flag
Benefit 3.
Fast Roll Back
One Click &
Real Time Roll Back
Unexpected Benefit 4.
Simple A/B Test
Weak Points
• Uncooperative Members
• Too Big Changes to Use Feature Flag
• Obsoleted Feature Flags are Debts
• Dependency on Each Feature Flags
No feature flag can be
better
• Brand New API
• Clear & Tiny Changes
• Fixing a bug that makes something worthless
Weak Point 0.
Uncooperative
Members
Solution 0.
Code Review!
No Flag No Merge
Weak Point 1.
Too Big Changes
to use Feature Flag
Solution 1.
Apply to End Point
Solution 1-0. in Method
if FeatureFlag.active?('fetureFoo', user)
c = foo(1, 2)
else
c = deprecated_foo(1, 2)
end
def foo(a,b)
...
...
end
def deprecated_foo(a,b)
...
...
end
Solution 1-0. in Class
if FeatureFlag.active?('fetureFoo', user)
c = Foo.new(1, 2)
else
c = DeprecatedFoo.new(1, 2)
end
class Foo(a,b)
...
...
end
class DeprecatedFoo(a,b)
...
...
end
Solution 1-0. in HTML
# Javascript
<option
ng-show=“FeatureFlag.is_active(‘fetureFoo', user)"
value="foo1"
/>
<option
ng-hide=“FeatureFlag.is_active('fetureFoo', user)"
value="foo2"
/>
# Server Rendering
<% if FeatureFlag.active?('fetureFoo', user) %>
<option value="foo1"/>
<% else %>
<option value="foo2"/>
<% end %>
Weak Point 2.
Obsoleted Feature Flags are
Debts
Solution 2.
Clean Up in The Sprint
Weak Point 3.
Dependency on Each Feature
Flag
Feature Flag in Feature Flag in Feature Flag in …
Libraries
• rollout for Ruby
• Gutter for Python
• Togglez for java
Reference
• https://martinfowler.com/articles/feature-
toggles.html
• https://martinfowler.com/bliki/FeatureToggle.html
• https://msdn.microsoft.com/en-
us/magazine/dn683796
• http://apptimize.com/feature-flags-launch/
Q & A

More Related Content

Viewers also liked

Histedit Mercurial Extension
Histedit Mercurial ExtensionHistedit Mercurial Extension
Histedit Mercurial ExtensionManel Villar
 
Automating good coding practices
Automating good coding practicesAutomating good coding practices
Automating good coding practicesKevin Peterson
 
How Samsung Engineers Do Pre-Commit Builds with Perforce Helix Streams
How Samsung Engineers Do Pre-Commit Builds with Perforce Helix StreamsHow Samsung Engineers Do Pre-Commit Builds with Perforce Helix Streams
How Samsung Engineers Do Pre-Commit Builds with Perforce Helix StreamsPerforce
 
Apache Yetus: Intro to Precommit for HBase Contributors
Apache Yetus: Intro to Precommit for HBase ContributorsApache Yetus: Intro to Precommit for HBase Contributors
Apache Yetus: Intro to Precommit for HBase ContributorsAllen Wittenauer
 
Introduction to Feature Toggle and FF4J
Introduction to Feature Toggle and FF4JIntroduction to Feature Toggle and FF4J
Introduction to Feature Toggle and FF4JCédrick Lunven
 
Apache Yetus: Helping Solve the Last Mile Problem
Apache Yetus: Helping Solve the Last Mile ProblemApache Yetus: Helping Solve the Last Mile Problem
Apache Yetus: Helping Solve the Last Mile ProblemAllen Wittenauer
 
Who will test your tests?
Who will test your tests?Who will test your tests?
Who will test your tests?Yahya Poonawala
 
Overcoming the fear of deployments
Overcoming the fear of deploymentsOvercoming the fear of deployments
Overcoming the fear of deploymentsAndrei Tognolo
 
Continuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.io
Continuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.ioContinuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.io
Continuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.ioMike Fotinakis
 
Pull requests and testers can be friends
Pull requests and testers can be friendsPull requests and testers can be friends
Pull requests and testers can be friendsAlan Parkinson
 
Entregas Contínuas com feature toggles
Entregas Contínuas com feature togglesEntregas Contínuas com feature toggles
Entregas Contínuas com feature togglessolon_aguiar
 
Continuous Integration, Delivery and Deployment
Continuous Integration, Delivery and DeploymentContinuous Integration, Delivery and Deployment
Continuous Integration, Delivery and DeploymentEero Laukkanen
 
Refactoring for Software Design Smells - Tech Talk
Refactoring for Software Design Smells - Tech TalkRefactoring for Software Design Smells - Tech Talk
Refactoring for Software Design Smells - Tech TalkGanesh Samarthyam
 
Why we used Feature Branching
Why we used Feature BranchingWhy we used Feature Branching
Why we used Feature BranchingAlan Parkinson
 

Viewers also liked (15)

Feature toggling
Feature togglingFeature toggling
Feature toggling
 
Histedit Mercurial Extension
Histedit Mercurial ExtensionHistedit Mercurial Extension
Histedit Mercurial Extension
 
Automating good coding practices
Automating good coding practicesAutomating good coding practices
Automating good coding practices
 
How Samsung Engineers Do Pre-Commit Builds with Perforce Helix Streams
How Samsung Engineers Do Pre-Commit Builds with Perforce Helix StreamsHow Samsung Engineers Do Pre-Commit Builds with Perforce Helix Streams
How Samsung Engineers Do Pre-Commit Builds with Perforce Helix Streams
 
Apache Yetus: Intro to Precommit for HBase Contributors
Apache Yetus: Intro to Precommit for HBase ContributorsApache Yetus: Intro to Precommit for HBase Contributors
Apache Yetus: Intro to Precommit for HBase Contributors
 
Introduction to Feature Toggle and FF4J
Introduction to Feature Toggle and FF4JIntroduction to Feature Toggle and FF4J
Introduction to Feature Toggle and FF4J
 
Apache Yetus: Helping Solve the Last Mile Problem
Apache Yetus: Helping Solve the Last Mile ProblemApache Yetus: Helping Solve the Last Mile Problem
Apache Yetus: Helping Solve the Last Mile Problem
 
Who will test your tests?
Who will test your tests?Who will test your tests?
Who will test your tests?
 
Overcoming the fear of deployments
Overcoming the fear of deploymentsOvercoming the fear of deployments
Overcoming the fear of deployments
 
Continuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.io
Continuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.ioContinuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.io
Continuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.io
 
Pull requests and testers can be friends
Pull requests and testers can be friendsPull requests and testers can be friends
Pull requests and testers can be friends
 
Entregas Contínuas com feature toggles
Entregas Contínuas com feature togglesEntregas Contínuas com feature toggles
Entregas Contínuas com feature toggles
 
Continuous Integration, Delivery and Deployment
Continuous Integration, Delivery and DeploymentContinuous Integration, Delivery and Deployment
Continuous Integration, Delivery and Deployment
 
Refactoring for Software Design Smells - Tech Talk
Refactoring for Software Design Smells - Tech TalkRefactoring for Software Design Smells - Tech Talk
Refactoring for Software Design Smells - Tech Talk
 
Why we used Feature Branching
Why we used Feature BranchingWhy we used Feature Branching
Why we used Feature Branching
 

More from Shin Kim

03. HTTPS & Restful
03. HTTPS & Restful03. HTTPS & Restful
03. HTTPS & RestfulShin Kim
 
02. Model in Ruby on Rails
02. Model in Ruby on Rails02. Model in Ruby on Rails
02. Model in Ruby on RailsShin Kim
 
NGS(Next-Generation Sequencing) Introduction
NGS(Next-Generation Sequencing) IntroductionNGS(Next-Generation Sequencing) Introduction
NGS(Next-Generation Sequencing) IntroductionShin Kim
 
엷홈페이지의 이해
엷홈페이지의 이해엷홈페이지의 이해
엷홈페이지의 이해Shin Kim
 
엷 인프라 이해하기 & Ionic로 앱 만들기
엷 인프라 이해하기 & Ionic로 앱 만들기엷 인프라 이해하기 & Ionic로 앱 만들기
엷 인프라 이해하기 & Ionic로 앱 만들기Shin Kim
 
Infer hidden relationships from literature by multi level context terms
Infer hidden relationships from literature by multi level context termsInfer hidden relationships from literature by multi level context terms
Infer hidden relationships from literature by multi level context termsShin Kim
 
생물학적 해석 도구 실습: DAVID, ArrayXPath, BioLattice
생물학적 해석 도구 실습: DAVID, ArrayXPath, BioLattice생물학적 해석 도구 실습: DAVID, ArrayXPath, BioLattice
생물학적 해석 도구 실습: DAVID, ArrayXPath, BioLatticeShin Kim
 
Identifying Gene-Disease Associations
Identifying Gene-Disease AssociationsIdentifying Gene-Disease Associations
Identifying Gene-Disease AssociationsShin Kim
 

More from Shin Kim (9)

03. HTTPS & Restful
03. HTTPS & Restful03. HTTPS & Restful
03. HTTPS & Restful
 
02. Model in Ruby on Rails
02. Model in Ruby on Rails02. Model in Ruby on Rails
02. Model in Ruby on Rails
 
NGS(Next-Generation Sequencing) Introduction
NGS(Next-Generation Sequencing) IntroductionNGS(Next-Generation Sequencing) Introduction
NGS(Next-Generation Sequencing) Introduction
 
엷홈페이지의 이해
엷홈페이지의 이해엷홈페이지의 이해
엷홈페이지의 이해
 
엷 인프라 이해하기 & Ionic로 앱 만들기
엷 인프라 이해하기 & Ionic로 앱 만들기엷 인프라 이해하기 & Ionic로 앱 만들기
엷 인프라 이해하기 & Ionic로 앱 만들기
 
Infer hidden relationships from literature by multi level context terms
Infer hidden relationships from literature by multi level context termsInfer hidden relationships from literature by multi level context terms
Infer hidden relationships from literature by multi level context terms
 
Rajo link
Rajo linkRajo link
Rajo link
 
생물학적 해석 도구 실습: DAVID, ArrayXPath, BioLattice
생물학적 해석 도구 실습: DAVID, ArrayXPath, BioLattice생물학적 해석 도구 실습: DAVID, ArrayXPath, BioLattice
생물학적 해석 도구 실습: DAVID, ArrayXPath, BioLattice
 
Identifying Gene-Disease Associations
Identifying Gene-Disease AssociationsIdentifying Gene-Disease Associations
Identifying Gene-Disease Associations
 

Recently uploaded

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 

Recently uploaded (20)

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 

Feature Flag: Roll Out & Roll Back without Deployment