SlideShare a Scribd company logo
FeatureToggles: Dynamic
Configuration atWirex
I pay my way.
I pay by Wirex.
We give you the power to use your
money, your way, on one borderless
payment platform. Buy, store,
exchange and spend your digital or
traditional currencies, anytime,
anywhere.
First try
Expansion to clients
Growing inside
Feature Toggle
Example
Feature Toggles: First Try
if (FeatureAvailable(“OrderCard”))
ShowOrderCardButton( );
else
ShowWaitingListPage( );
Old Backend
Backend Workers
Azure Service Bus
API
Feature Toggles: First Try
Maintenance
200; false
GET /ismaintenance
200; true
500
ClientsAPI
Feature Toggles: First Try
Enabling
maintenance
IsMaintenance = true
DevOps
API
Config
Feature Toggles: First Try
Maintenance
as a Kill-Switch
Feature Toggles: First Try
if (IsUnderMaintenance)
ShowMaintenancePage( );
else
ShowHomePage( );
First try
Expansion to clients
Growing inside
Feature
Context
Feature name Enabled
True
False
“Exchange”
“Transfer”
Feature Toggles: Growing inside
Feature Context
• Email
• Country
• Verification Status
Feature Toggles: Growing inside
Features DB
Architecture
1
Feature Rule Set
1…n
Rules
1
1…n
Feature Toggles: Growing inside
Rule sets
Priority Name
100
Type Reason
10 000
20 000
Allow all
Allow all
Deny all
Allow
Allow
Deny
-
-
Unavailable
Feature Toggles: Growing inside
Rules
Value Property Operator
“UA” “Country” “Equals”
“autotest” “Email” “StartsWith”
Feature Toggles: Growing inside
Example
User
1
“UK”
User
2
“FR”
xV
Feature Toggles: Growing inside
Feature
Validation
Redis
API
DB
Backend
UserContext
Feature Toggles: Growing inside
Get Features:
Improvements
Features
Version hash
. . .
. . .
. . .
. . .
Feature Toggles: Growing inside
In – memory cache
API
Node 1
Node 2
Redis
Feature Toggles: Growing inside
Feature
validation
ClientsAPI
Configuration
Microservices
Workers
Feature Toggles: Growing inside
Validation
issue
time
Client
Request
Feature
changed
API
Validation
V x
Transactions
Validation
Feature Toggles: Growing inside
FiatAccount
Redis
Service
Redis
No
FA
Yes
Use Redis?
Feature Toggles: Growing inside
First try
Expansion to clients
Growing inside
Namespaces
backend.CardOrder
backend.tech.NewRedisClient
client.public.NewSignupFlow
Feature Toggles: Expansion to clients
Client
Features
Clients
GET /features
Configuration
1) Built in
2) Dynamic API Clients
Feature Toggles: Expansion to clients
Actions
Global actions
Object actions:
• Profile
• Accounts
• Cards
Feature Toggles: Expansion to clients
Global
Actions
GET /actions
Profile:
VerifyDocuments: “AlreadyDone”
ChangeCountry: “NotAllowed”
VerifyPhone: allowed
Feature Toggles: Expansion to clients
Evaluation
chains
IsFeatureAvailable
IsProfileVerified
IsNotNegativeBalance
Chain
Feature Toggles: Expansion to clients
Evaluation
chains
IsFeatureAvailable
IsProfileVerified
IsNotNegativeBalance
Chain
Reason:
Not available
Allowed: false
No
Feature Toggles: Expansion to clients
Change flow
GET /cards/{id}
Actions:
Validate: allowed
SetPIN: “NotAllowed”
LinkAccounts: “PinRequired”
Activate: “AccountsRequired”
Feature Toggles: Expansion to clients
Change flow
Actions:
Validate: “AlreadyDone”
SetPIN: allowed
LinkAccounts: “PinRequired”
Activate: “AccountsRequired”
Feature Toggles: Expansion to clients
GET /cards/{id}
Change flow
Actions:
Validate: allowed
SetPIN: “Notallowed”
LinkAccounts: “PinRequired”
Activate: “AccountsRequired”
Feature Toggles: Expansion to clients
GET /cards/{id}
Change flow
Actions:
Validate: “AlreadyDone”
SetPIN: “Notallowed”
LinkAccounts: “PinRequired”
Activate: “Allowed”
Feature Toggles: Expansion to clients
GET /cards/{id}
Validation
Validation
Back End
Clients
Validation
API
Feature Toggles: Expansion to clients
Actions
updating
Backend
Clients
disable
feature
AdminPanel
actions
updated
Feature Toggles: Expansion to clients
Планы на
Thank you!
https://wirexapp.com
facebook.com/WirexRnD/
career@wirexapp.com

More Related Content

More from NETFest (20)

PDF
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
NETFest
 
PPTX
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
NETFest
 
PPTX
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET
NETFest
 
PPTX
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
NETFest
 
PPTX
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
NETFest
 
PPTX
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
NETFest
 
PPTX
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...
NETFest
 
PPTX
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture
NETFest
 
PPTX
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests
NETFest
 
PPTX
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
NETFest
 
PPTX
.NET Fest 2019. Roberto Freato. Azure App Service deep dive
NETFest
 
