Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Object, Measure Thyself
Greg Opaczewski – Orbitz Worldwide
Michael Ducy – BMC Software
Open Source
• ERMA Project :
http://launchpad.net/erma
• Graphite Project :
http://launchpad.net/graphite
Complex Environment
$10.8 Billion in Gross Bookings in 2007
Myths of Instrumentation
• No Time For Instrumentation
• No Value ($) in Instrumentation
• Instrumentation Causes Bugs
Myth: No Time For
Instrumentation
ERMA
Extremely Reusable Monitoring API
TransactionMonitor monitor =
new TransactionMonitor(“HotelService.purchase”);
try {
response = hotelSupplier.reserve(hotel...
Self-Instrumentation by:
• Hooks – Interceptors and Listeners
• Abstraction – Abstract the details away
from developers
• ...
Frameworks - Hooks
• Spring Framework
Frameworks - Abstraction
Self-Instrumentation by:
• Aspect Oriented Programming (AOP)
<aop:config>
<aop:aspect id="transactionMonitorActionAspect"
...
Myth: No Time For
Instrumentation
Myth: No Value ($) in
Instrumentation
Event Aggregation
Event Aggregation
Storage and Visualization: Graphite
Graphite
Graphite
Graphite Demo
Value to the Business
• Fixing Production Problems Fast
• Capacity Planning
• Business Product teams rely on ERMA
data
Myth: No Value ($) in
Instrumentation
Myth: Instrumentation Causes
Bugs
Avoid Boilerplate
@Monitored
public interface HotelService {
void purchase(Itinerary itinerary);
void cancel(Itinerary iti...
Avoid Boilerplate
public interface HotelService {
@Monitored(includeArguments = true)
void purchase(Itinerary itinerary);
...
Uncovers Bugs
• Allows you to base line across builds
• MASF and SPC
• Event Pattern Monitoring
Base Lining
• Compare present performance vs.
historical performance
• Validate testing via theoretical models
MASF and SPC
Need for Abstraction
abstraction
Webapp
Travel Business Services
Switching Services
Transaction Services
Suppliers
Event Pattern Monitoring
wl|httpIn.shop.search.air.redirect_searchFailure
wl|AirSearchExecuteAction.search
wl|com.orbitz.o...
Myth: Instrumentation Causes
Bugs
Final Thought
Performance monitoring is easy when the
objects practically measure themselves.
Thank You
• Special thanks to:
– Fellow Co-Authors – Matthew O’Keefe and
Stephen Mullins
– Neil Gunther – Mentoring and Ca...
Websites
• ERMA Project :
http://launchpad.net/erma
• Graphite Project :
http://launchpad.net/graphite
?
michael@ducy.org
gopaczewski@orbitz.com
Upcoming SlideShare
Loading in …5
×

Object, measure thyself

937 views

Published on

The first conference presentation on Graphite circa 2008

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Object, measure thyself

  1. 1. Object, Measure Thyself Greg Opaczewski – Orbitz Worldwide Michael Ducy – BMC Software
  2. 2. Open Source • ERMA Project : http://launchpad.net/erma • Graphite Project : http://launchpad.net/graphite
  3. 3. Complex Environment
  4. 4. $10.8 Billion in Gross Bookings in 2007
  5. 5. Myths of Instrumentation • No Time For Instrumentation • No Value ($) in Instrumentation • Instrumentation Causes Bugs
  6. 6. Myth: No Time For Instrumentation
  7. 7. ERMA Extremely Reusable Monitoring API
  8. 8. TransactionMonitor monitor = new TransactionMonitor(“HotelService.purchase”); try { response = hotelSupplier.reserve(hotel); monitor.succeeded(); } catch (ServiceException e) { monitor.failedDueTo(e); throw e; } finally { monitor.done(); } ERMA
  9. 9. Self-Instrumentation by: • Hooks – Interceptors and Listeners • Abstraction – Abstract the details away from developers • AOP – Aspect Oriented Programming
  10. 10. Frameworks - Hooks • Spring Framework
  11. 11. Frameworks - Abstraction
  12. 12. Self-Instrumentation by: • Aspect Oriented Programming (AOP) <aop:config> <aop:aspect id="transactionMonitorActionAspect" ref="transactionMonitorActionAdvice"> <aop:pointcut id="transactionMonitorActionPointcut“ expression="target(org.springframework.webflow.execution.Action) and args(context)"/> <aop:around pointcut-ref="transactionMonitorActionPointcut“ method="invoke"/> </aop:aspect> </aop:config>
  13. 13. Myth: No Time For Instrumentation
  14. 14. Myth: No Value ($) in Instrumentation
  15. 15. Event Aggregation
  16. 16. Event Aggregation
  17. 17. Storage and Visualization: Graphite
  18. 18. Graphite
  19. 19. Graphite
  20. 20. Graphite Demo
  21. 21. Value to the Business • Fixing Production Problems Fast • Capacity Planning • Business Product teams rely on ERMA data
  22. 22. Myth: No Value ($) in Instrumentation
  23. 23. Myth: Instrumentation Causes Bugs
  24. 24. Avoid Boilerplate @Monitored public interface HotelService { void purchase(Itinerary itinerary); void cancel(Itinerary itinerary); }
  25. 25. Avoid Boilerplate public interface HotelService { @Monitored(includeArguments = true) void purchase(Itinerary itinerary); void cancel(Itinerary itinerary); }
  26. 26. Uncovers Bugs • Allows you to base line across builds • MASF and SPC • Event Pattern Monitoring
  27. 27. Base Lining • Compare present performance vs. historical performance • Validate testing via theoretical models
  28. 28. MASF and SPC
  29. 29. Need for Abstraction abstraction Webapp Travel Business Services Switching Services Transaction Services Suppliers
  30. 30. Event Pattern Monitoring wl|httpIn.shop.search.air.redirect_searchFailure wl|AirSearchExecuteAction.search wl|com.orbitz.ojf.OJFClient.getInternal wl|jiniOut_ShopService_createResultSet tbs-shop|jiniIn_ShopService_createResultSet tbs-shop|jiniOut_LowFareSearchService_execute air-search|jiniIn_LowFareSearchService_execute air-search|com.orbitz.afo.lib.SearchFilter air-search|com.orbitz.afo.lib.LowFareSearchServiceImpl.execute air-search|jiniOut_AirportLookupService_findLocationByIATACode market|jiniIn_LocationService|DbPoolExhaustedException
  31. 31. Myth: Instrumentation Causes Bugs
  32. 32. Final Thought Performance monitoring is easy when the objects practically measure themselves.
  33. 33. Thank You • Special thanks to: – Fellow Co-Authors – Matthew O’Keefe and Stephen Mullins – Neil Gunther – Mentoring and Candid Editorial Review – Lead Graphite Developer – Chris Davis
  34. 34. Websites • ERMA Project : http://launchpad.net/erma • Graphite Project : http://launchpad.net/graphite
  35. 35. ? michael@ducy.org gopaczewski@orbitz.com

×