SlideShare une entreprise Scribd logo
1  sur  51
1
+
JHIPSTER
MEETS
Cédrick Lunven
27 juin 2017
PARIS JHIPSTER USER GROUP MEETUP #9
2
+
Agenda
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
Feature toggle
Properties
Monitoring
Extra
Pourquoi ?
Comment ?
Démo
Next Steps
Intro
Moi
Définition
Cas d’usages
Références
3
+
Hello world !
https://github.com/clun
https://fr.linkedin.com/in/clunven
@clunven
Release FF4J
Version 1.0.0
INTRODUCTION
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
Cédrick Lunven
4
+
Data
Service
Presentation
Feature
Feature ?
INTRODUCTION
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
5
+
Feature Toggle
check
« true »
Feature
OFF ON
« false »
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
INTRODUCTION
6
+
Feature Toggle +
Enable ?
« yes »
Feature
OFF ON
« no »
users ACL
Permissions
unauthorized
« granted »
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
INTRODUCTION
7
+
Feature Toggle ++
INTRODUCTION
Enable ?
« yes »
Feature
OFF ON
« no »
Permissions
unauthorized
« granted »
users ACL
Custom
strategy
« Predicate = true »
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
8
+
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
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
INTRODUCTION
9
+
Version N Version N+1
users beta testers
Dedicated infra?
Version N+1
F. Toggle
users beta testers
Check Profile
Canary Release
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
INTRODUCTION
10
+
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
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
INTRODUCTION
11
+
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
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
INTRODUCTION
12
+
Application
Ouverture
Des
SOLDES
DDOs
F. Toggle
Application
Graceful degradation
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
INTRODUCTION
13
+
« 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 à la fois techniques et métiers. »
Moi. et d’autres aussi…
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
14
+
Agenda
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
FF4J
Feature toggle
Properties
Monitoring
Extra
JHipster
Pourquoi ?
Démo
Démo
Démo
Intro
Moi
Définition
Cas d’usages
Références
15
+
Découverte
FF4j
16
+
Feature
FF4j
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
17
+
Feature
FF4j
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
18
+
FeatureStore
FF4j
Import/load
Feature Store
Inject/ Init
FF4j
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
19
+
Feature Store
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
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
FF4j
20
+
Feature Store
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
FF4j
21
+
Permissions
FF4j
Enable ?
« yes »
Feature
OFF ON
« no »
Permissions
unauthorized
« granted »
users ACL
FeatureStore
AuthorizationManager
Import/load
Inject/ Init
FF4j
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
22
+
Enable ?
« yes »
Feature
OFF ON
« no »
Permissions
unauthorized
« granted »
users ACL
Custom
strategy
« Predicate = true »
Flipping Strategy
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
FF4j
23
+
Administration Console
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
FF4j
24
+
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
FF4j
25
+
SECTION II : IMPLEMENTATION
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
26
+
Toggling through AOP
SECTION II : IMPLEMENTATION
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
27
+
Feature Group
SECTION II : IMPLEMENTATION
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
28
+
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 @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
29
+
Taglib + Thymeleaf
SECTION II : IMPLEMENTATION
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
30
+
ff4j
Store
App
REST API
PHP
JS
.NET
Devices
SECTION II : IMPLEMENTATION
REST API
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
31
+
ff4j
Store
App
MBEAN
Support JMX
SECTION II : IMPLEMENTATION
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
32
+
SECTION II : IMPLEMENTATION
Monitoring
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
33
+
Properties
SECTION II : IMPLEMENTATION
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
34
+
Property Store
SECTION II : IMPLEMENTATION
PropertyStore
FF4j
Import/load
Inject/ Init
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
35
+
Autowiring
SECTION II : IMPLEMENTATION
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
36
+
Command Line Interface (CLI)
SECTION II : IMPLEMENTATION
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
37
+
FF4j c’est de la balle , comment j’ai pu passé à coté ? J’ai trop envie de
le tester là maintenant.
Vous
38
+
Agenda
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
FF4J
Feature toggle
Properties
Monitoring
Extra
JHipster
Pourquoi ?
Démo
Démo
Démo
Intro
Moi
Définition
Cas d’usages
Références
39
+
Generator-ff4j ?
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
Feature
Toggle
Properties
Management
Monitoring
CLI
REST
API
SpringBoot
Starter
https://github.com/jhipster/generator-jhipster/issues/5801
Monitoring
REST
API
CRUD
Angular
GUI
Properties
Management
SpringBoot
Backend
40
+
Generator-ff4j ?
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
Feature
Toggle
Properties
Management
Monitoring Monitoring
REST
API
CRUD
CLI
REST
API
SpringBoot
Starter
Angular
GUI
https://github.com/jhipster/generator-jhipster/issues/5801
Properties
Management
SpringBoot
Backend
41
+
Generator-ff4j
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
42
+
Generator-ff4j
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
43
+
Generator-ff4j
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
44
+
Generator-ff4j
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
45
+
Generator-ff4j
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
46
+
Generator-ff4j
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
47
+
Generator-ff4j
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
48
+
RoadMap
Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
Bug Fixes  Secure HTTP Servlet
Implement other DB : HBASE, NEO4J, …
Internationalization
Handle Cache
Jhipster Registry
NPM module for REST API (JHI Directive ?)
49
+
APPENDICES
50
+
FF4j vs Togglz (1)
APPENDICES
51
+

