Cloud Foundry: Design and Architecture
Derek Collison discusses the goals, the design premises and patterns employed in creating the architecture of Cloud Foundry, VMware’s open source PaaS, unveiling internal architectural details.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Dilip Krishnan on Jul 13, 2010
There are plenty of web services platforms/application frameworks available today that support RESTful services to varying degrees. In a recent post Stefan Tilkov puts out a list of criteria that serves as a starting point in evaluating these frameworks and platforms.
He Proposes that, at a high level, the questions one must ask are are (the more “yes”s for the answers the closer a framework is to an ideal REST web application framework).
Mike Amundsen suggests additions to the REST Litmus Test for Web Frameworks list, He suggests that the various components of a URI the path and the query string, carry the same weight to distinguish a resource from another. He quotes Roy T. Fielding on REST-Discuss, 2002,
[F]or server-constructed URI, there is no effective difference between query and path info -- both distinguish a resource.
A few prominent web frameworks that support developing RESTful services are:
Java
.net
Ruby
Python
Do add your comments so we can maintain an updated list of frameworks and platforms for building RESTful services. Be sure to visit the original post for details.
Tutorial: Integrating SQLFire with tc Server and Spring Data
RDBMS to NoSQL: Managing the Transition
Banking Case Study: Scaling with Low Latency using NewSQL
Introducing SQLFire: a memory-optimized, high performance SQL database
VMware vFabric SQLFire - Test drive the data management system with memory speed, horizontal scalability and a familiar SQL interface
After reading Stefan's post I've had the same initiative asking around what web frameworks are really passing this test. So, far the answers I've got are:
- JAX-RS implementations
- webmachine (Erlang/Basho)
While I'm not very familiar with either Django and Ruby on Rails, as far as I know both of them will have problems with at least the 1st test (and I think Django is not passing the 2nd test either, as it is more of an action based framework).
:- alex
Don't forget SpringMVC 3.0
I'm a big fan of JAX-RS (Jersey). I'd even want to use it to implement non-restful services. It's really quite nice.
I find Apache CXF to be a very good JAX-RS implementation (it also provides a JAX-WS implementation).
Thanks! updated the post.
I would suggest adding HATEOS support to the list of REST framework criteria. I haven't seen a good framework yet that easily supports the idea of returning URIs to other resources without requiring you to write custom views that render your internal domain objects to "restful" responses. The Restfulie GEM in RoR is at least trying to provide an implementation but it isn't there yet.
For example, look at something like the Netflix API which appears to support HATEOS very well. I'm assuming they implemented a lot of custom code internally to get that behavior.
-mike
Excellent point.
Resfulie supports HATEOAS.
I'm surprised no one has mentioned Lift yet.
I'm interested in seeing how they approach this but something went wrong. They are sorry.
restfulie.caelum.com.br/restful_java
I just wanted to point out that RESTx is both Java and Python. Developers can write components (that can be used to create resources) in both languages and we're looking to add support for Groovy and Ruby, plus a JavaScript client.
It is still early days for the project but would love to get your feedback on it.
Ross (at mulesoft dot com)
RESTx does support HATEAOS. It does so in two ways: First, all the components and resources on a server can be discovered just by following links. Secondly, component authors may use a built-in facility to store items, which can be viewed as a collection. If so desired, a request to this collection returns a list of all resources. When a new resource is created, the "202 Created" response is returned with a link to the new resource.
I'm interested in seeing how they approach this but something went wrong. They are sorry.
restfulie.caelum.com.br/restful_java
Though, to be fair, they will take a look at it shortly.
RESTfulie java can be found at:
github.com/caelum/restfulie-java#readme
If you'd like to see how Spring MVC stacks up, checkout the following showcase:
blog.springsource.com/2010/07/22/spring-mvc-3-s...
Keith
The link is an old one, where did you find it so we can update it?
Regards
Derek Collison discusses the goals, the design premises and patterns employed in creating the architecture of Cloud Foundry, VMware’s open source PaaS, unveiling internal architectural details.
Andrew Watson talks about the work of the OMG, where CORBA is alive and well (hint: in your car), UML and UML Profiles vs. custom Modeling languages, DDS and other middleware, and much more.
Sohil Shah discusses creating iPhone and Android enterprise mobile applications based on cloud services using the open source platform OpenMobster.
Paul Sanford presents the transformations supported by data throughout its life cycle, and how that can be better done with Splunk, an engine for monitoring and analyzing machine-generated data.
A common “best practice” for unit tests is to only write a one assertion in each test. I intend to question this advice by showing that multiple assertions per test are both necessary and beneficial.
John Rauser presents the architectural and technological evolution of Amazon retail websites starting with 1994 and ending with adopting Amazon Web Services.
Michael Stal discusses system architecture quality, how to avoid architectural erosion, how to deal with refactoring, and design principles for architecture evolution.
Every developer has had to integrate with another system, API or component. Tis article provides strategies to handle the change and for he separating system boundaries.
16 comments
Watch Thread Reply