There has been a lot of discussion lately about “cloud” offerings and what is the cloud. I am going to avoid a definition of the cloud, but I am going to talk about the various infrastructure offerings that are available, specifically the differences between two types of offerings. There are some offerings that are purely a server (infrastructure-as-a-service), like Amazon EC2 or Rackspace. Others provide a full programming stack (platform-as-a-service) like Google App Engine or Heroku. Disappointingly, these two types of offerings are both termed “cloud” which definitely leads to some confusion. The differences become even hazier when there are products built on top of Amazon EC2 to provide the same type of environment as App Engine and Heroku.
Given that there are options that provide a full programming stack, why would anyone choose a basic server like EC2? Well, there could be a host of reasons. First, let’s look at what is happening with Google App Engine. Just about a week ago, GigaOm wrote about App Engine in the enterprise:
Google might have announced App Engine for Business too early — more than a year ago— before it had a chance to gauge reaction to some of its more-limiting features. The company’s “trusted testers,” it turns out, liked many of the features, but they didn’t like the idea of a separate offering or the fact that App Engine for Business locked down API access from outside the owner’s domain.
I am not sure who the “trusted testers” are, but I do find the comments interesting. Not liking a separate offering for businesses has a distinctly non-business feel. That means that some of the testers were testing both the regular version and the business version. In addition, the comments regarding the limitation of the business version locking down API access outside of the owner’s domain point to non-enterprise users as well. So, does this mean that App Engine is not really used in a business environment? Yes and no, but it really depends on the size of the business, and this relates to whether App Engine or Amazon EC2 get selected in the first place.
First, some background on the differences. Amazon EC2 gives you the ability to quickly create and start a server. By itself, the server is fairly bare. In order to compensate for this, Amazon gives you the ability to create machine images. An image is basically a snapshot of a configured server. So, if you are a java development shop, you can install MySQL, Tomcat and Apache HTTP and configure them in specific ways. You can save that setup and configuration as an image. This allows the administrator to start a server with minimal effort and the server will already be configured to the standard specifications. Another benefit of this type of setup is that you have access to the bare metal. You can have your system administrators login to the machine and do their normal tasks, and it does not really seem like anything other than a typical server.
Google App Engine is a completely different beast. What App Engine really does is provides “runtime environments” for your applications. At first glance it looks like server applications for dummies, but it is much bigger than that. Google provides various APIs, like the Datastore API, so that you really do not need to do anything outside of the runtime environment. For some people, this is a fantastic idea because the developers only need to worry about developing applications and not about how to properly configure Tomcat.
This finally brings me to my point. For individual developers, Google App Engine provides a solid solution assuming you can live within the technologies provided. This type of solution would work for small businesses as well. However, the benefits of Google App Engine probably stop with small businesses, including some startups. Larger corporations and big enterprises will have little use for a “runtime environment” that they cannot configure to their own desires. This size of business likely has a dedicated IT department, and has rules about where their code and data can live. Having a small prototype running on App Engine might be OK, but once an application is ready to move to a production environment, it is probably planned to be hosted on their internal servers. Interestingly enough, these are the same reasons that more corporations are moving some of their application infrastructure to services like Amazon EC2.
So, what does this all mean? Can Google App Engine compete in the enterprise? Not really, but that should not be their target. Small businesses and startups can be huge revenue generators, it just does not sound as sexy as having many Fortune 500 customers. There is not a lot of competition in that space, so it is ripe for domination. The enterprise is prime for companies like Amazon and Rackspace, and there is not a lot of similar competition there either. One thing that could cause App Engine to fail is targeting enterprise customers and forgetting about the smaller businesses. Another problem they could have is not watching the infrastructure companies like Amazon who could provide a simpler interface and create a solution similar to App Engine.
In any case, the cloud infrastructure game is heating up and there are some very interesting solutions. Customer focus for these companies will be critical if they want to remain a strong player.