SlideShare a Scribd company logo
1 of 19
Feature Flagging
Sam Fernando
SAM FERNANDO
 Digital Solutions Manager @ Oakton
 President of Adelaide Dynamics UG
 Technology Specialist
 Photography & Music
 linkedin.com/in/samfernandoau
 www.slideshare.net/shamiraf
Agenda
 What’s feature flagging/toggles?
 Feature flagging vs branching
 Type of flags
 Use cases
 Few libraries
What’s feature flagging
 aka Feature toggle, feature switcher, feature
flipper
 Dynamic control of program flow
 Dynamically enable/disable features at run time
 Gain more control of a release
 Increase continuous delivery
 Customer-first and DevOps focused
 Complimentary to branching practices
If (switch == true)
If (switch == false)
What are the benefits?
 Move forward quicker with releases
 Prevent blocking of a release
 Prevent merge conflicts
 Control feature behaviour multiple environments
 Less tedious code reviews
 Separate feature release from code release
Feature Flagging vs Branching
Dev Branch 1
Dev Branch 2
Master
Traditional
Feature Branching
Feature A
Feature B
Master Release
Types of Flags/Toggles
Release Toggles
Experiment Toggles
Ops Toggles
Permission Toggles
Use Cases
Early releases
Canary releases
Feature usage/monitoring
Kill switch
Maintenance Mode
Use Cases
Back end migrations
User targeting/beta invitations
Monitor less used features
Subscription management
.Net Libraries
 .Net Feature Flags
 Nfeature
 FeatureToggle
 FeatureSwitcher
 nToggle
 Toggler
 ….
Demo
 SaaS Solution
 Cloud based control panel
 Integrated with Azure DevOps & TFS
 Simple yet powerful
 Web hooks
 Integrations
 https://launchdarkly.com
Getting started with LaunchDarkly
 Install-Package LaunchDarkly.Client
 LdClient ldClient = new LdClient("YOUR_SDK_KEY");
User user = User.WithKey(username);
bool showFeature = ldClient.BoolVariation("your.feature.key", user,
false);
if (showFeature) {
// application code to show the feature
}
else {
// the code to run if the feature is off
}
Considerations
 Increased testing complexity
 Remove stale features
 Phase out feature flags when stable
 Decouple decision points
 Inversion of decision
 Avoid conditional branching
 Flag naming, Logging flag changes
 Control flag access
Further Reading
 https://martinfowler.com/bliki/FeatureToggle.html
 FeatureFlags.io
Questions?
Thank you!
linkedin.com/in/samfernandoau
www.slideshare.net/shamiraf

More Related Content

Similar to Feature flagging in .net

RailswayCon 2010 - Command Your Domain
RailswayCon 2010 - Command Your DomainRailswayCon 2010 - Command Your Domain
RailswayCon 2010 - Command Your Domain
Lourens Naudé
 
Application Lifecycle Management with TFS
Application Lifecycle Management with TFSApplication Lifecycle Management with TFS
Application Lifecycle Management with TFS
Mehdi Khalili
 

Similar to Feature flagging in .net (20)

DevOps (2).pptx
DevOps (2).pptxDevOps (2).pptx
DevOps (2).pptx
 
Feature Flags.pdf
Feature Flags.pdfFeature Flags.pdf
Feature Flags.pdf
 
Branching and Merging Practices
Branching and Merging Practices Branching and Merging Practices
Branching and Merging Practices
 
"Flagging your features — a DevOps approach to continuous release", Alex Thissen
"Flagging your features — a DevOps approach to continuous release", Alex Thissen"Flagging your features — a DevOps approach to continuous release", Alex Thissen
"Flagging your features — a DevOps approach to continuous release", Alex Thissen
 
RailswayCon 2010 - Command Your Domain
RailswayCon 2010 - Command Your DomainRailswayCon 2010 - Command Your Domain
RailswayCon 2010 - Command Your Domain
 
How to Manage the Risk of your Polyglot Environments
How to Manage the Risk of your Polyglot EnvironmentsHow to Manage the Risk of your Polyglot Environments
How to Manage the Risk of your Polyglot Environments
 
Dave Karow, Split. Powering Progressive Delivery With Data
Dave Karow, Split. Powering Progressive Delivery With DataDave Karow, Split. Powering Progressive Delivery With Data
Dave Karow, Split. Powering Progressive Delivery With Data
 
Continuous deployment
Continuous deploymentContinuous deployment
Continuous deployment
 
Application Lifecycle Management with TFS
Application Lifecycle Management with TFSApplication Lifecycle Management with TFS
Application Lifecycle Management with TFS
 
Debugging lightning components-SEDreamin17
Debugging lightning components-SEDreamin17Debugging lightning components-SEDreamin17
Debugging lightning components-SEDreamin17
 
Quality Leadership, Testing, and Governance Tactics that Make or Break Your P...
Quality Leadership, Testing, and Governance Tactics that Make or Break Your P...Quality Leadership, Testing, and Governance Tactics that Make or Break Your P...
Quality Leadership, Testing, and Governance Tactics that Make or Break Your P...
 
Devoxx UK 2019: "Testing Java Microservices: From Development to Production
Devoxx UK 2019: "Testing Java Microservices: From Development to ProductionDevoxx UK 2019: "Testing Java Microservices: From Development to Production
Devoxx UK 2019: "Testing Java Microservices: From Development to Production
 
Feature toggling
Feature togglingFeature toggling
Feature toggling
 
WoMakersCode 2016 - Shit Happens
WoMakersCode 2016 -  Shit HappensWoMakersCode 2016 -  Shit Happens
WoMakersCode 2016 - Shit Happens
 
