views:

40

answers:

2

We're planning a new API server that will mainly serve JSON responses, with a RESTful interface. We're concerned about scale and availability. Are we on the right track using Restlet with Jetty (or another connector)?

One question we're asking is, is there anything in the Java world like Phusion Passenger? For example, a pre-built solution for keeping server instances up and healthy?

+2  A: 

The scalability and performance is ultimately going to depend much much more on how the application handling these requests is designed, its algorithms, if it accesses a database efficiently, how/if you cache data, etc than the choice of servlet containers or frameworks.

matt b
+1  A: 

Your question actually is not as much about Restlet as it is about designing a high-scalability, high-availability site. We find that Restlet does scale very well with the right system architecture.

Generally speaking you want to:

  • Run a cluster of web server machines, not just one.
  • Make sure your application is shared nothing, ie, no application state stored in your web servers, if at all possible.
  • Use a load balancer to spread requests to the least loaded web servers.
  • Make sure your JSON responses are cacheable.
  • Add an HTTP reverse proxy cache (eg, Squid) at the border of your site. As the caches between your site and your clients warm up, most of the inbound traffic will be handled by them, and not your web servers.
  • Write your client code to retry requests that fail. This way if a web server dies the next request will be load balanced to a surviving machine.
  • And of course you want to automate your site to bring up crashed web servers, etc. (This is the part that is perhaps better asked on ServerFault.com.)

REST is an architectural style that is ideal for this type of setup.

As @matt mentions you do need to watch out for raw performance, but generally your first concern should be to get the scalable, high availability architecture in place.

Some good sources on this are:

and especially:

Overstock.com runs a highly scaled web site and makes heavy use of Restlet to do it.

Jim Ferrans