Contenu connexe

Similaire à Paris Meetup Jhispter #9 - Generator FF4j for Jhipster

McDonald's / b-pack : Bonnes pratiques et déploiement eAchats du GIE Force
McDonald's / b-pack : Bonnes pratiques et déploiement eAchats du GIE ForceMcDonald's / b-pack : Bonnes pratiques et déploiement eAchats du GIE Force
McDonald's / b-pack : Bonnes pratiques et déploiement eAchats du GIE Forceb-pack
 
La Duck Conf : "Observabilité"
La Duck Conf : "Observabilité"La Duck Conf : "Observabilité"
La Duck Conf : "Observabilité"OCTO Technology
 
Soiré soire soa -logica
Soiré soire soa -logicaSoiré soire soa -logica
Soiré soire soa -logicaAlahyane Ahmed
 
LUXEMBOURG CREATIVE 2017 : BIM (2)
LUXEMBOURG CREATIVE 2017 : BIM (2)LUXEMBOURG CREATIVE 2017 : BIM (2)
LUXEMBOURG CREATIVE 2017 : BIM (2)LUXEMBOURG CREATIVE
 
Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! frameworkBenoît Simard
 
Vous avez dit « authentification sans mot de passe » : une illustration avec ...
Vous avez dit « authentification sans mot de passe » : une illustration avec ...Vous avez dit « authentification sans mot de passe » : une illustration avec ...
Vous avez dit « authentification sans mot de passe » : une illustration avec ...Microsoft Technet France
 
Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009JUG Lausanne
 
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é_v4Simplicité Software
 
Guide Magento CE 1.9 E.E 1.14.1
Guide Magento CE 1.9 E.E 1.14.1Guide Magento CE 1.9 E.E 1.14.1
Guide Magento CE 1.9 E.E 1.14.1X2i
 
Séminaire LINAGORA février 2010 - OBM
Séminaire LINAGORA février 2010 - OBMSéminaire LINAGORA février 2010 - OBM
Séminaire LINAGORA février 2010 - OBMLINAGORA
 
MWCP 2018 - Un framework pour les gouverner tous
MWCP 2018 -  Un framework pour les gouverner tousMWCP 2018 -  Un framework pour les gouverner tous
MWCP 2018 - Un framework pour les gouverner tousGaetan Bouveret
 
2018-10-17 J1 6C - Un framework pour les gouverner tous - Gaëtan Bouveret
2018-10-17 J1 6C - Un framework pour les gouverner tous - Gaëtan Bouveret2018-10-17 J1 6C - Un framework pour les gouverner tous - Gaëtan Bouveret
2018-10-17 J1 6C - Un framework pour les gouverner tous - Gaëtan BouveretModern Workplace Conference Paris
 