PPTX
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production
NETFest
 
PPTX
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com...
NETFest
 
PDF
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
NETFest
 
PDF
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem
NETFest
 
PPTX
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...
NETFest
 
PPTX
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...
NETFest
 
PPTX
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
NETFest
 
PDF
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
NETFest
 
PDF
.NET Fest 2019. Eran Stiller. 6 Lessons I Learned on My Journey from Monolith...
NETFest
 
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
NETFest
 
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
NETFest
 
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET
NETFest
 
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
NETFest
 
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
NETFest
 
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
NETFest
 
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...
NETFest
 
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture
NETFest
 
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests
NETFest
 
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
NETFest
 
.NET Fest 2019. Roberto Freato. Azure App Service deep dive
NETFest
 
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production
NETFest
 
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com...
NETFest
 
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
NETFest
 
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem
NETFest
 
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...
NETFest
 
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...
NETFest
 
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
NETFest
 
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
NETFest
 
.NET Fest 2019. Eran Stiller. 6 Lessons I Learned on My Journey from Monolith...
NETFest
 

Recently uploaded (20)

PPTX
ENGlish 8 lesson presentation PowerPoint.pptx
marawehsvinetshe
 
PPTX
infertility, types,causes, impact, and management
Ritu480198
 
PPTX
How to Manage Allocation Report for Manufacturing Orders in Odoo 18
Celine George
 
PDF
Horarios de distribución de agua en julio
pegazohn1978
 
PPTX
care of patient with elimination needs.pptx
Rekhanjali Gupta
 
PDF
I3PM Industry Case Study Siemens on Strategic and Value-Oriented IP Management
MIPLM
 
PDF
Governor Josh Stein letter to NC delegation of U.S. House
Mebane Rash
 
PPTX
HUMAN RESOURCE MANAGEMENT: RECRUITMENT, SELECTION, PLACEMENT, DEPLOYMENT, TRA...
PRADEEP ABOTHU
 
PPTX
How to Configure Re-Ordering From Portal in Odoo 18 Website
Celine George
 
PPTX
Difference between write and update in odoo 18
Celine George
 
PDF
Android Programming - Basics of Mobile App, App tools and Android Basics
Kavitha P.V
 
PPTX
Introduction to Indian Writing in English
Trushali Dodiya
 
PDF
I3PM Case study smart parking 2025 with uptoIP® and ABP
MIPLM
 
PDF
STATEMENT-BY-THE-HON.-MINISTER-FOR-HEALTH-ON-THE-COVID-19-OUTBREAK-AT-UG_revi...
nservice241
 
PDF
Week 2 - Irish Natural Heritage Powerpoint.pdf
swainealan
 
PDF
WATERSHED MANAGEMENT CASE STUDIES - ULUGURU MOUNTAINS AND ARVARI RIVERpdf
Ar.Asna
 
DOCX
Lesson 1 - Nature and Inquiry of Research
marvinnbustamante1
 
PDF
Council of Chalcedon Re-Examined
Smiling Lungs
 
PDF
AI-assisted IP-Design lecture from the MIPLM 2025
MIPLM
 
PPTX
DIGITAL CITIZENSHIP TOPIC TLE 8 MATATAG CURRICULUM
ROBERTAUGUSTINEFRANC
 
ENGlish 8 lesson presentation PowerPoint.pptx
marawehsvinetshe
 
infertility, types,causes, impact, and management
Ritu480198
 
How to Manage Allocation Report for Manufacturing Orders in Odoo 18
Celine George
 
Horarios de distribución de agua en julio
pegazohn1978
 
care of patient with elimination needs.pptx
Rekhanjali Gupta
 
I3PM Industry Case Study Siemens on Strategic and Value-Oriented IP Management
MIPLM
 
Governor Josh Stein letter to NC delegation of U.S. House
Mebane Rash
 
HUMAN RESOURCE MANAGEMENT: RECRUITMENT, SELECTION, PLACEMENT, DEPLOYMENT, TRA...
PRADEEP ABOTHU
 
How to Configure Re-Ordering From Portal in Odoo 18 Website
Celine George
 
Difference between write and update in odoo 18
Celine George
 
Android Programming - Basics of Mobile App, App tools and Android Basics
Kavitha P.V
 
Introduction to Indian Writing in English
Trushali Dodiya
 
I3PM Case study smart parking 2025 with uptoIP® and ABP
MIPLM
 
STATEMENT-BY-THE-HON.-MINISTER-FOR-HEALTH-ON-THE-COVID-19-OUTBREAK-AT-UG_revi...
nservice241
 
Week 2 - Irish Natural Heritage Powerpoint.pdf
swainealan
 
WATERSHED MANAGEMENT CASE STUDIES - ULUGURU MOUNTAINS AND ARVARI RIVERpdf
Ar.Asna
 
Lesson 1 - Nature and Inquiry of Research
marvinnbustamante1
 
Council of Chalcedon Re-Examined
Smiling Lungs
 
AI-assisted IP-Design lecture from the MIPLM 2025
MIPLM
 
DIGITAL CITIZENSHIP TOPIC TLE 8 MATATAG CURRICULUM
ROBERTAUGUSTINEFRANC
 
Ad

.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex

Editor's Notes