SlideShare une entreprise Scribd logo
1  sur  62
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
PROPOSITION DE
FEATURE TOGGLE
Cédrick Lunven
10 novembre 2015
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
37Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité -
Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
38
- - -
SECTION II : IMPLEMENTATION
39
Toggling through AOP
SECTION II : IMPLEMENTATION
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
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
Feature Group
SECTION II : IMPLEMENTATION
43
ff4j
Store
App
REST API
PHP
JS
.NET
Devices
SECTION II : IMPLEMENTATION
. . .REST API
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
Console standalone
SECTION II : IMPLEMENTATION
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
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
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
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
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
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
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
Getting Started
SECTION III : Bonus track
https://github.com/clun/ff4j-extra/tree/master/ff4j-samples
54
Getting Support
SECTION III : Bonus track
2
1
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
Pourquoi pas vous ?
SECTION III : Bonus track
57
Test, comment, react, Tweet..
Thank You !
58
Sponsors
5821/11/2015
59
FF4j vs Togglz (1)
APPENDICES
60
Togglz
INTRODUCTION
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
FF4J
FF4J

Contenu connexe

Tendances

Code Coverage Revised : EclEmma on JaCoCo
Code Coverage Revised : EclEmma on JaCoCoCode Coverage Revised : EclEmma on JaCoCo
Code Coverage Revised : EclEmma on JaCoCo
Evgeny Mandrikov
 

Tendances (20)

Google cloud functions
Google cloud functionsGoogle cloud functions
Google cloud functions
 
Salesforce DevOps using GitHub Action
Salesforce DevOps using GitHub ActionSalesforce DevOps using GitHub Action
Salesforce DevOps using GitHub Action
 
GitHub Actions with Node.js
GitHub Actions with Node.jsGitHub Actions with Node.js
GitHub Actions with Node.js
 
IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교
 
Code Coverage Revised : EclEmma on JaCoCo
Code Coverage Revised : EclEmma on JaCoCoCode Coverage Revised : EclEmma on JaCoCo
Code Coverage Revised : EclEmma on JaCoCo
 
CI/CD with Github Actions
CI/CD with Github ActionsCI/CD with Github Actions
CI/CD with Github Actions
 
Continuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CIContinuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CI
 
Windows Automation with Ansible
Windows Automation with Ansible Windows Automation with Ansible
Windows Automation with Ansible
 
Case Study: Migration to GitLab (from Bitbucket) at AppsFlyer
Case Study: Migration to GitLab (from Bitbucket) at AppsFlyerCase Study: Migration to GitLab (from Bitbucket) at AppsFlyer
Case Study: Migration to GitLab (from Bitbucket) at AppsFlyer
 
Introduction to Unified Functional Testing 12 (UFT)
Introduction to Unified Functional Testing 12 (UFT)Introduction to Unified Functional Testing 12 (UFT)
Introduction to Unified Functional Testing 12 (UFT)
 
Git Branch
Git BranchGit Branch
Git Branch
 
Devops Mindset Essentials
Devops Mindset EssentialsDevops Mindset Essentials
Devops Mindset Essentials
 
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
 
Mule memory leak issue
Mule memory leak issueMule memory leak issue
Mule memory leak issue
 
Microservices Architecture, Monolith Migration Patterns
Microservices Architecture, Monolith Migration PatternsMicroservices Architecture, Monolith Migration Patterns
Microservices Architecture, Monolith Migration Patterns
 
Test Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and CucumberTest Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and Cucumber
 
Database Change Management as a Service
Database Change Management as a ServiceDatabase Change Management as a Service
Database Change Management as a Service
 
Introduction to Serverless and Google Cloud Functions
Introduction to Serverless and Google Cloud FunctionsIntroduction to Serverless and Google Cloud Functions
Introduction to Serverless and Google Cloud Functions
 
Prometheus
PrometheusPrometheus
Prometheus
 
Git flow Introduction
Git flow IntroductionGit flow Introduction
Git flow Introduction
 

En vedette

Feature Toggles
Feature TogglesFeature Toggles
Feature Toggles
Devi Sridharan
 
Continuous delivery chapter13
Continuous delivery chapter13Continuous delivery chapter13
Continuous delivery chapter13
favril1
 
Why we used Feature Branching
Why we used Feature BranchingWhy we used Feature Branching
Why we used Feature Branching
Alan Parkinson
 

En vedette (12)

Feature Toggles On Steroids
Feature Toggles On SteroidsFeature Toggles On Steroids
Feature Toggles On Steroids
 
Feature Toggles
Feature TogglesFeature Toggles
Feature Toggles
 
Continuous delivery chapter13
Continuous delivery chapter13Continuous delivery chapter13
Continuous delivery chapter13
 
