Designing an unobtrusive analytics framework for monitoring java applications sampo suonsyrjä
Post on 21-Jan-2017
207 Views
Preview:
Transcript
Designing an Unobtrusive Analytics Framework
for Monitoring Java Applications Sampo Suonsyrjä and Tommi Mikkonen
Dept. of Pervasive Computing Tampere University of Technology
Contents • Context
– Paradigm change in software development
– Web apps vs. installable programs
• Motivation – Why the
unobtrusiveness?
• Case – Vaadin framework as the
platform of a target program – The designed analytics
framework
• Discussion • Conclusions
17.10.15 2
Paradigm Change in Software Development
• Waterfall method and such – User involvement only before
development – Requirements defined before
any use – Systems remained the same
throughout their life – Changes in user
requirements? No more use! Throw the cd away
• Agile methods – Requirements defined as late
as possible – Users involved iteratively – More knowledge of what is
possible and needed – Developing less, but with a
greater accuracy – Changes in user requirements?
Order an extension to the sw. dev. project
17.10.15 3
Paradigm Change and the First Frontier
• Feedback with agile methods – User surveys, thinking aloud,
observations – Manually collected
qualitative data – Stops when development
stops • Continuous Delivery &
Deployment systems – New versions are delivered
faster than ever
– Developing experiments, not just reacting to requirements
– Usage Data = results from these experiments
– Automatic collecting needed • Web as a platform for analytics
– Channel is clear – Tools are available – A/B testing is easier than ever – Continuous experimentation
17.10.15 4
Why the Unobtrusiveness?
• Collecting usage data leads to changes in the target program • Target program is continuously under change • Target program can be built by others • Data should remain
– Collectable – Comparable between different versions
• If data collecting is independent of the target.. • ..then data collecting mechanism could be reused
17.10.15 5
Vaadin Framework • Open source framework
for developing Rich Internet Applications
• Applications are written in Java..
• ..and then transformed into AJAX applications
17.10.15 6
Target Program • Demo app of the Vaadin
Framework • QuickTickets Dashboard
Demo • Source code available • Built by someone else
than the researchers
17.10.15 7
Target Program public DashboardView() {
HorizontalLayout top = new HorizontalLayout();
addComponent(top);Button notify = new Button('2'); Notify.addClickListener(
new ClickListener(){...
});top.addComponent(notify);
};
17.10.15 8
The Designed Framework for Unobtrusive Analytics
• AspectJ for usage monitoring
• Fluentd for collecting • ElasticSearch for storing • Kibana for visualizing
17.10.15 9
AspectJ public aspect AddComponentListener {pointcut addComponentCall(Button b):
call(* *.addComponent(*))&& args(b);
after(final Button b):addComponentCall(b) {
b.addClickListener(new Button.ClickListener()
{ public void click(ClickEvent e) {
dataCollector.logEvent(b, e);}});
}}
public DashboardView() {HorizontalLayout top = new HorizontalLayout();addComponent(top);Button notify = new Button('2'); Notify.addClickListener(new ClickListener(){
...
});top.addComponent(notify);
};
17.10.15 10
AspectJ
• Aspect-oriented programming is unobtrusive by nature
• No alteration of the original source code • Tooling is affected however
– AspectJ dependency inserted – Aspect class file inserted – Normal compiling + aspect weaving
17.10.15 11
Fluentd
• Implemented similarly as aspects – Fluentd dependency added – A logging class added
• Parses data into JSON • Sends data for storing • In this case, Fluentd was
installed and run on the same machine as the target program
17.10.15 12
Fluentd
public class DataLogger {private static FluentLogger LOG = FluentLogger.getLogger("button.click");
public void logButtonClick(Button b, ClickEvent event){ Map<String, Object> data = new HashMap<String, Object>();
data.put("Button Caption", b.getCaption());data.put("Button ID", b.getId());...
LOG.log("click", data);}}
17.10.15 13
ElasticSearch and Kibana • ElasticSearch is document
oriented • Data was already in JSON
àName fields automatically • Real-time access with Kibana • Different visualizations readily
available
17.10.15 14
Discussion
• RQ1: To what extent can a data collecting feature be implemented without compromising the evolution of the target program?
• Usage monitoring inserted without changing the source code • Aspect and logging class files and dependencies inserted • Target application’s evolution was not compromised
– No additional effort needed if new version has different buttons – However, if the new version introduces new ways of implementing
buttons aspects need changing as well
17.10.15 15
Discussion
• RQ2: What types of data can be collected with the given approach?
• Aspect-oriented monitoring is flexible – Pointcuts could be made on a vast variety of different points – Advices can include almost arbitrary code – Access to the target program in source code level
• Vaadin Framework provided an abundant platform for collecting data • Usage data collected in this case • Perhaps end-user feedback in the future?
17.10.15 16
Discussion
• RQ3: How to connect the data collecting feature with an analysis framework?
• Aspect-code can be put to produce data in various formats àUnified logging layer (Fluentd: JSON) àPossibility to use standardized storing and visualization tools àUseful when combining different kinds of data (access, error, application logs etc.)
17.10.15 17
Conclusions • New means of getting feedback
from end-users are needed à Analytics with usage data
• New versions continuously à Need for unobtrusiveness à Aspect-oriented collecting
Thank you!
17.10.15 18
top related