Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
com/ksmpartners/ernie
Agenda
Performance
What is Ernie?
An asynchronous report generator that can be embedded in a Java/Scala application or exposed as a RESTful web service. Ernie generates reports based on definitions created with the BIRT Report Designer (supports JDBC, web services, Hive/Hadoop, and XML as data sources). Ernie provides CRUD management of report definitions and report output.
Less silicon investment required when real-time speed is not expected and report processing can be confined to a specific thread count / time window regardless of user load. Many real-time reporting systems constantly preprocess data to allow online reporting. Asynchronous report processing takes place only once a request is submitted.
Scalability -- vertical scaling will affect report processing speed, not maximum load.
Developers/users need only manage two resources: definitions and output Reduced software cost: less UI to create and maintain (no web report viewer or designer necessary) Increased flexibility: through parameterization, a single report definition can serve many distinct purposes and generate output in different formats
In 2010 study, open source technologies were found to power more than 50% of polled enterprises core infrastructure, and adoption focus is moving further up the stack (application servers, BI tools) Prediction that open source adoption will become / is becoming a strategic rather than tactical maneuver o That is, a choice made by business leaders rather than developers o Lower initial costs, more flexible support sourcing, more flexible integration o (Likely obvious to everyone here)
Technologies
Eclipse BIRT akka a toolkit and runtime for building highly concurrent,
distributed, and fault tolerant event-driven applications on the JVM
Project overview
Main components:
Client-side Ernie engine akka ActorSystem Ernie embedded API (validation, error handling)
Ernie server
Embedded APIs
Idiomatic scala/java APIs for interacting with Ernie.
Ernie server
Provides the same functionality as the embedded APIs in the form of a REST web service.
Also:
Ernie-gatling A lightweight stress testing suite written using Gatling. Scenarios written in Scala DSL and output generated using Highcharts. Ernie-model Serializable domain objects used for all information passing and persistence.
Ernie performance
Ernie-gatling code
Each simulated user: 1. 10% of the time, create a definition. 2. Get all available definitions 3. Repeat the following 5 times: a. 50% of the time, post a job and get the result b. 50% of the time, pause for 2 seconds then post a job 4. Repeat 3 times: get the output of any of the users jobs Over 2 minutes, start 10000 of these sessions
Ernie performance
Embedded API results overview Embedded API is able to process around 35000 requests for report
output retrieval and 10000 report generation jobs in a total of 3 minutes
Mean response time of less than 120 ms for over 200 requests per second.
Ernie performance
Output retrieval response time vs Global # requests/sec
See also
http://github.com/ksmpartners/ernie Eclipse BIRT homepage Actuate iServer/iHub for a commercial alternative Comparison of open source BI tools
http://www.innoventsolutions.com/open-source-reporting-review-birt-jasper-pentaho.html