Faster & Less Risky Releases with Feature Flags
Faster & Less Risky Releases with Feature FlagsFaster & Less Risky Releases with Feature Flags
Faster & Less Risky Releases with Feature Flags
 
[@NaukriEngineering] Feature Toggles
[@NaukriEngineering] Feature Toggles[@NaukriEngineering] Feature Toggles
[@NaukriEngineering] Feature Toggles
 
[@NaukriEngineering] BDD implementation using Cucumber
[@NaukriEngineering] BDD implementation using Cucumber[@NaukriEngineering] BDD implementation using Cucumber
[@NaukriEngineering] BDD implementation using Cucumber
 
Why we used Feature Branching
Why we used Feature BranchingWhy we used Feature Branching
Why we used Feature Branching
 
Feature Toggle XP Conference 2016 Kalpana Gulati
Feature Toggle  XP Conference 2016 Kalpana GulatiFeature Toggle  XP Conference 2016 Kalpana Gulati
Feature Toggle XP Conference 2016 Kalpana Gulati
 
Feature Flags Are Flawed: Let's Make Them Better
Feature Flags Are Flawed: Let's Make Them BetterFeature Flags Are Flawed: Let's Make Them Better
Feature Flags Are Flawed: Let's Make Them Better
 
Feature Flagging to Reduce Risk in Database Migrations
Feature Flagging to Reduce Risk in Database Migrations Feature Flagging to Reduce Risk in Database Migrations
Feature Flagging to Reduce Risk in Database Migrations
 
The Cultural Changes of Feature Flagging
The Cultural Changes of Feature FlaggingThe Cultural Changes of Feature Flagging
The Cultural Changes of Feature Flagging
 
Oracle order management implementation manual
Oracle order management implementation manualOracle order management implementation manual
Oracle order management implementation manual
 

Similaire à Introduction to Feature Toggle and FF4J

Soiré soire soa -logica
Soiré soire soa -logicaSoiré soire soa -logica
Soiré soire soa -logica
Alahyane Ahmed
 
BluAge sopra mdday2010
BluAge sopra mdday2010BluAge sopra mdday2010
BluAge sopra mdday2010
MD DAY
 
Elaboration du Catalogue de Service IT du Consortium Stade de France
Elaboration du Catalogue de Service IT du Consortium Stade de FranceElaboration du Catalogue de Service IT du Consortium Stade de France
Elaboration du Catalogue de Service IT du Consortium Stade de France
itSMF France
 
Agile Tour Paris 2014 : "La Contractualisation Agile C'est Possible" à La Pos...
Agile Tour Paris 2014 : "La Contractualisation Agile C'est Possible" à La Pos...Agile Tour Paris 2014 : "La Contractualisation Agile C'est Possible" à La Pos...
Agile Tour Paris 2014 : "La Contractualisation Agile C'est Possible" à La Pos...
ENSIBS
 

Similaire à Introduction to Feature Toggle and FF4J (20)

Paris Meetup Jhispter #9 - Generator FF4j for Jhipster
Paris Meetup Jhispter #9 - Generator FF4j for JhipsterParis Meetup Jhispter #9 - Generator FF4j for Jhipster
Paris Meetup Jhispter #9 - Generator FF4j for Jhipster
 
Riviera JUG ff4j
Riviera JUG ff4jRiviera JUG ff4j
Riviera JUG ff4j
 
Contractualisation agile : Saison 2 (atm)
Contractualisation agile :  Saison 2 (atm)Contractualisation agile :  Saison 2 (atm)
Contractualisation agile : Saison 2 (atm)
 
La Duck Conf : "Observabilité"
La Duck Conf : "Observabilité"La Duck Conf : "Observabilité"
La Duck Conf : "Observabilité"
 
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
 
La Duck Conf - "Elle est ou ton appli ? Dans mon kube"
La Duck Conf - "Elle est ou ton appli ? Dans mon kube"La Duck Conf - "Elle est ou ton appli ? Dans mon kube"
La Duck Conf - "Elle est ou ton appli ? Dans mon kube"
 
Crédits d’impôts CICE, CII, CIR, CIJV, CIE & Statut de JEI dans le domaine Mu...
Crédits d’impôts CICE, CII, CIR, CIJV, CIE & Statut de JEI dans le domaine Mu...Crédits d’impôts CICE, CII, CIR, CIJV, CIE & Statut de JEI dans le domaine Mu...
Crédits d’impôts CICE, CII, CIR, CIJV, CIE & Statut de JEI dans le domaine Mu...
 
Crédits d’impôts - Statut de JEI
Crédits d’impôts - Statut de JEICrédits d’impôts - Statut de JEI
Crédits d’impôts - Statut de JEI
 
La Duck Conf - "Mon DSI veut une MEP par jour, comment faire de l'architectur...
La Duck Conf - "Mon DSI veut une MEP par jour, comment faire de l'architectur...La Duck Conf - "Mon DSI veut une MEP par jour, comment faire de l'architectur...
La Duck Conf - "Mon DSI veut une MEP par jour, comment faire de l'architectur...
 
