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 Charles Humble on Sep 21, 2011
At this year's VMworld, Red Hat conducted a survey of over 1,200 attendees on their cloud plans. One of the questions was, "What primary development framework are you planning to use in the cloud?" The results were as follows:
Whilst the survey doesn't allow responders to distinguish between "Java with a framework other than Spring", and "Java EE", and the results should therefore be treated with some scepticism, they do chime with other research. Many enterprises have made a considerable investment in Java - a recent Forrester survey suggested that around 64% of businesses use the platform - and a Java EE PaaS would provide a straightforward way for these enterprises to transition their existing Java EE applications to the cloud.
However Java EE compliant PaaS products are thin on the ground. Red Hat's OpenShift, which follows Red Hat's acquisition of Makara in November of 2010, is one of the first. The product is currently in free developer preview, running on top of Amazon's EC2. It comes in two versions – Express and Flex. Express is a free multi-tenant offering that supports the Java EE 6 Web Profile. The Flex platform offers the dedicated application servers (JBoss, Tomcat) shell access, and dedicated hosting. Since JBoss AS 7 isn't certified against Java EE 6, the product doesn't quite support the full Java EE 6 standard, but it will do once JBoss AS 7.1 is released.
One of the problems for vendors wishing to offer a Java EE PaaS is that the platform has substantial memory demands, an issue which Oracle is looking to address through the Jigsaw modularity solution, and other changes planned for Java EE 7 and SE 8. However, many Java EE vendors have introduced modularity to their application servers based on OSGi, allowing them to circumvent the problem to a certain extent. Issac Roth, formerly of Makara and now PaaS Master at Red Hat, told InfoQ
The issue is that the JVM is not really set up to run multi-tenant, and to get it that way would require a very fancy implementation of the JVM, or ideally some adjustments to the language spec. We are indeed running Java EE in a multi-tenant environment which gives us terrific density for JEE workloads. We've done this by creating the slimmest Java container out there - JBoss AS 7 - and using the OS-level virtualisation in Red Hat Enterprise Linux.
Since some of the code in OpenShift has come through acquisition, Red Hat hasn't yet released it as open source, though it has signaled its intention to do so. The company is also yet to publish pricing information, though Roth told us that it expects it to be in line with other providers.
Roth also told us that the company is actively involved in the Java EE 7 expert groups, and will be using some of the knowledge it acquires from running OpenShift to feed into the Java EE 7 design process.
Another firm with plans to support Java EE 6 using JBoss is Platform as a Service startup CloudBees. At present CloudBees, which launched in November 2010, includes DEV@cloud, a service that lets developers take their build and test environments to the cloud, and RUN@cloud, which lets teams deploy these apps to production on the cloud.
The RUN@cloud product is based on Tomcat, with a JBoss version announced but not yet released. It is offered both hosted atop Amazon EC2, and is working on a private offering that lets users run the PaaS on-premises.
Whilst the PaaS space is still quite young and fragmented, there are some obvious front runners, with firms like Amazon, Google, and Microsoft already well established. Thus any company wishing to enter the space needs a strong market differentiator.
For CloudBees one key differentiator is continuous delivery. Last year the firm, led by former JBoss CTO Sacha Labourey, acquired InfraDNA, and its founder Kohsuke Kawaguchi who created Hudson and now leads the Jenkins fork of the Hudson CI server. CloudBees' first PaaS product was Jenkins as a Service under its DEV@cloud branding. DEV@cloud allows developers to build their code using Git, Subversion, and/or Maven, test it using Jenkins, and then deploy it into the RUN@cloud service. Labourey told InfoQ
We care about the complete application lifecycle. You will see a bunch of PaaSs out there which define a PaaS as being "how to deploy an existing application into the cloud". So there is a focus on this production/runtime aspect only. We think that is just part of the picture, and that for the cloud to make sense you need to provide a solution that helps developers along the entire application lifecycle, from development to production.
A second differentiator is the firm's concentration on the JVM. Whilst many PaaS vendors are aiming to be language agnostic, CloudBees solely supports the JVM. Of course the JVM is polyglot by its nature, and CloudBees applications can be written in Java, Scala, Clojure or any other JVM-based language, but this concentration, the firm argues, allows it to have greater depth of coverage for developers targeting the JVM.
Pricing for the JBoss product is yet to be announced, but is expected to be around 50% more then the existing Tomcat offerings.
CloudBees employees around 30 people. It is VC funded, most recently raising $10.5 million in Series B funding. The round was led by Lightspeed Venture Partners and joined by Matrix Partners, the latter of whom also provided the Series A funding.
Early Access! Download JBoss Developer Studio 5.0 now, with packages for Mac, Windows or Linux!
Introduction to WebSphere Liberty Profile
Good Relationships: The Spring Data Neo4J Guide Book
Big Data, Cloud & Mobile: Navigate the New Development Reality with Resources from IBM
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
Amazon Web Services Elastic Beanstalk is an existing PaaS platform for Java:
aws.amazon.com/elasticbeanstalk/
VMWare's own Cloud Foundry is also an existing PaaS platform for Java:
www.cloudfoundry.com/
It is also built on top of EC2 I believe.
Heroku have recently added Java support to their PaaS platform:
devcenter.heroku.com/articles/java
Then of course you have the Google Application Engine PaaS that supports Java:
code.google.com/appengine/
I only mention these links for completeness as the article does not contain them.
HI Chris,
True. There are others too, including MS Azure. But none of these are Java EE PaaS providers, which is what the article was concentrating on, hence why I didn't include them!
Charles
Chris, they are mostly Java Servlet/Web containers with the exception of GAE which doesn't even claim to support any spec. The only Java EE PaaS at the moment is OpenShift as mentioned in the article I believe. But I personally would pay more attention to services such as CloudFoundry where there is an infrastructure software company (VMWare) and an application framework/stack company (SpringSource) behind. Being Java EE compliant is probably not relevant to many people as long as there is a JVM and web container on offer.
Jelastic (Java Elastic Cloud) is the next generation of Java hosting platforms which can run and scale any Java application with no code changes required.
jelastic.com
You can mix and match your software stacks. Select from Tomcat, GlasshFish, Jetty application servers and SQL (MariaDB, PostgreSQL, MySQL) or NoSQL (MongoDB, CouchDB) databases. It's easy to use.
Azure and Elastic Beanstalk are certainly Java EE, both running in Tomcat 6 containers and both being relatively simple app uploads.
I take yours and Chen's point with GAE and Heroku (I succumbed to a frenzy of locating PaaS providers).
Chris,
The servlet spec is part of Java EE, but a servlet container like Tomcat doesn't qualify as a Java EE compliant container. There's a lot more to even the basic web profile than just servlets.
VMWare's own Cloud Foundry is also an existing PaaS platform for Java:
www.cloudfoundry.com/
It is also built on top of EC2 I believe.
Not true - you can target a CloudFoundry VM to run on several types of VMs, including EC2 instances or vSphere instances, however the current public CloudFoundry is not based off of EC2. Lots of details at the CloudFoundry FAQ, but basically it's open source and I see it as a VM which provides a PaaS layer over top of an underlying infrastructure VM (just as the JVM provides a higher abstraction layer over top of the underlying x86/Sparc/x64/ARM Windows/Linux/Mac machine).
VMWare's own Cloud Foundry is also an existing PaaS platform for Java:
www.cloudfoundry.com/
It is also built on top of EC2 I believe.
It runs on their own infrastructure, not EC2. There is a pretty cool way to run in on Ubuntu on EC2: cloud.ubuntu.com/2011/09/from-zero-to-drawbridg... and Ubuntu 11.10 will include Cloud Foundry. Might be a nice platform for private PaaS.
Chen,
VMW is not the only infra+app company, RHT is as well. In any case, I fail to see how this is an advantage (both of those offering are stil in beta or developer preview FYI).
As for Java EE, I know it is not super-hype to step up and promote Java EE, but EE6 and its web-profile have been extremely well received by Java developers, probably because it is one of the less complex Java programming environment for server side application development.
Cheers,
Sacha Labourey
CloudBees
Compiled a list of PaaS providers for Java development and deployments is here.
intelligence.tribhuwannegi.com/2011/09/platform...
Hi Chris - You may want to take a look at CumuLogic (cumulogic.com), very first enterprise-ready Java PaaS founded by former Sun Microsystems team where James Gosling is personally involved as an adviser. CumuLogic has flexibility to use multiple containers and runs on multiple clouds, such as Vmware vSphere, Openstack and Citrix cloud.com. We are in fact the first enterprise PaaS for private / Federated clouds. Please feel free to drop us a line to learn more. Thanks
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.
14 comments
Watch Thread Reply