CodeOne SF 2018: "Testing Java Microservices: From Development to Production"
CodeOne SF 2018: "Testing Java Microservices: From Development to Production"CodeOne SF 2018: "Testing Java Microservices: From Development to Production"
CodeOne SF 2018: "Testing Java Microservices: From Development to Production"
 
NashTech - Azure Application Insights
NashTech - Azure Application InsightsNashTech - Azure Application Insights
NashTech - Azure Application Insights
 
Merge hells - Feature Toggles to the rescue
Merge hells - Feature Toggles to the rescueMerge hells - Feature Toggles to the rescue
Merge hells - Feature Toggles to the rescue
 
TGT#19 - 3 seconds or less - Piotr Liss
TGT#19 - 3 seconds or less - Piotr LissTGT#19 - 3 seconds or less - Piotr Liss
TGT#19 - 3 seconds or less - Piotr Liss
 
Drools & jBPM Info Sheet
Drools & jBPM Info SheetDrools & jBPM Info Sheet
Drools & jBPM Info Sheet
 
Cloud Native Testing, 2020 Edition: A Modern Blueprint for Pre-production Tes...
Cloud Native Testing, 2020 Edition: A Modern Blueprint for Pre-production Tes...Cloud Native Testing, 2020 Edition: A Modern Blueprint for Pre-production Tes...
Cloud Native Testing, 2020 Edition: A Modern Blueprint for Pre-production Tes...
 

More from Sam Fernando

More from Sam Fernando (17)

Boost productivity using Microsoft Teams & PowerAutomate
Boost productivity using Microsoft Teams & PowerAutomateBoost productivity using Microsoft Teams & PowerAutomate
Boost productivity using Microsoft Teams & PowerAutomate
 
Logic Apps & Flow Custom Connectors
Logic Apps & Flow Custom ConnectorsLogic Apps & Flow Custom Connectors
Logic Apps & Flow Custom Connectors
 
Azure IoT - Global Azure Bootcamp 2019
Azure IoT - Global Azure Bootcamp 2019Azure IoT - Global Azure Bootcamp 2019
Azure IoT - Global Azure Bootcamp 2019
 
Azure Cognitive Services - Global Azure Bootcamp 2019
Azure Cognitive Services - Global Azure Bootcamp 2019Azure Cognitive Services - Global Azure Bootcamp 2019
Azure Cognitive Services - Global Azure Bootcamp 2019
 
Azure API Management - Global Azure Bootcamp 2019
Azure API Management - Global Azure Bootcamp 2019Azure API Management - Global Azure Bootcamp 2019
Azure API Management - Global Azure Bootcamp 2019
 
Introduction to Microsoft Power Platform (PowerApps, Flow)
Introduction to Microsoft Power Platform (PowerApps, Flow)Introduction to Microsoft Power Platform (PowerApps, Flow)
Introduction to Microsoft Power Platform (PowerApps, Flow)
 
Dynamics 365 - Admin Tips & Tricks
Dynamics 365 - Admin Tips & TricksDynamics 365 - Admin Tips & Tricks
Dynamics 365 - Admin Tips & Tricks
 
Dynamics 365 what's new in October 2018 Release
Dynamics 365 what's new in October 2018 Release Dynamics 365 what's new in October 2018 Release
Dynamics 365 what's new in October 2018 Release
 
Dynamics 365 Saturday Melbourne - AI & Bots with Dynamics
Dynamics 365 Saturday Melbourne - AI & Bots with Dynamics Dynamics 365 Saturday Melbourne - AI & Bots with Dynamics
Dynamics 365 Saturday Melbourne - AI & Bots with Dynamics
 
Enterprise Content Sharing Bots & AI
Enterprise Content Sharing Bots & AIEnterprise Content Sharing Bots & AI
Enterprise Content Sharing Bots & AI
 
Going Serverless with Azure Functions
Going Serverless with Azure FunctionsGoing Serverless with Azure Functions
Going Serverless with Azure Functions
 
Adelaide D365 UG November 2017 - Microsoft Flow + Logic Apps
Adelaide D365 UG November 2017 - Microsoft Flow + Logic AppsAdelaide D365 UG November 2017 - Microsoft Flow + Logic Apps
Adelaide D365 UG November 2017 - Microsoft Flow + Logic Apps
 
Introduction to Microsoft Bot Framework
Introduction to Microsoft Bot FrameworkIntroduction to Microsoft Bot Framework
Introduction to Microsoft Bot Framework
 
Adelaide D365 UG June 2017 - Making Dynamics 365 Smart using Microsoft Cognit...
Adelaide D365 UG June 2017 - Making Dynamics 365 Smart using Microsoft Cognit...Adelaide D365 UG June 2017 - Making Dynamics 365 Smart using Microsoft Cognit...
Adelaide D365 UG June 2017 - Making Dynamics 365 Smart using Microsoft Cognit...
 
Adelaide D365 UG June 2017 - Introduction to Microsoft Bot Framework
Adelaide D365 UG June 2017 - Introduction to Microsoft Bot FrameworkAdelaide D365 UG June 2017 - Introduction to Microsoft Bot Framework
Adelaide D365 UG June 2017 - Introduction to Microsoft Bot Framework
 
Adelaide D365 UG May 2017 - Connected Field Services
Adelaide D365 UG May 2017 - Connected Field ServicesAdelaide D365 UG May 2017 - Connected Field Services
Adelaide D365 UG May 2017 - Connected Field Services
 
Adelaide D365 UG April 2017 - Intro to CRM Portals
Adelaide D365 UG April 2017 - Intro to CRM PortalsAdelaide D365 UG April 2017 - Intro to CRM Portals
Adelaide D365 UG April 2017 - Intro to CRM Portals
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 

Feature flagging in .net