Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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, ...
First try
Expansion to clients
Growing inside
Feature Toggle
Example
Feature Toggles: First Try
if (FeatureAvailable(“OrderCard”))
ShowOrderCardButton( );
else
ShowWait...
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
Featur...
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 i...
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 clien...
Actions
Global actions
Object actions:
• Profile
• Accounts
• Cards
Feature Toggles: Expansion to clients
Global
Actions
GET /actions
Profile:
VerifyDocuments: “AlreadyDone”
ChangeCountry: “NotAllowed”
VerifyPhone: allowed
Featu...
Evaluation
chains
IsFeatureAvailable
IsProfileVerified
IsNotNegativeBalance
Chain
Feature Toggles: Expansion to clients
Evaluation
chains
IsFeatureAvailable
IsProfileVerified
IsNotNegativeBalance
Chain
Reason:
Not available
Allowed: false
No
...
Change flow
GET /cards/{id}
Actions:
Validate: allowed
SetPIN: “NotAllowed”
LinkAccounts: “PinRequired”
Activate: “Account...
Change flow
Actions:
Validate: “AlreadyDone”
SetPIN: allowed
LinkAccounts: “PinRequired”
Activate: “AccountsRequired”
Feat...
Change flow
Actions:
Validate: allowed
SetPIN: “Notallowed”
LinkAccounts: “PinRequired”
Activate: “AccountsRequired”
Featu...
Change flow
Actions:
Validate: “AlreadyDone”
SetPIN: “Notallowed”
LinkAccounts: “PinRequired”
Activate: “Allowed”
Feature ...
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
Upcoming SlideShare
Loading in …5
×

of

.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 1 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 2 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 3 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 4 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 5 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 6 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 7 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 8 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 9 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 10 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 11 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 12 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 13 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 14 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 15 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 16 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 17 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 18 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 19 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 20 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 21 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 22 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 23 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 24 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 25 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 26 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 27 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 28 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 29 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 30 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 31 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 32 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 33 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 34 .NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex Slide 35
Upcoming SlideShare
What to Upload to SlideShare
Next

0 Likes

Share

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