Soiré soire soa -logica
Soiré soire soa -logicaSoiré soire soa -logica
Soiré soire soa -logica
 
Club utilisateur retour_expérience_simplicité_v4
Club utilisateur retour_expérience_simplicité_v4Club utilisateur retour_expérience_simplicité_v4
Club utilisateur retour_expérience_simplicité_v4
 
BluAge sopra mdday2010
BluAge sopra mdday2010BluAge sopra mdday2010
BluAge sopra mdday2010
 
scmmm.pdf
scmmm.pdfscmmm.pdf
scmmm.pdf
 
Guide Magento Community Edition 1.8 & Enterprise Edition 1.13
Guide Magento Community Edition 1.8 & Enterprise Edition 1.13Guide Magento Community Edition 1.8 & Enterprise Edition 1.13
Guide Magento Community Edition 1.8 & Enterprise Edition 1.13
 
Elaboration du Catalogue de Service IT du Consortium Stade de France
Elaboration du Catalogue de Service IT du Consortium Stade de FranceElaboration du Catalogue de Service IT du Consortium Stade de France
Elaboration du Catalogue de Service IT du Consortium Stade de France
 
Crédit impôt innovation DGCIS février 2014
Crédit impôt innovation DGCIS février 2014Crédit impôt innovation DGCIS février 2014
Crédit impôt innovation DGCIS février 2014
 
PilotThings @DigiWorldAwards2017
PilotThings @DigiWorldAwards2017PilotThings @DigiWorldAwards2017
PilotThings @DigiWorldAwards2017
 
GDR GPL 2015 - Processus de Configuration Flexible pour Lignes de Produits Lo...
GDR GPL 2015 - Processus de Configuration Flexible pour Lignes de Produits Lo...GDR GPL 2015 - Processus de Configuration Flexible pour Lignes de Produits Lo...
GDR GPL 2015 - Processus de Configuration Flexible pour Lignes de Produits Lo...
 
Agile Tour Paris 2014 : "La Contractualisation Agile C'est Possible" à La Pos...
Agile Tour Paris 2014 : "La Contractualisation Agile C'est Possible" à La Pos...Agile Tour Paris 2014 : "La Contractualisation Agile C'est Possible" à La Pos...
Agile Tour Paris 2014 : "La Contractualisation Agile C'est Possible" à La Pos...
 
Petit-Déjeuner : Ceci n'est pas un mobile
Petit-Déjeuner : Ceci n'est pas un mobilePetit-Déjeuner : Ceci n'est pas un mobile
Petit-Déjeuner : Ceci n'est pas un mobile
 

Plus de Cédrick Lunven

Plus de Cédrick Lunven (17)

Top 10 present and future innovations in the NoSQL Cassandra ecosystem (2022)
Top 10 present and future innovations in the NoSQL Cassandra ecosystem (2022)Top 10 present and future innovations in the NoSQL Cassandra ecosystem (2022)
Top 10 present and future innovations in the NoSQL Cassandra ecosystem (2022)
 
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
 
Avoiding Pitfalls for Cassandra.pdf
Avoiding Pitfalls for Cassandra.pdfAvoiding Pitfalls for Cassandra.pdf
Avoiding Pitfalls for Cassandra.pdf
 
Unlock cassandra data for application developers using graphQL
Unlock cassandra data for application developers using graphQLUnlock cassandra data for application developers using graphQL
Unlock cassandra data for application developers using graphQL
 
An oss api layer for your cassandra
An oss api layer for your cassandraAn oss api layer for your cassandra
An oss api layer for your cassandra
 
CN Asturias - Stateful application for kubernetes
CN Asturias -  Stateful application for kubernetes CN Asturias -  Stateful application for kubernetes
CN Asturias - Stateful application for kubernetes
 
Xebicon2019 m icroservices
Xebicon2019   m icroservicesXebicon2019   m icroservices
Xebicon2019 m icroservices
 
DevFestBdm2019
DevFestBdm2019DevFestBdm2019
DevFestBdm2019
 
Reactive Programming with Cassandra
Reactive Programming with CassandraReactive Programming with Cassandra
Reactive Programming with Cassandra
 
Shift Dev Conf API
Shift Dev Conf APIShift Dev Conf API
Shift Dev Conf API
 
VoxxedDays Luxembourg FF4J
VoxxedDays Luxembourg FF4JVoxxedDays Luxembourg FF4J
VoxxedDays Luxembourg FF4J
 
VoxxedDays Luxembourg 2019
VoxxedDays Luxembourg 2019VoxxedDays Luxembourg 2019
VoxxedDays Luxembourg 2019
 
