How do you evaluate and decide which web technologies (and there are myriads out there) to use for your new web application, which one potentially gives you the best performance, which one will likely give you the shortest time-to-market? The Apache incubator project Olio might help. Olio is a is an open source web 2.0 toolkit to help evaluate the suitability, functionality and performance of web technologies. Olio defines an example web2.0 application (an events site somewhat like yahoo.com/upcoming) and provides three initial implementations : PHP, Java EE and RubyOnRails (ROR). The toolkit also defines ways to drive load against the application in order to measure performance. Apache Olio could be used to
- Understand how to use various web 2.0 technologies such as AJAX, memcached, mogileFS etc. Use the code in the application to understand the subtle complexities involved and how to get around issues with these technologies.
- Evaluate the differences in the three implementations: php, ruby and java to understand which might best work for your situation.
- Within each implementation, evaluate different infrastructure technologies by changing the servers used (e.g: apache vs lighttpd, mysql vs postgre, ruby vs Jruby etc.)
- Drive load against the application to evaluate the performance and scalability of the chosen platform.
- Experiment with different algorithms (e.g. memcache locking, a different DB access API) by replacing portions of code in the application.
- Sun is using Olio to create deployment, reference architecture and performance tuning guides for their customers such as: An Open Source Web Solution - Lighttpd Web Server and Chip Multithreading Technology
- U.C. Berkeley is using Olio in a variety of research projects, the first of which is Cloudstone.
- A few web2.0 companies are using Olio as a training tool to teach their new developers PHP and Rails.