Friday, February 12, 2010

These are a few of my favorite things..

GWT + Tornado Web + Riak =


  • The high performance of frontend combined with high performance backend make for an awesome user experience.
  • Non-blocking web servers are just cool! Actual I have blogged about this a lot but it really comes down to efficient resource utilization and simplified programming model. 
  • Scalable data storage system. This I have also blogged about how RDBMS are quickly flawed for scaling even a small volume of web traffic.
  • As these are my favorite tools that I call myself an "expert" (and expect to get paid to consult for them) I should put them together to see what the issues are.
I wrote up my opinions on javascript frameworks before. For a project where I am choosing the tools I am going to pick whatever creates the best user experience. As the web has provided a lot of platform independent development at the end of the day there are a lot of compromises we must make.

The current GWT compiles Java to Javascript (bytecode if you will) for 6 different browsers. The performance is noticeable not only at load time but using the application.  The major down side I can see if there is a bug in the compiled version it could be very difficult to find.

Tornado Web
I wrote a non-blocking web server and I am not even using it (shame shame shame). The truth is I was looking to try and us a non-blocking (async) library for Python and I found it here. The code better utilizes the operating systems non-blocking apis like epoll on Linux and kqueue on BSD. The problem is that I quickly figured out the code base was just so much better than what I was had. The only real problem is that they didn't  support some of the features and WSGI in a way that I would have liked. I will probably create a little project to do this but that is for another blog. I already have made some improvements in my clone. So not only do that have a simple non-blocking API for the servers side but they have a good one for using as a client (will talk about this later).

So I have covered how I think RDBMS that have any amount of traffic fail to provide constancy and force developers into writing lots of performance code. Any content management system more than likely is going to need to scale for large volumes of data and large volumes of traffic. Riak rules! They just release 0.8 which included a Javascript map/reduce plugin for writing map reduce. I actually didn't need to use the map/reduce but for the future features I plan on having I will soon. The main bottleneck I have is that there is no non-blocking Python API for Riak. I plan to use Tornado http non-blocking client to create a Riak client during PyCon ATL 2010 (If anyone can join me on a sprint let me know). This will allow this platform to scale up quickly. 

In summary I am very excited about this stack. It really feels like a best of bread tools for creating a rich user experience that can scale for the masses (once non-blocking Riak client is fixed). Please kick the tires and report bugs