Design API - SnowCampIO
Design API - SnowCampIODesign API - SnowCampIO
Design API - SnowCampIO
 
Create API for your Databases
Create API for your DatabasesCreate API for your Databases
Create API for your Databases
 
Leveraging Feature Toggles for your Microservices (VoxxeddaysMicroservices Pa...
Leveraging Feature Toggles for your Microservices (VoxxeddaysMicroservices Pa...Leveraging Feature Toggles for your Microservices (VoxxeddaysMicroservices Pa...
Leveraging Feature Toggles for your Microservices (VoxxeddaysMicroservices Pa...
 
Streaming, Analytics and Reactive Applications with Apache Cassandra
Streaming, Analytics and Reactive Applications with Apache CassandraStreaming, Analytics and Reactive Applications with Apache Cassandra
Streaming, Analytics and Reactive Applications with Apache Cassandra
 
Riviera jug apicassandra
Riviera jug apicassandraRiviera jug apicassandra
Riviera jug apicassandra
 

Introduction to Feature Toggle and FF4J

  • 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
  • 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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. 37Copyright @ 2015 ParisJug. Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 38. 38 - - - SECTION II : IMPLEMENTATION
  • 39. 39 Toggling through AOP SECTION II : IMPLEMENTATION
  • 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 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 Feature Group SECTION II : IMPLEMENTATION
  • 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
  • 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 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 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 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 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 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 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 Getting Started SECTION III : Bonus track https://github.com/clun/ff4j-extra/tree/master/ff4j-samples
  • 54. 54 Getting Support SECTION III : Bonus track 2 1
  • 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 Pourquoi pas vous ? SECTION III : Bonus track
  • 57. 57 Test, comment, react, Tweet.. Thank You !
  • 59. 59 FF4j vs Togglz (1) APPENDICES
  • 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

Notes de l'éditeur

  1. Dans l’heure qui va suivre je vais vous présenter les différents éléments Définir ou réfinir la notion de Feature Toggle Présenter les différents cas d’usage où cela pourrait s’appliquer Présenter mon framework FF4J Présenter la roadmap
  2. Cela fait une dizaine d’années que je tourne sur le terrain Je sors de l’ISIMA à Clermont-Ferrand J’ai fait 5 ans chez Unilog - et encore 5 ans chez OCTO Technology Aujourd’hui je suis Architecte Solution chez SoftwareAG Missions : Dev – Conseil – Architecture – Vente Compétences : JAVA et INTEGRATION
  3. Traitement, fonction, story, comportement  Qui traverse toutes les couches applicatives
  4. Ce comportement peut être exécuté ou non On lui donne un identifiant unique et l’on travaille avec. Mais ce n’est pas une simple condition, on veut pouvoir changer sa valeur à chaud
  5. …. Au travers d’une console dédiée Qui permet d’activer/desactiver bien sur mais aussi créer/éditer/supprimer.
  6. Ma définition du feature toggle est donc la capacité pour un système d’activer ou désactiver des fonctionnalités à chaud Au travers d’une console dédiée Cette définition est bien mais elle n’est pas complète…
  7. En plus de son statut ON ou OFF …. …On peut activer une fonctionnalité pour une sous population (BETA TESTEUR) Le feature toggle peut même aller plus loin
  8. Pourquoi ne pas implémenter ses propres conditions pour savoir si c’est ON ou PAS C’est bien uniquement si la feature est UP et que l’on est autorisé que l’on va évaluer votre condition Idée : ReleaseDate 12:00 J’espère que vous commencez à percevoir un potentiel ou vous posez des questions ?
  9. Alors je vous propose des cas d’usages auxquels Vous n’avez peut être pas pensé.
  10. Feature Branch : Chaque équipe « branche » travailler sur sa version Au moment la réintégration au trunk il y a des conflits avec les autres branches précédentes Trunk-based development : Tout le monde travaille sur la HEAD A cause de releases fréquentes, du code doit partir en production alors qu’il n’est pas achevé On doit l’encapsuler dans un test bloc qui n’est pas appelé.
  11. AVANT : Il fallait une infrastructure dédiée pour tester les nouveaux services Maintenant une seule infrastructure est suffisante
  12. Magic les trois nœuds s’activent en même temps… ou plantent en même temps L’avantage ca reste que l’on peut toggle-OFF et aller secouer les développeurs
  13. Un pourcentage de vos requêtes activent les nouvelles fonctions pour mesure un impact de perf On doit changer le load-balancer et l’infra. Plus besoin de changer de load balancer Chaque serveur active pour une partie des requêtes
  14. Avant : Avec un trop grand nombre de requête entrante on peut écrouler un site marchand Apres : On peut identifier les requêtes à forts potentiels et les laisser passer et kicker les autres
  15. Une feature n’est pas uniquement un id
  16. Ce que se traduit par le XML suivant