opinion


14
Dec 10

JEE OSS Container Startup Times – Apples vs Oranges

NOTE: This is the first part of a series (hopefully) that we’re trying out to see if you like it, find it interesting, helpful, whatever. Doing timings actually consumes a lot of time so we would really appreciate any feedback.

I still have vivid memories of the time when JBoss 4 started for 26s on my devel machine with only its vanilla apps deployed (JBoss 5 was twice as slow). I then thought that I’ll rant about it but for no apparent reason I did not.

Time has passed and I got some extra motivation to do a startup timings for containers with their default configurations. The motivation came from a colleague of mine, Anton Arhipov who also helped me time the containers and write this post.

Our plan

Take all containers and app servers out there and compare apples to oranges. Startup a AWS Large Instance (4 EC2 compute units, high I/O performance, 7.5GB of memory) and time the startup of vanilla containers with the latest JDK (1.6.0_22 at the time of running the tests). You can check out the configuration of Ubuntu and run your own tests via launching the ami-84fd0bed at Amazon AWS.

WTF, why? Don’t you have anything better to do?

Well, hopefully this will be a start of something bigger. Actually Anton’s idea was to make something similar to Matt Raible’s web framework comparison. Of course for a similar comparison of containers a lot more is needed than just startup time timings. Clustering, session replication, availability of services comes to mind at the moment. See comparison of application servers from Wikipedia.

I’m personally interested in the startup times because there are developers out there who don’t know that the startup times can have an order of magnitudes differences and vendors don’t care too much about developers’ productivity as just pushing out new features.

And we do have better stuff to do but we do need time off from our regular activities.

Results

Let’s start by observing the overall results of the startup times. As we can see on the graph below, the pure servlet containers, Tomcat and Jetty, are way ahead of the full blown containers, which is obvious (remember, we’re comparing apples to oranges here!). Maybe this data doesn’t help you very much, but actually you can make some conclusions out of it: try to implement your application in a way that it doesn’t depend on a heavyweight container with the slow startup time! Obviously, this is not always possible, but it is worth trying.

Next, lets see how the winners compare. Tomcat seems to be a fraction of a second faster than Jetty with Tomcat 7 being the fastest with under a second for the startup time. Comparing Tomcat to Jetty is pretty fair but not very reasonable as both are very fast. The only area where Tomcat really beats Jetty is the shutdown time. Jetty executes a shutdown hook when you try to stop it, and it takes almost as much as it takes to start the container. Tomcat, in opposite shuts down immediately.

The next chart shows the startup times for the heavyweight guys. We’re missing Geronimo in our test, this will be corrected later.

Let’s have a look at the outsider of the shootout – JBoss. We have to mention here is that the measurements we’re done with the default profile. JBoss is a very configurable application server in terms of services it runs, but we measured the default profile just because it seems that it is the most commonly used by developers (our wild guess, do comment if we’re way off).

You can notice a bad tendency for the startup times starting from JBoss 4.2 and growing until JBoss 5.1. We can see an improvement for JBoss 6.0, and there’s a remarkable improvement in startup time for JBoss 7.0 You might wonder what has changed for JBoss 7.0 so that the time improved an order of magnitude? The answer is that JBoss 7.0 is OSGi-enabled and it seems that it is not starting all its services on the startup modular! Again, this is what happens when you compare apples to oranges! To make the results look more real, we’d have to deploy a mid-size application to the container which would enable some of the services on the startup. We’ll do that in our upcoming tests.

Besides the graphs we’ve also have the data in a spreadsheet.

What next?

We see that OSGI containers are really fast to startup. We’re thinking of running the tests with an app deployed so that more modules are started up on startup (read: real life tests). Also we’ve left out commercial containers at the moment. This is due to we wanting to release the Amazon AMIs and not deal with licensing issues. We’ll definitely run tests with commercial containers if there is interested out there (please comment which container would you like to see in the shootout).


23
Apr 10