Présentation travail du stage
Présentation travail du stagePrésentation travail du stage
Présentation travail du stageTaoufiq Bahalla
 
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009JUG Lausanne
 
Le Comptoir OCTO - Quoi de neuf pour vos apps mobiles ?
Le Comptoir OCTO - Quoi de neuf pour vos apps mobiles ? Le Comptoir OCTO - Quoi de neuf pour vos apps mobiles ?
Le Comptoir OCTO - Quoi de neuf pour vos apps mobiles ? OCTO Technology
 
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 2009JUG Lausanne
 
meetup devops aix marseille du 16/05/23
meetup devops aix marseille du 16/05/23meetup devops aix marseille du 16/05/23
meetup devops aix marseille du 16/05/23Frederic Leger
 
IBC 360 Tour: Virtual or Real Trends
IBC 360 Tour: Virtual or Real TrendsIBC 360 Tour: Virtual or Real Trends
IBC 360 Tour: Virtual or Real TrendsErica Beavers
 

Similaire à Paris Meetup Jhispter #9 - Generator FF4j for Jhipster (20)

McDonald's / b-pack : Bonnes pratiques et déploiement eAchats du GIE Force
McDonald's / b-pack : Bonnes pratiques et déploiement eAchats du GIE ForceMcDonald's / b-pack : Bonnes pratiques et déploiement eAchats du GIE Force
McDonald's / b-pack : Bonnes pratiques et déploiement eAchats du GIE Force
 
Plici - PréSentation V2
Plici - PréSentation V2Plici - PréSentation V2
Plici - PréSentation V2
 
Riviera JUG ff4j
Riviera JUG ff4jRiviera JUG ff4j
Riviera JUG ff4j
 
La Duck Conf : "Observabilité"
La Duck Conf : "Observabilité"La Duck Conf : "Observabilité"
La Duck Conf : "Observabilité"
 
Soiré soire soa -logica
Soiré soire soa -logicaSoiré soire soa -logica
Soiré soire soa -logica
 
LUXEMBOURG CREATIVE 2017 : BIM (2)
LUXEMBOURG CREATIVE 2017 : BIM (2)LUXEMBOURG CREATIVE 2017 : BIM (2)
LUXEMBOURG CREATIVE 2017 : BIM (2)
 
Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! framework
 
Vous avez dit « authentification sans mot de passe » : une illustration avec ...
Vous avez dit « authentification sans mot de passe » : une illustration avec ...Vous avez dit « authentification sans mot de passe » : une illustration avec ...
Vous avez dit « authentification sans mot de passe » : une illustration avec ...
 
Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009
 
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
 
Guide Magento CE 1.9 E.E 1.14.1
Guide Magento CE 1.9 E.E 1.14.1Guide Magento CE 1.9 E.E 1.14.1
Guide Magento CE 1.9 E.E 1.14.1
 
Séminaire LINAGORA février 2010 - OBM
Séminaire LINAGORA février 2010 - OBMSéminaire LINAGORA février 2010 - OBM
Séminaire LINAGORA février 2010 - OBM
 
MWCP 2018 - Un framework pour les gouverner tous
MWCP 2018 -  Un framework pour les gouverner tousMWCP 2018 -  Un framework pour les gouverner tous
MWCP 2018 - Un framework pour les gouverner tous
 
2018-10-17 J1 6C - Un framework pour les gouverner tous - Gaëtan Bouveret
2018-10-17 J1 6C - Un framework pour les gouverner tous - Gaëtan Bouveret2018-10-17 J1 6C - Un framework pour les gouverner tous - Gaëtan Bouveret
2018-10-17 J1 6C - Un framework pour les gouverner tous - Gaëtan Bouveret
 
Présentation travail du stage
Présentation travail du stagePrésentation travail du stage
Présentation travail du stage
 
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
 
