For a developer, and subsequently the team of people that has to support certain kinds of applications in production, a PaaS cloud can be a wonderful thing. Why can a PaaS cloud be so wonderful? Because if you have a web based application based upon Java, Ruby-on-Rails, or .NET you can find a cloud provider that handles the entire hardware and software platform for your application.Why is this so wonderful? The reason is that developers really need to spend their time building new applications, adding new functionality to existing applications, and fixing bugs that are in applications already in production. Worrying about how to configure and provision the applications run-time for an application is not a good use of the development teams time, and directly takes time and productivity away from the more important development related tasks.
Let’s take a look at the different types of clouds and who offers them:
- Java PaaS clouds. The idea here is that you can get from a cloud provider the entire environment that you would otherwise have to bring up yourself when you built a Java based application to an applications server like IBM WebSphere, Oracle (BEA) Weblogic, TomCat, or JBoss Applications Server. There are several Java PaaS clouds available with the most prominent of them being Google AppEngine (who has partnered with VMware to use vFabric (SpringSource) to provide the Java layer), Salesforce.com with its VMForce offering (again the result of a partnership with VMware around vFabric), Amazon Web Services which offers AWS Elastic Beanstalk and CloudBees which is offering a JBoss based Java Cloud.
- Ruby-on-Rails PaaS Clouds. There are two leading choices here, Engine Yard and Heroku (just acquired by Salesforce.com – making VMForce one of the only Java/Ruby Clouds). Both do a great job of letting developers focus on developing and taking the configuration and the operation of the application out of the hands o f the developer.
- .NET PaaS Clouds. There is currently really only one good choice here and that is Microsoft with Windows Azure
Performance Management for PaaS Cloud Based Applications
Now if and when you put your application into one of these PaaS clouds, you need to address the question of how to best manage the performance of your application in these environments. There are several considerations that you should factor into this decision that might be different or incremental to how you thought about performance management of your application when it ran inside of your data center:
- APM built into the PaaS Cloud. You need to take a hard look at what level of performance management is being built into the cloud platform itself by the provider of the underlying applications server or applications runtime. VMware (the source of the Java layer in Google AppEngine and Salesforce VMForce) acquired the Hyperic technology when VMware acquired SpringSource (the source of the Java layer in the Google and Salesforce clouds). VMware has indicated that it intends to build applications performance management technology based upon Hyperic into the vFabric product (which is the Java layer that VMware sells to cloud providers and enterprises). Red Hat has just acquired Makara which is a PaaS platform that contains among other things its own monitoring layer. Salesforce.com has just acquired Heroku, which has had an integration deal with New Relic.Microsoft has just acquired AVIcode which contains the exact kind of byte code instrumentation for .NET applications that many APM vendors offer for Java applications. While none of these built-in capabilities are available yet from the PaaS cloud vendors, you do need to think strategically about how the platform will evolve with respect to the value of independent cloud focused APM tools.
- Deployment Method. You have two choices here. You can choose an on-premise solution (a product that you install at your site). If you choose on an premise solution make sure to choose a “Cloud Ready” solution as described below. If you choose a monitoring service, Monitoring as a Service (MaaS), then these services are inherently cloud ready as they host the back end themselves and their agents use cloud ready mechanisms for their agents to communicate back to their data centers.
- Supported Applications Types. This is simple. The APM solution you choose needs to support the applications servers or applications framework to which you have built your applications. You have the most choices if you have Java based applications – and fewer choices if you have .NET or Ruby based applications.
- Cloud Ready. This means two things. The first is that your APM tool can work when the agent inside of the application lives in one place and the management system lives someplace. This requires that the agent “phone home” over HTTP/S (ports 80/443) so that agents that live in different places can communicate with the back end management system without requiring firewall work. The second is that since clouds are elastic your application may become elastic as well with instances appearing and disappearing based upon load. This results in the need for the APM solutions reporting and baselining features to be able to deal with discontinuous data streams and holes in the data without breaking these features.
- Application Topology Discovery. If your application is going to be distributed across your internal data center and a cloud, or even if it is just highly scaled out within your data center it is critical for you to know which instance of which part of the application is talking to what other pieces (and know the throughput and response associated with those conversations) at any moment in time. Application Topology Discovery means that these interactions are automatically discovered on a continuous basis by the APM tool.
- PaaS Cloud Partners. Some APM vendors have partnered with PaaS cloud providers so that you can sign up for and provision the APM service from the web site of the PaaS cloud vendor. This will likely become the preferred method to buy MaaS over time as it is just logical to buy the PaaS and the MaaS at the same time and in the same place.
- Zero Config. This is a real challenge for traditional APM solutions, in particular for first generation Java byte code instrumentation solutions. These solutions offered infinite flexibility in terms of letting the customer of the product decide how deeply to instrument the application – and control the tradeoff between depth of instrumentation and the performance impact of the APM solution. In the cloud environment, especially when cloud deployments are coupled with Agile Development practices (new code in production every couple of days), the requirement to configure instrumentation becomes burdensome or simply impossible to maintain. Therefore next generation APM solutions have dispensed with this requirement and largely work “out-of-the-box”.
- Java/.NET Diagnostics. As with any APM tool, one of the tradoffs you will make is the breadth of applications addressed by the tool, vs the depth of diagnostics in the tool. For example, AppFirst and BlueStripe will support any application running on a Windows or Linux OS, but do not offer diagnostics into the applications code itself. Vendors that do offer diagnostics into the code itself have to build that instrumentation to the specific run time environments of the code and therefore support a limited number of applications environments.
Comparison of PaaS Focused APM Solutions
Putting an application in a PaaS cloud or distributing it between your internal data center and a PaaS cloud changes how the application will run significantly enough so that you should strongly consider changing how you performance manage the application. While most business critical applications written to modern applications servers and frameworks like Java, Ruby and .NET are being managed with APM solutions, those legacy APM solutions may not be suited to make the leap into this new way of running and managing applications. Therefore you should give strong consideration to tools that have been either built or enhanced to address these new requirements.