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.

Introduction to Feature Toggle and FF4J

3,438 views

Published on

Introduction to feature toggle, a list of use cases and illustration with the ff4j framework. As founder i presented the reference customer, the capibilities and the roadmap

  • Be the first to comment

Introduction to Feature Toggle and FF4J

  1. 1. www.parisjug.org 1 Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  2. 2. 2 PROPOSITION DE FEATURE TOGGLE Cédrick Lunven 10 novembre 2015
  3. 3. 3 I. Introduction III. FF4J Agenda  Continuous Delivery  Infrastructure  Business Toggle  About me  Feature Toggle  Introduction  Main concepts  Capabilities  Resources  Backlog  Recrutement II. Use Cases IV. Bonus Tracks Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  4. 4. 4 Cédrick Lunven https://github.com/clun https://fr.linkedin.com/in/clunven Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique @clunven Release FF4J Version 1.0.0 INTRODUCTION 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015
  5. 5. 5 Data Service Presentation Feature Feature INTRODUCTION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  6. 6. 6 Feature Toggle Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique INTRODUCTION check « true » Feature OFF ON « false »
  7. 7. 7 Feature Toggle Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique INTRODUCTION
  8. 8. 8 Feature Toggle Enable & disable Features At Runtime Through dedicated GUI Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique INTRODUCTION
  9. 9. 9 Feature Toggle + Enable ? « yes » Feature OFF ON « no » Permissions unauthorized « granted » users ACL INTRODUCTION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  10. 10. 10 Here is the Magic Feature Toggle ++ INTRODUCTION Business Toggle Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique Enable ? « yes » Feature OFF ON « no » Permissions unauthorized « granted » users ACL Custom strategy « Predicate = true »
  11. 11. 11 I. Introduction III. FF4J Agenda  Continuous Delivery  Infrastructure  Business Toggle  Introduction  Main concepts  Capabilities  Resources  Backlog  Recrutement II. Use cases IV. Bonus Tracks I. Introduction  About me  Feature Toggling ? Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  12. 12. 12 USE CASES Use cases Continuous Delivery Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  13. 13. 13 Fork branch « f1 » Merge branch « f2 » conflicts Release Issues => Rollback Release Trunk f1 => false ReleaseRelease Trunk f2 => false f1 => true Issues => f1 = false Avoid Feature branching CONTINOUS DELIVERY : : USE CASES Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  14. 14. 14 Version N Version N+1 users beta testers Dedicated infra? Version N+1 F. Toggle users beta testers Check Profile Canary Release CONTINOUS DELIVERY : : USE CASES Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  15. 15. 15 Load-Balancer Version N Version N F. Toggle F. Toggle « on » Load-Balancer Version N+1 Version N+1 F. Toggle F. Toggle Load-Balancer Version N Version N+1 Consistency ? Blue / Green Deployments CONTINOUS DELIVERY : : USE CASES Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  16. 16. 16 Load-Balancer Version N Version N+1 Complex Policy Version N+1 Version N+1 F. Toggle F. Toggle Load-Balancer Round robin Check Weights Dark Launch CONTINOUS DELIVERY : : USE CASES Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  17. 17. 17 USE CASES Use cases Architecture & Infrastructure Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  18. 18. 18 Application Ouverture Des SOLDES DDOs F. Toggle Application ARCHITECTURE : : USE CASES Graceful degradation Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  19. 19. 19 Default resources Feature Toggle Degraded Behaviour Application ARCHITECTURE : : USE CASES Circuit Breaker Toggle “OFF” Breaker Strategy Monitoring Toggle “OFF” Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  20. 20. 20 Default resources #2 -Toggle “OFF” F. Toggle Strategy #1 - Check : •Availability •Latency, •Response time, •Errors… Degraded Behaviour Application Networking et Security WhiteList BlackList HostName Throttling ARCHITECTURE : : USE CASES Load Balancing Region Based Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  21. 21. 21 USE CASES Use cases Business Toggle Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  22. 22. 22 Business Toggle OfficeHour Release Date Expression Rules Engine A/B Testing BUSINESS RULES Enable ? « yes » Feature OFF ON « no » Permissions unauthorized « granted » Custom strategy « Predicate = true »
  23. 23. 23 Le Feature Toggle ne doit pas être perçu uniquement comme une astuce technique pour éviter les branches (.. et introduire de la dette technique). Bien employé, il apporte une vraie souplesse et de la valeur ajoutée pour adresser de nombreux cas d’usages. Synthèse USE CASES Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  24. 24. 24 I. Introduction III. FF4J Agenda  Continuous Delivery  Infrastructure  Business Toggle  About me  Feature Toggling ?  Introduction  Main concepts  Capabilities  Resources  Backlog  Recruitment II. Use cases IV. Bonus Tracks Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  25. 25. 25 FF4J (ff4j.org) Feature Flipping for Java Created in 2013 Github (84✭) SECTION II : IMPLEMENTATION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  26. 26. 26 Maven Central SECTION II : IMPLEMENTATION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  27. 27. 27 Feature SECTION II : IMPLEMENTATION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  28. 28. 28 Feature SECTION II : IMPLEMENTATION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  29. 29. 29 FeatureStore FF4j Import/load Feature Store Inject/ Init SECTION II : IMPLEMENTATION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  30. 30. 30 Feature Store SECTION II : IMPLEMENTATION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique App A F. Toggle App B F. Toggle Toggle Toggle Storage F. Toggle Service Admin F. Toggle Console App A F. Toggle Client App B F. Toggle Client App C F. Toggle Client
  31. 31. 31 Feature Store SECTION II : IMPLEMENTATION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  32. 32. 32 FF4j SECTION II : IMPLEMENTATION FeatureStore FF4j Import/load Inject/ Init Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  33. 33. 33 Permissions SECTION II : IMPLEMENTATION Enable ? « yes » Feature OFF ON « no » Permissions unauthorized « granted » users ACL FeatureStore AuthorizationManager Import/load Inject/ Init FF4j Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  34. 34. 34 Roles Integration Spring Permissions SECTION II : IMPLEMENTATION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  35. 35. 35 Enable ? « yes » Feature OFF ON « no » Permissio ns unauthorized « granted » users ACL Custom strategy « Predicate = true » Flipping Strategy SECTION II : IMPLEMENTATION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  36. 36. 36 Administration Console SECTION II : IMPLEMENTATION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  37. 37. 37Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  38. 38. 38 - - - SECTION II : IMPLEMENTATION
  39. 39. 39 Toggling through AOP SECTION II : IMPLEMENTATION
  40. 40. 40 App1 ff4j Store Node B ff4j Store Node A App2 ff4j Store Node B ff4j Store Node A Cache Cache App ff4j Store Node B ff4j Store Node A Cache FF4j AuthorizationManager FeatureStoreCacheProxy FeatureStore Caching SECTION II : IMPLEMENTATION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  41. 41. 41 Taglib SECTION II : IMPLEMENTATION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  42. 42. 42 Feature Group SECTION II : IMPLEMENTATION
  43. 43. 43 ff4j Store App REST API PHP JS .NET Devices SECTION II : IMPLEMENTATION . . .REST API
  44. 44. 44 ff4j Store App Console REST API Console StandAlone Console standalone Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique SECTION II : IMPLEMENTATION
  45. 45. 45 Console standalone SECTION II : IMPLEMENTATION
  46. 46. 46 SECTION II : IMPLEMENTATION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique . . .Monitoring
  47. 47. 47 ff4j Store App MBEAN Support JMX Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique SECTION II : IMPLEMENTATION
  48. 48. 48 Properties SECTION II : IMPLEMENTATION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  49. 49. 49 Property Store SECTION II : IMPLEMENTATION PropertyStore FF4j Import/load Inject/ Init Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  50. 50. 50 Property Store SECTION II : IMPLEMENTATION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  51. 51. 51 Autowiring ! SECTION II : IMPLEMENTATION Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  52. 52. 52 I. Introduction III. FF4J Agenda  Continuous Delivery  Infrastructure  Business Toggle  Introduction  Main Concepts  Capabilities  Resources  Backlog  Recrutement II. Use cases IV. Bonus Tracks  About me  Feature Toggling ? Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  53. 53. 53 Getting Started SECTION III : Bonus track https://github.com/clun/ff4j-extra/tree/master/ff4j-samples
  54. 54. 54 Getting Support SECTION III : Bonus track 2 1
  55. 55. 55 Roadmap CassandraElasticSearch Eureka CouchDB Consul ZooKeeper NoSQL Service Registry … … Spring-Data HazelCastCache Aerospike HBase … Permissions Shiro OAuth2 NPM Install JAAS JCache JPA FeatureStore / PropertiesStore Others SECTION III : Bonus track Archaius
  56. 56. 56 Pourquoi pas vous ? SECTION III : Bonus track
  57. 57. 57 Test, comment, react, Tweet.. Thank You !
  58. 58. 58 Sponsors 5821/11/2015
  59. 59. 59 FF4j vs Togglz (1) APPENDICES
  60. 60. 60 Togglz INTRODUCTION
  61. 61. FF4J FF4J FEATURE FLIPPING FOR JAVA Storage Feature AOP Flipping Custom Rules Audit REST API Caching Toggle Groups Roles ACL Import Export Taglib Custom Properties Consoles RDBMS Mongo Redis http Client In Memory Servlet J2E FullStack JMX SSH
  62. 62. FF4J FF4J

×