Le Comptoir OCTO - Quoi de neuf pour vos apps mobiles ?
Le Comptoir OCTO - Quoi de neuf pour vos apps mobiles ? Le Comptoir OCTO - Quoi de neuf pour vos apps mobiles ?
Le Comptoir OCTO - Quoi de neuf pour vos apps mobiles ?
 
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
 
meetup devops aix marseille du 16/05/23
meetup devops aix marseille du 16/05/23meetup devops aix marseille du 16/05/23
meetup devops aix marseille du 16/05/23
 
IBC 360 Tour: Virtual or Real Trends
IBC 360 Tour: Virtual or Real TrendsIBC 360 Tour: Virtual or Real Trends
IBC 360 Tour: Virtual or Real Trends
 

Plus de Cédrick Lunven

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)Cédrick Lunven
 
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 ...Cédrick Lunven
 
Avoiding Pitfalls for Cassandra.pdf
Avoiding Pitfalls for Cassandra.pdfAvoiding Pitfalls for Cassandra.pdf
Avoiding Pitfalls for Cassandra.pdfCédrick Lunven
 
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 graphQLCédrick Lunven
 
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 cassandraCédrick Lunven
 
CN Asturias - Stateful application for kubernetes
CN Asturias -  Stateful application for kubernetes CN Asturias -  Stateful application for kubernetes
CN Asturias - Stateful application for kubernetes Cédrick Lunven
 
Xebicon2019 m icroservices
Xebicon2019   m icroservicesXebicon2019   m icroservices
Xebicon2019 m icroservicesCédrick Lunven
 
Reactive Programming with Cassandra
Reactive Programming with CassandraReactive Programming with Cassandra
Reactive Programming with CassandraCédrick Lunven
 
VoxxedDays Luxembourg FF4J
VoxxedDays Luxembourg FF4JVoxxedDays Luxembourg FF4J
VoxxedDays Luxembourg FF4JCédrick Lunven
 
VoxxedDays Luxembourg 2019
VoxxedDays Luxembourg 2019VoxxedDays Luxembourg 2019
VoxxedDays Luxembourg 2019Cédrick Lunven
 
Create API for your Databases
Create API for your DatabasesCreate API for your Databases
Create API for your DatabasesCédrick Lunven
 
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...Cédrick Lunven
 
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 CassandraCédrick Lunven
 
Riviera jug apicassandra
Riviera jug apicassandraRiviera jug apicassandra
Riviera jug apicassandraCé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
 