Somebody is stealing my website design – what are my options?

The authors of this blog also run a software company called ZeroTurnaround. We monitor the mentions of the company name and its products with different tools. I personally use Google Alerts (you get an email when the interwebz mentions your monitored word).

One day we stumbled upon a page that had stolen our website design. It was not a question if they had borrowed ideas from us but they had literally stolen everything. The html, css, images and even had our logo up! Our website is zeroturnaround.com and their, jbrute.info (the one which stole the design).

My first reaction was that I’ll just drop them an email, make sure that they’re aware that it is a crime (is it?) and order them to take it down and problem solved. We have no interest of suing anybody. Maybe they were just playing around. Here is a picture how it looked at that time.

The plan was easy but getting contact information was not. At least they had taken down our contact information from the footer. Not finding even an email (then again, smart move, too many stories of criminals accidently leaving their card at the scene of the crime) from the webpage I turned to DNS whois. Whois records show

Domain ID:D32012015-LRMS
Domain Name:JBRUTE.INFO
Created On:24-Mar-2010 20:00:01 UTC
Last Updated On:24-Mar-2010 20:15:33 UTC
Expiration Date:24-Mar-2011 20:00:01 UTC
Sponsoring Registrar:GoDaddy.com Inc. (R171-LRMS)
Status:TRANSFER PROHIBITED
Registrant ID:CR44517482
Registrant Name:Conor Ryan
Registrant Organization:Warlock 999 Development
Registrant Street1:One Vernon Drive
Registrant City:Vernon
Registrant State/Province:New Jersey
Registrant Postal Code:07976
Registrant Country:US
Registrant Phone:+1.5555555555
Registrant *************@warlock999.info

All emails sent to warlock.info or jbrute.info bounce. Googling the name and address does not bring much up. It’s like a dead end. I’ve also contacted the registrar and hosting, still waiting for replies. They’ve updated their website design today, removed the video, our logo and put up some text.

What are my options to deal with something like this? Proving that the design belongs to us should be easy (the html is too similar). How should I go about documenting this? I did make a screenshot when I first stumbled upon, but you could always say that I’m good in Photoshop.

Are there other options to contact a domain name owner besides information from website and WHOIS?


15
Apr 09

How to sneak easter eggs past the pointy haired boss

I’m part of a small team that is developing a cool Java product. We’ve been afloat for more than a year and we’re doing better every month. We’ve grown quite a bit during this time. There used to be only one developer, then I joined the team and now we already have 4 devs.

Until now we’ve got away with most of the jokes we’ve pulled but we have matured over the period and we’re not the same young naive happy hackers anymore (right!). We still do like to throw a joke in every now and then.

We released a XML configuration file schema with our last product release and we had to pick a schema location for that. Remembering the Mozilla Ghostbusters reference we also had to reference something. And so we did.

But last week we got an email from our pointy haired boss. He had made a memo with 5 points about the documentation we have. The last point read: Why is there an alderaan in the namespace? It should be our product name!

I guess this marks a landmark in our small team, we’re not small anymore and we’ll have to figure out a way to keep the pointy haired occupied with something (Google Analytics usually does the trick). Luckily for us, we could still play the founder card, but later we may not be so lucky. What jokes have you managed to sneak by your boss and how did you hide them?

PS. We did not have to change our schema but it came quite close.


16
Apr 08

6 things you want to know in an interview

6 things you want to know in an interview — Artima has a post with the best interview advice I’ve seen for some time. Ignore the boring beginning and check out the Six Hiring Points and how to test for them. I think that positive answers to those questions warrants a great addition to your team. Although the “Are you toxic?” question is too general to stand for all people skills — I’d want to know if the interviewee can communicate as well, he can be pleasant but too quiet.


12
Apr 08

The problem with Google Apps Engine

The problem with Google Apps Engine — privacy, lock-in and proprietary APIs. How come I’ve never thought of that? Oh, wait, I did…