Jiffy is an end-to-end real-world web page instrumentation and measurement suite. The first beta was released on 6/23/2008, as announced at O'Reilly Velocity 2008. Here's a a copy of the slides and here's the video.
Jiffy was built and is maintained by the WhitePages.com team.
Jiffy allows developers to
- measure individual pieces of page rendering (script load, AJAX execution, page load, etc.) on every client
- report those measurements and other metadata to a web server
- aggregate web server logs into a database
- generate reports
Additionally, using the Jiffy extension for Firebug built by Bill Scott from Netflix, developers can see and test Jiffy-based measurements.
The system consists of the following components:
- Apache proxy (httpd.conf) configuration for logging Jiffy posts
- An ingestor (written in Perl) which runs on the Apache server and posts logs to a database through DBI. Documentation here, plus a SampleJiffyLog.
- Working DDLs for Oracle XE and higher. Documentation here. We haven't (yet) provided DDL's for other databases, but the database model described in the documentation has been tested in a MySQL installation.
- Reporting rollup code for Oracle (MySQL to come)
- A reporting UI using the Yahoo! User Interface library
You can use Jiffy end-to-end by
- including Jiffy.js in your pages and instrumenting them with the appropriate mark and measure calls
- Making the configuration changes needed to your proxy
- Adding the ingestor as a cron job on your web servers, with appropriate connection strings
- Setting up the data model
- Editing the reporting configuration and deploying the reporting tools
More simply, you can combine Jiffy and the Firebug add-in to view Mark & Measure results for a single developer client.
Note that there are a fair number of dependencies across the system, assuming that you can set up a fairly heterogeneous environment. Obviously much of the code and config is easily ported to single systems, and we may later combine parts.
- Apache 2.X for the proxy config (untested in previous versions, but it will probably work)
- Perl 5.8 or later for the ingestor
- Oracle XE and higher
- PHP >5.2.0 or PECL json: >= 1.2.0 for the reporting tools, plus online access to the Yahoo! User Interface Library (which you could copy and serve in-house)
To use Jiffy, checkout the source from the Source tab above. You'll need an svn client.
We're currently supporting the project through the jiffy-web Google Group: please send questions, problems, etc. there.
Join the Project!
There's still plenty of work to do to improve Jiffy, including
- More database options (we really need a MySQL port)
- Improvements to reporting tools
- A means to glue jiffy.js to your automated test suite
- Documentation and use-case improvement
- Aggregated log parsing (rather than per-web-server log parsing) as an option
We're still figuring out the plan for accepting patches - for now we're going to use the Google Group for everything.