Cloud computing is revolutionizing the software development industry, no more so than in the Java application space.
The first generation of cloud computing has been focused on virtualizing and managing infrastructure resources such as machines, networks, operating systems and servers.
The emerging 2nd generation of cloud computing brings an abstraction layer over that 1st generation where we see a movement away from low level system resources and instead focus on the application layer. The Platform-as-a-Service model allows developers to concentrate more on application development and then deploy that application to a managed application execution environment in the cloud without needing to deal with provisioning and configuring machines, operating systems and application servers.
The Platform-as-a-Service market for Java applications has exploded in 2011 with a flurry of vendors announcing offerings and a lot of merger and acquisition activity.
Let take a look at where Java Platform-as-a-Service stands today.
2. Java PaaS Definition At a minimum, a Java PaaS solution provides a JVM based execution environment, built on top of production-ready cloud infrastructure, that allows for the easy deployment of applications, without having to provision or configure low level system resources.
3. Survey Criteria Underlying infrastructure Java environment support Application architecture impact Development process impact Value added features Licensing and costs
4. AWS Elastic Beanstalk http://aws.amazon.com/elasticbeanstalk/ Built on top of Amazon’s AWS infrastructure Java Web Apps running on Tomcat 6 or 7 Potentially no rework necessary Eclipse plugin supports basic app lifecycle Provides monitoring, auto-scaling, DNS hot swaps Free tier available, pay as you go for the rest
5. CloudBeesRUN@cloud http://www.cloudbees.com/run.cb Public and private hosting options Java Web Apps only No significant application impact Command-line SDK and Eclipse Toolkit DEV@cloud, 3rd Party Services Free hosted tier available
6. CumuLogic http://cumulogic.com/ Public and private hosting options Supports Tomcat plus JBoss and WebSphere Can deploy WARs or EARs No impact on application architecture Still in private beta, no pricing announced
7. Google App Engine http://appengine.google.com/ Hosted on Google infrastructure Java Web Apps running on Jetty Large application architecture impact Eclipse plugin, allows local testing Free pricing tier, pay per use after that
8. Heroku http://www.heroku.com/ Does not support Java standards Severe impact on application architecture Deploy via Git Free tier, then sold in units of “dynos”
9. RedHatOpenShift http://openshift.redhat.com/ Runs on top of AWS Can run apps on JBoss or Tomcat No impact on existing application archtecture Uses Git for pushing changes to environment Still a developer preview
10. VMware Cloud Foundry http://www.cloudfoundry.com/ Hosted and private versions Command line and STS plugin Standard Java Web Apps supported Micro CloudFoundry allows local development Currently Beta
11. Other Vendors Microsoft Azure http://www.microsoft.com/windowsazure/ Imaginea http://www.imaginea.com/jpaas WSO2 StratosLive http://wso2.com/cloud/stratoslive/
12. Summary Many Java PaaS vendors in the market already A large number of offerings are still Beta Variety of approaches, some more standards based than others Will likely see more new vendors and existing vendor consolidation in next 12 months
13. Craig S. Dickson is an independent consultant based in Huntington Beach, California and Brisbane, Australia. He specializes in enterprise Java development, cloud architecture, software development best practices and team management. His clients come from diverse industries including entertainment, travel, manufacturing, knowledge management and independent software vendors. He speaks at industry conferences and contributes to the open source community whenever possible.
Cloud computing is revolutionizing the software development industry, no more so than in the Java application space.The first generation of cloud computing has been focused on virtualizing and managing infrastructure resources such as machines, networks, operating systems and servers.The emerging 2nd generation of cloud computing brings an abstraction layer over that 1st generation where we see a movement away from low level system resources and instead focus on the application layer. The Platform-as-a-Service model allows developers to concentrate more on application development and then deploy that application to a managed application execution environment in the cloud without needing to deal with provisioning and configuring machines, operating systems and application servers.The Platform-as-a-Service market for Java applications has exploded in 2011 with a flurry of vendors announcing offerings and a lot of merger and acquisition activity.Let take a look at where Java Platform-as-a-Service stands today.
For clarity here is a definition of what a Platform-as-a-Service solution for Java provides.
There are a lot of metrics that vendors can be evaluated against, so to keep things manageable, lets focus on few that roughly summarize our concerns as enterprise Java application developers.At the end of the day, there is hardware buried somewhere beneath the cloud. So if we are going to run a production app on a platform, we should probably care at least a little about what it is running on.And, seeing as we are looking at Java platform providers, what kind of Java apps can we run on them?Next, will our choice of cloud platform impact how we write our java application? Will we be OK if just stick to the Java standards, or will we need to learn a whole new set of rules?Also, if our team is already up and running and we have already settled into the tools we want to use to write and manage our code with and also test and release that code, can we keep using them or do we have start with new tools?Assuming the other factors are equal, is there any features of one platform that might make us want to choose it over another?And of course the literal $64,000 question, how much will all of these cloud goodies cost us?
Underlying infrastructure Built on top of amazon’s existing IaaS service including EC2 and S3Java environment support JDK 6 web apps run on Tomcat 6 & 7 Application architecture impactNo impact, standard java web appDevelopment process impactEclipse plugin allows for control of environment, deploying appsNot possible to test locally in a truly identical environment to productionHowever you can replicate production environment in the cloudValue added features-Based on a proven infrastructure-Leverage other AWS services to achieve monitoring, notification, autoscaling, databaseLicensing and costsFree tier availablePay per use after that
Underlying infrastructurepublic hosting on top of AWS, states that more public IaaS support is planned private hosting on OpenStack or VMware vSphere platformsJava environment support- Java web apps only, running on a JavaSE 6 environmentApplication architecture impact- No major impact, most java web apps can be deployed without changeDevelopment process impactCommand line eclipse plugin SDK, allows for build and deploy to local version and remote instanceValue added featuresDEV@cloud service that focusses on the development process – hosting of subversion, jenkins environmentEclipse plugin allows management of the DEV@coud resourcesLicensing and costsFree tier available with a restricted feature setPay as you go pricing also available, including MySQL hostingDEV@cloud priced separately
In beta, ex sun employees, James Gosling is an advisorUnderlying infrastructureSupports public and private cloud options including Eucalytpus, Vmware and Amazon EC2Java environment supportCan run Tomcat, Jboss or WebSphereCan also run either MySQL or DB2 – curious of missing Oracle and inclusing of WebSphere- Create a template of the resources you need and then launch an environmentApplication architecture impact- Can deploy EAR or WAR file depending on what resources you have deployed in your environment- No significant impact apart from having to provide a cumulogic-web.xml file with the artifact you are trying to deployDevelopment process impactRuntime only services- No local deployment optionsCan create templates so that developers can provision their own cloud environmentsValue added features- Nothing beyond being cloud agnostic and allowing public and private cloudsLicensing and costs- Still in private Beta, so no pricing announced
Been around the longest, I think it even predates the term PaaSBut there is a big ? mark over the Google App Engine currently. There were rumors swirling recently that the Google was going to shelve the App Engine as a product which Google is famous for being ruthless with their products. Instead they have announced a new pricing model that goes into effect in just a few days and it has caused a lot of consternation amongst the user community as people who were previously paying very little under the old model, may see their costs increase quite dramatically, in some cases a 10-fold increase is being predicted. Of course the question about which is better, a more expensive App Engine or no App Engine at all still remains to be answered. A year from now we should have a good idea if the price change has saved App Engine or just prolonged the inevitable.Underlying infrastructureHosted Google environment, no option for private or local environmentsJava web apps run on the Jetty Servlet engineJava environment support- Can java web apps, on top of JettyApplication architecture impactLarge impact on application architecture because of extensive range or restrictions on what apps can and cannot doRestriction on database access to only be able use Google’s own BigTable data storeeffectively have to develop specifically for GAEDevelopment process impactEclipse SDK available allows control and deployment of apps directly to the live environmentAlso allows for local testing to be runValue added features- AppStats, DoS protection servicesLicensing and costsFree tier availableQuota system controls how an app consumes resources, can pay for more quota- moving to an instance based pricing
Heroku has been around a while providing mainly a Ruby PaaS, long enough at least to be purchased by salesforce.comThey only announced Java support at the end of August, so things are pretty new and Underlying infrastructure- Java environment support- Does not support java standardsApplication architecture impactMassive application architecture impactNeed to code specifically for HerokuDoes not support Java web app specificationsDevelopment process impactMassive development process impact, must use Git to deployValue added featuresLicensing and costs- Free tier to get started, then capacity sold in units of Web and Worker Dynos
According to the FAQ, it is still being considered a developer preview, so there are no SLAs to speak of yetBased on technology acquired through the acquisition of Makara. RedHat claim that they intend to open source the technology in the future.Underlying infrastructure- All run RHEL configured with SELinuxJava environment support- Jboss 6 or 7, TomcatApplication architecture impactDevelopment process impactUses Git for pushing changes live, similar to HerokuCommand line clientValue added featuresLicensing and costsExpress – free multi tennant, some restrictions, 250MB disk space, no auto scaling, no custom domain name etcFlex – dedicated servers running on EC2, intend to support more IaaS vendors in the future. Need to provide your AWS credentialsPower – allows for native applications to run on Linux, not Java focussed
Announced April 2011Cloudfoundry.com is the hosted versionCoudfoundry.org is the open source projectUnderlying infrastructureHosted version runs on VMware vSphereWill also be able to run private clouds on VMware platformJava environment supportApplication architecture impactDevelopment process impactCommand line toolSTS plugin, based on eclipseValue added featuresMicro Cloud Foundry free download, runs on a VMware client like Fusion,allows for a complete Cloud Foundry environment to run locally on a developer’s machineLicensing and costs- Currently still in beta, no pricing officially announced
Microsoft AzureDoes have an offering that can be considered a PaaS offering- Has been around a while now, longer than some of the ones with a lot of buzz around them It would be surprising to see Azure gain any more market share as other products from vendors with more mindshare come onlineImagineaProvides custom AMI images with presinstalledJavaEE resourcesWSO2 StratosLive- Web service focus, deploying Apache Axis and ESB infrastructure