The Server Side Java Symposium – Day I

March 17th, 2010 @

The 2010 edition The Server Side Java Symposium began today in Las Vegas. This is the 8th edition. Having attended four of eight, I find this franchise always has its finger on the the pulse of the java community. Judging from the focus this year, the community is buzzing over cloud computing. This is good news because it means that we have moved away from the previous obsessions. Back in 2004, our biggest concern was lightweight containers because J2EE made our apps bloated. The open source community, with the likes of Spring, Jboss and hibernate to name a few, came to the rescue and saved java from itself. It did more with less. Now, the recently minted JEE 6 spec has commoditized most of those ideas. Two random examples of this are dependency injection (popularized by Spring) and pojo persistence (popularized by Hibernate). These are now part of JEE as CDI and JPA modules. So we can now stop debating these points and move on to new frontiers….cloud computing!

Mr. Java

The session started with Mr. Java himself, James Gosling, the keynote speaker and Java creator. Officially, the keynote was about Java today and tomorrow but Gosling spoke mostly about the past and present. Java remains a phenomenal success story with 15 million downloads weekly but surprisingly, the java runtime is also found in unexpected places: smart cards running servlet containers, TV devices and the Amazon Kindle. As Gosling put it, the testament to Java’s success is that you don’t even know that it is running your apps.

A cloudy day

Although Las Vegas was warm and sunny today, inside the conference, it was all cloudy computing. Cloud computing is a concept that has been around for a long time. Ten years ago, it was known simply as grid computing. Nobody today could clearly articulate the difference between the terms grid and cloud so for all intents and purposes, this is the same idea with a new name. The difference this time around is that it has much better support. Amazon, Google, Jboss and GridGain, to name a few, all have products that enable cloud computing for your apps. The interesting part, however, is the varying ways in which the cloud is offered.

Drink the Kool-Aid

There were some interesting presentations of the Amazon and Google offerings. Both of these companies have built successful applications that can scale astronomically. Now, they decided to monetize their philosophies that brought them success. They offer managed environments that can host your applications for free, if the processing power needed is low, and for fee otherwise. But if you want to get your app on their cloud, you need to drink the Kool-Aid first.

The tenets of cloud computing (the Kool-Aid ingredients) include forgoing relational databases. Data needs to be denormalized and replaced with duplication, replication and partitioning. Relationships are not enforced by the persistence layer but rather at the application layer. Transactions are restricted to data that is closely related. The sacrifices made here pay off in terms of scaling out applications. Google’s persistence, for example, uses their proprietary BigTable that can guarantee a consistent response time regardless of the size of the data set. Traditional relational databases encourage the use of normalized tables which strive to remove data duplication. They have faster writes but slower reads because typically, you need to join tables that are normalized. Google’s approach, with denormalization and data replication, will have the opposite result – slower writes but faster reads – a tradeoff that makes sense most of the time.

Amazon has an interesting twist to its offering. Rather than having your app entirely cloud based, it can be hosted in your own environment but access the Amazon cloud-based services. For example, it offers the Simple Storage Service which is a cloud-based storage system wrapped inside a RESTful API. You can outsource your entire database needs and not worry about hosting this storage service, including the infrastructure costs, and pay only for what you use.

Don’t drink the Kool-Aid

Although I find the whole notion of cloud computing very compelling, I’ve seen this movie before. There is a tendency in our industry to go overboard and to misuse new technologies. I’ve seen this in the 1990’s with Corba (every class is remotable), with EJB in 2000’s (every class is an EJB), and Cloud computing could be next. Personally, I’m not ready to give up relational databases just yet. I fully understand that this is the sacrifice that needs to be made to be massively scalable but much of the time, your app does not need to be. In that case, I won’t drink the Kool-Aid.