Paris Meetup Jhispter #9 - Generator FF4j for Jhipster

  • 1. 1 + JHIPSTER MEETS Cédrick Lunven 27 juin 2017 PARIS JHIPSTER USER GROUP MEETUP #9
  • 2. 2 + Agenda Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique Feature toggle Properties Monitoring Extra Pourquoi ? Comment ? Démo Next Steps Intro Moi Définition Cas d’usages Références
  • 3. 3 + Hello world ! https://github.com/clun https://fr.linkedin.com/in/clunven @clunven Release FF4J Version 1.0.0 INTRODUCTION 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique Cédrick Lunven
  • 4. 4 + Data Service Presentation Feature Feature ? INTRODUCTION Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 5. 5 + Feature Toggle check « true » Feature OFF ON « false » Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique INTRODUCTION
  • 6. 6 + Feature Toggle + Enable ? « yes » Feature OFF ON « no » users ACL Permissions unauthorized « granted » Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique INTRODUCTION
  • 7. 7 + Feature Toggle ++ INTRODUCTION Enable ? « yes » Feature OFF ON « no » Permissions unauthorized « granted » users ACL Custom strategy « Predicate = true » Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 8. 8 + 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 Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique INTRODUCTION
  • 9. 9 + Version N Version N+1 users beta testers Dedicated infra? Version N+1 F. Toggle users beta testers Check Profile Canary Release Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique INTRODUCTION
  • 10. 10 + 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 Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique INTRODUCTION
  • 11. 11 + 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 Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique INTRODUCTION
  • 12. 12 + Application Ouverture Des SOLDES DDOs F. Toggle Application Graceful degradation Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique INTRODUCTION
  • 13. 13 + « 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 à la fois techniques et métiers. » Moi. et d’autres aussi… Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 14. 14 + Agenda Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique FF4J Feature toggle Properties Monitoring Extra JHipster Pourquoi ? Démo Démo Démo Intro Moi Définition Cas d’usages Références
  • 16. 16 + Feature FF4j Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 17. 17 + Feature FF4j Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 18. 18 + FeatureStore FF4j Import/load Feature Store Inject/ Init FF4j Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 19. 19 + Feature Store 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 Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique FF4j
  • 20. 20 + Feature Store Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique FF4j
  • 21. 21 + Permissions FF4j Enable ? « yes » Feature OFF ON « no » Permissions unauthorized « granted » users ACL FeatureStore AuthorizationManager Import/load Inject/ Init FF4j Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 22. 22 + Enable ? « yes » Feature OFF ON « no » Permissions unauthorized « granted » users ACL Custom strategy « Predicate = true » Flipping Strategy Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique FF4j
  • 23. 23 + Administration Console Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique FF4j
  • 24. 24 + Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique FF4j
  • 25. 25 + SECTION II : IMPLEMENTATION Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 26. 26 + Toggling through AOP SECTION II : IMPLEMENTATION Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 27. 27 + Feature Group SECTION II : IMPLEMENTATION Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 28. 28 + 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 @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 29. 29 + Taglib + Thymeleaf SECTION II : IMPLEMENTATION Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 30. 30 + ff4j Store App REST API PHP JS .NET Devices SECTION II : IMPLEMENTATION REST API Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 31. 31 + ff4j Store App MBEAN Support JMX SECTION II : IMPLEMENTATION Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 32. 32 + SECTION II : IMPLEMENTATION Monitoring Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 33. 33 + Properties SECTION II : IMPLEMENTATION Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 34. 34 + Property Store SECTION II : IMPLEMENTATION PropertyStore FF4j Import/load Inject/ Init Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 35. 35 + Autowiring SECTION II : IMPLEMENTATION Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 36. 36 + Command Line Interface (CLI) SECTION II : IMPLEMENTATION Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 37. 37 + FF4j c’est de la balle , comment j’ai pu passé à coté ? J’ai trop envie de le tester là maintenant. Vous
  • 38. 38 + Agenda Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique FF4J Feature toggle Properties Monitoring Extra JHipster Pourquoi ? Démo Démo Démo Intro Moi Définition Cas d’usages Références
  • 39. 39 + Generator-ff4j ? Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique Feature Toggle Properties Management Monitoring CLI REST API SpringBoot Starter https://github.com/jhipster/generator-jhipster/issues/5801 Monitoring REST API CRUD Angular GUI Properties Management SpringBoot Backend
  • 40. 40 + Generator-ff4j ? Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique Feature Toggle Properties Management Monitoring Monitoring REST API CRUD CLI REST API SpringBoot Starter Angular GUI https://github.com/jhipster/generator-jhipster/issues/5801 Properties Management SpringBoot Backend
  • 41. 41 + Generator-ff4j Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 42. 42 + Generator-ff4j Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 43. 43 + Generator-ff4j Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 44. 44 + Generator-ff4j Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 45. 45 + Generator-ff4j Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 46. 46 + Generator-ff4j Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 47. 47 + Generator-ff4j Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique
  • 48. 48 + RoadMap Copyright @ 2017 Licence CC - Creative Commons 2.0 France – Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique Bug Fixes  Secure HTTP Servlet Implement other DB : HBASE, NEO4J, … Internationalization Handle Cache Jhipster Registry NPM module for REST API (JHI Directive ?)
  • 50. 50 + FF4j vs Togglz (1) APPENDICES
  • 51. 51 +

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. Traitement, fonction, story, comportement  Qui traverse toutes les couches applicatives
  3. 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
  4. 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 ?
  5. 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é.
  6. AVANT : Il fallait une infrastructure dédiée pour tester les nouveaux services Maintenant une seule infrastructure est suffisante
  7. 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
  8. 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
  9. 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
  10. 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
  11. Ce que se traduit par le XML suivant
  12. Ce que se traduit par le XML suivant
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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