Я розповім про еволюцію фіча тоглів у компанії та наш досвід їх використання. Пройдемось покроково в їх розвитку:
Від файлу конфігурації зі звичайним kill-switch для ввімкнення меінтенансу, який вмикав/вимикав доступ до сервісів одразу всім користувачам. До гнучкої системи з набору правил з пріоритетами з гранулярністю від країни, штату до окремого користувача.
Від редагування через базу даних до панелі адміністратора та автоматизованих змін залежно від подій в системі.
А також розповім про actions - комбінацію фіча тоглів та правил бізнес-логіки для динамічного інтерфейсу клієнтів на основі доступних дій користувачу.

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

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

  1. 1. FeatureToggles: Dynamic Configuration atWirex
  2. 2. 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.
  3. 3. First try Expansion to clients Growing inside
  4. 4. Feature Toggle Example Feature Toggles: First Try if (FeatureAvailable(“OrderCard”)) ShowOrderCardButton( ); else ShowWaitingListPage( );
  5. 5. Old Backend Backend Workers Azure Service Bus API Feature Toggles: First Try
  6. 6. Maintenance 200; false GET /ismaintenance 200; true 500 ClientsAPI Feature Toggles: First Try
  7. 7. Enabling maintenance IsMaintenance = true DevOps API Config Feature Toggles: First Try
  8. 8. Maintenance as a Kill-Switch Feature Toggles: First Try if (IsUnderMaintenance) ShowMaintenancePage( ); else ShowHomePage( );
  9. 9. First try Expansion to clients Growing inside
  10. 10. Feature Context Feature name Enabled True False “Exchange” “Transfer” Feature Toggles: Growing inside
  11. 11. Feature Context • Email • Country • Verification Status Feature Toggles: Growing inside
  12. 12. Features DB Architecture 1 Feature Rule Set 1…n Rules 1 1…n Feature Toggles: Growing inside
  13. 13. 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
  14. 14. Rules Value Property Operator “UA” “Country” “Equals” “autotest” “Email” “StartsWith” Feature Toggles: Growing inside
  15. 15. Example User 1 “UK” User 2 “FR” xV Feature Toggles: Growing inside
  16. 16. Feature Validation Redis API DB Backend UserContext Feature Toggles: Growing inside
  17. 17. Get Features: Improvements Features Version hash . . . . . . . . . . . . Feature Toggles: Growing inside
  18. 18. In – memory cache API Node 1 Node 2 Redis Feature Toggles: Growing inside
  19. 19. Feature validation ClientsAPI Configuration Microservices Workers Feature Toggles: Growing inside
  20. 20. Validation issue time Client Request Feature changed API Validation V x Transactions Validation Feature Toggles: Growing inside
  21. 21. FiatAccount Redis Service Redis No FA Yes Use Redis? Feature Toggles: Growing inside
  22. 22. First try Expansion to clients Growing inside
  23. 23. Namespaces backend.CardOrder backend.tech.NewRedisClient client.public.NewSignupFlow Feature Toggles: Expansion to clients
  24. 24. Client Features Clients GET /features Configuration 1) Built in 2) Dynamic API Clients Feature Toggles: Expansion to clients
  25. 25. Actions Global actions Object actions: • Profile • Accounts • Cards Feature Toggles: Expansion to clients
  26. 26. Global Actions GET /actions Profile: VerifyDocuments: “AlreadyDone” ChangeCountry: “NotAllowed” VerifyPhone: allowed Feature Toggles: Expansion to clients
  27. 27. Evaluation chains IsFeatureAvailable IsProfileVerified IsNotNegativeBalance Chain Feature Toggles: Expansion to clients
  28. 28. Evaluation chains IsFeatureAvailable IsProfileVerified IsNotNegativeBalance Chain Reason: Not available Allowed: false No Feature Toggles: Expansion to clients
  29. 29. Change flow GET /cards/{id} Actions: Validate: allowed SetPIN: “NotAllowed” LinkAccounts: “PinRequired” Activate: “AccountsRequired” Feature Toggles: Expansion to clients
  30. 30. Change flow Actions: Validate: “AlreadyDone” SetPIN: allowed LinkAccounts: “PinRequired” Activate: “AccountsRequired” Feature Toggles: Expansion to clients GET /cards/{id}
  31. 31. Change flow Actions: Validate: allowed SetPIN: “Notallowed” LinkAccounts: “PinRequired” Activate: “AccountsRequired” Feature Toggles: Expansion to clients GET /cards/{id}
  32. 32. Change flow Actions: Validate: “AlreadyDone” SetPIN: “Notallowed” LinkAccounts: “PinRequired” Activate: “Allowed” Feature Toggles: Expansion to clients GET /cards/{id}
  33. 33. Validation Validation Back End Clients Validation API Feature Toggles: Expansion to clients
  34. 34. Actions updating Backend Clients disable feature AdminPanel actions updated Feature Toggles: Expansion to clients
  35. 35. Планы на Thank you! https://wirexapp.com facebook.com/WirexRnD/ career@wirexapp.com

Я розповім про еволюцію фіча тоглів у компанії та наш досвід їх використання. Пройдемось покроково в їх розвитку: Від файлу конфігурації зі звичайним kill-switch для ввімкнення меінтенансу, який вмикав/вимикав доступ до сервісів одразу всім користувачам. До гнучкої системи з набору правил з пріоритетами з гранулярністю від країни, штату до окремого користувача. Від редагування через базу даних до панелі адміністратора та автоматизованих змін залежно від подій в системі. А також розповім про actions - комбінацію фіча тоглів та правил бізнес-логіки для динамічного інтерфейсу клієнтів на основі доступних дій користувачу.

Views

Total views

285

On Slideshare

0

From embeds

0

Number of embeds

0

Actions

Downloads

0

Shares

0

Comments

0

Likes

0

×