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.

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

24 views

Published on

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

Published in: Education
  • Be the first to comment

  • 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

×