![Page 1: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/1.jpg)
Monitoring and Feature Toggle Pattern
with JMX
Bruno Bonfils Cyrille Le Clerc 15/06/2011
Thursday, June 16, 2011
![Page 2: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/2.jpg)
Speaker
2
Cyrille Le Clerc
@cyrilleleclerc
blog.xebia.fr
Open Source (Apache CXF, ...)
In Memory Data Grid
Large Scale
“you build it, you run it”
Thursday, June 16, 2011
![Page 3: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/3.jpg)
The use case
3Thursday, June 16, 2011
![Page 4: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/4.jpg)
The Use Case
4
Corporate Data Center
travel-ecommerce
Tomcat
Credit Card Service
travel-ecommerce
Tomcat
anti-fraud
Tomcat
anti-fraud
Tomcat
Travel e-commerce application
Thursday, June 16, 2011
![Page 5: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/5.jpg)
The Use Case
xebia-spring-travel source code▶ http://xebia-france.googlecode.com/svn/training/xebia-spring-travel/tags/xebia-spring-travel-1.0.0/
▶Groovy JMX scripts» http://xebia-france.googlecode.com/svn/training/xebia-spring-travel/tags/xebia-spring-travel-1.0.0/xebia-spring-travel-
ecommerce/src/main/scripts/
▶ JMXTrans Configuration» http://xebia-france.googlecode.com/svn/training/xebia-spring-travel/tags/xebia-spring-travel-1.0.0/xebia-spring-travel-
ecommerce/src/main/jmxtrans/
▶ JMeter plan» http://xebia-france.googlecode.com/svn/training/xebia-spring-travel/tags/xebia-spring-travel-1.0.0/xebia-spring-travel-
ecommerce/src/main/jmeter/
xebia-management-extras JMX library▶ http://code.google.com/p/xebia-france/wiki/XebiaManagementExtras
5Thursday, June 16, 2011
![Page 6: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/6.jpg)
Part 1Monitoring with JMX
6Thursday, June 16, 2011
![Page 7: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/7.jpg)
Simplified Use Case
7Thursday, June 16, 2011
![Page 8: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/8.jpg)
Simplified Use Case
8
Monitoring Booking and Credit Card Service
Corporate Data Center
travel-ecommerce
Tomcat
Credit Card ServiceMock
Thursday, June 16, 2011
![Page 9: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/9.jpg)
Simplified Use Case
9
Monitoring Booking and Credit Card Service
Corporate Data Center
travel-ecommerce
Tomcat
Credit Card ServiceMock
Thursday, June 16, 2011
![Page 10: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/10.jpg)
Custom/business indicator monitoringwith JMX
10Thursday, June 16, 2011
![Page 11: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/11.jpg)
Custom Indicator Monitoring with JMX
11
CreditCardService MonitoringImpl
#purchase()
CreditCardServiceImpl
#purchase()
CreditCardService
#purchase()
monitoring logic isolated with a delegate pattern
Thursday, June 16, 2011
![Page 12: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/12.jpg)
Custom Indicator Monitoring with JMX
12
@ManagedResourcepublic class CreditCardServiceMonitoringImpl implements CreditCardService {
// delegate private CreditCardService creditCardService; // counters private final AtomicInteger purchaseInvocationCounter = new AtomicInteger(); private final AtomicLong purchaseInvocationDurationInNanosCounter = new AtomicLong(); private final AtomicInteger threeDSecureVerificationExceptionCounter = new AtomicInteger();
@Override public PaymentTransaction purchase(MonetaryAmount total, Order order, String requestId) { long nanosBefore = System.nanoTime();
try { return creditCardService.purchase(total, order, requestId);
} catch (ThreeDSecureVerificationException e) { threeDSecureVerificationExceptionCounter.incrementAndGet(); throw e; } finally { purchaseInvocationCounter.incrementAndGet(); purchaseInvocationDurationInNanosCounter.addAndGet(System.nanoTime() - nanosBefore); } }
http://code.google.com/p/xebia-france/source/browse/training/xebia-spring-travel/tags/xebia-spring-travel-1.0.0/xebia-spring-travel-ecommerce/src/main/java/fr/xebia/monitoring/demo/payment/CreditCardServiceMonitoringImpl.java
Thursday, June 16, 2011
![Page 13: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/13.jpg)
Accessing JMX is not so difficult
13Thursday, June 16, 2011
![Page 14: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/14.jpg)
JMX Monitoring with Visual VM
14Thursday, June 16, 2011
![Page 15: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/15.jpg)
JMX Monitoring with JSP Pages
Human friendly or script friendly pages
Beware of security▶Basic Auth▶Obfuscated URL : /my-app/seye5E7E/jmx/cxf.jsp
15
Powered by JMX !
Thursday, June 16, 2011
![Page 16: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/16.jpg)
Graphite - JMXTrans Style Reporting Tools
16
{ "servers" : [ { "port" : "6969", "host" : "my-server-1", "alias" : "travel-ecommerce-1", "queries" : [ { "outputWriters" : [ { "@class" : "com.googlecode.jmxtrans.model.output.GraphiteWriter", "settings" : { "port" : 2003, "host" : "graphite-server" } }], "obj": "travel-ecommerce:name=CreditCardServiceMonitoringImpl,...", "resultAlias" : "CreditCardService", "attr":["PurchaseInvocationCount", "ThreeDSecureVerificationExceptionCount", ...] } ], "numQueryThreads" : 2 } ]} JMX Trans Configuration
Graphite
http://code.google.com/p/xebia-france/source/browse/training/xebia-spring-travel/tags/xebia-spring-travel-1.0.0/xebia-spring-travel-ecommerce/src/main/jmxtrans/xebia-spring-travel-ecommerce-jmxtrans.json
Thursday, June 16, 2011
![Page 17: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/17.jpg)
Monotoring systems
17
Hyperic
AppDynamics
All others ...
Thursday, June 16, 2011
![Page 18: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/18.jpg)
JVM Based Scripting Language
18http://code.google.com/p/xebia-france/source/browse/training/xebia-spring-travel/tags/xebia-spring-travel-1.0.0/xebia-spring-travel-ecommerce/src/main/scripts/getAntiFraudVerificationStatus.groovy
Thursday, June 16, 2011
![Page 19: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/19.jpg)
Part 2Feature Toggle Pattern with JMX
19Thursday, June 16, 2011
![Page 20: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/20.jpg)
Simplified Use Case
20Thursday, June 16, 2011
![Page 21: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/21.jpg)
Simplified Use Case
21
Corporate Data Center
travel-ecommerce
Tomcat
Credit Card Service
anti-fraud
Tomcat
Enable anti-fraud
Thursday, June 16, 2011
![Page 22: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/22.jpg)
What ? Why ?
22Thursday, June 16, 2011
![Page 23: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/23.jpg)
What is it ?
Technique to enable/disable a feature without redeploying
Can be simple : on/off
Can be sophisticated : f(user), f(server), etc
23Thursday, June 16, 2011
![Page 24: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/24.jpg)
Benefits of the Feature Toggle Pattern
Dissociate deployment & feature activation
Progressive activation of a feature
Measure impacts of a new version
Differ feature activation on production
Trunk based development
24
Canary Testing
A/B Testing
Thursday, June 16, 2011
![Page 25: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/25.jpg)
Coding Patterns
25Thursday, June 16, 2011
![Page 26: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/26.jpg)
Coding PatternsDispatcher
26
The dispatcher holds the feature toggle
JMXpersistenttransient
AntiFraudServiceV1Impl
AntiFraudServiceV2Impl
AntiFraudServiceDispatchingImpl
AntiFraudService<<Interface>>
http://code.google.com/p/xebia-france/source/browse/training/xebia-spring-travel/tags/xebia-spring-travel-1.0.0/xebia-spring-travel-ecommerce/src/main/java/fr/xebia/ws/travel/antifraud/v1_0/AntiFraudServiceDispatchingImpl.java
Thursday, June 16, 2011
![Page 27: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/27.jpg)
Coding PatternsTo duplicate or not to duplicate ?
27
Version 2
Version 1
Dispatching
Dispatching
Smart reuse and mutualization
Brutal duplication
Thursday, June 16, 2011
![Page 28: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/28.jpg)
Coding PatternsTo duplicate or not to duplicate ?
28
Version 2
Version 1
Dispatching
Dispatching
Smart reuse and mutualization
Brutal duplication
Thursday, June 16, 2011
![Page 29: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/29.jpg)
Coding PatternsTo duplicate or not to duplicate ?
29
Version 2
Version 1
Dispatching
Dispatching
Smart reuse and mutualization
Brutal duplication
Thursday, June 16, 2011
![Page 30: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/30.jpg)
Coding PatternsTo duplicate or not to duplicate ?
30
Version 2
Version 1
Smart reuse and mutualization
Brutal duplication
Old version removal requires cleanup
Old version removal is clean
Thursday, June 16, 2011
![Page 31: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/31.jpg)
Coding PatternsTo duplicate or not to duplicate ?
31
Old code removal is simpler with brutal duplication
Thursday, June 16, 2011
![Page 32: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/32.jpg)
Demo
32Thursday, June 16, 2011
![Page 33: Paris Devops - Monitoring And Feature Toggle Pattern With JMX](https://reader034.vdocuments.mx/reader034/viewer/2022052410/55493bbcb4c9050f4d8b4c8a/html5/thumbnails/33.jpg)
Questions / Answers
33
?
Thursday, June 16, 2011