There are two main reasons why you may want to develop an application in the cloud using a PaaS service: (1) you want to create an SaaS offering that you can use to go to market quickly, or (2) you want to go through the develop-build-test-deploy application life cycle quickly by concen-trating on the application requirements without having to worry about the infrastructure stack. (After all, an applica-tion developer is not a data-center company and instead wants to focus on the application it provides.) In any case, there are a number of advantages to using PaaS for applica-tion development:
- Enables you to focus on creating the application, not peripheral things like the hardware.With the consumption-based price model you do not have to pay for the infrastructure up front. You can create applications that scale from one to up-ward of a million users without having to re-architect your application. Components such as storage and databases are avail-able as standard, ready-made, off-the-shelf services for your application to use.
You are provided with a standardized development environment that is familiar to most application developers. This can additionally include an application framework, code samples and development tools. Although most cloud providers allow you to migrate your application, and tools exist to assist you, a major disadvantage is that a good application development en-vironment locks you in to a particular vendor. The indi-rect costs associated with leaving, such as setting up your own environment elsewhere—obtaining the necessary talent, and the application integration work needed, for instance—can be too high for you to leave the cloud ser-vice provider. In order to mitigate this risk, you need to (1) assess the technology and application development frame-work provided by the PaaS service and (2) ensure that your application and data architecture allow for greater interop-erability and flexibility.
Commonly used cloud platforms currently are Micro-soft’s Azure, Google’s App Engine, and Amazon’s Elastic Compute Cloud (EC2). To a large extent, these three -of ferings are not comparable directly because they offer dif-ferent things, even though you could write the same set of applications on each platform. Azure provides you with the .Net framework. This is a software framework that in-cludes a library of re-usable software that provides interop-erability between various programming languages (e.g., Visual Basic, C, C++, and C#). This means that code writ-ten in any one supported language can reuse code written in the other languages. App Engine, however, provides you with a runtime environment for which you can write code in Python, Java, PHP, and Go. It allows you to develop and test your code using the App Engine runtime environment and optionally use Eclipse as an IDE. 4 These characteristics of the App Engine align it to a web application or one tar-geted to a mobile device. Amazon’s EC2 is much more of an application hosting platform than an application develop-ment platform, and it is much more of an IaaS service than a PaaS one. However, it can be used for application devel-opment and testing, although you will need to set up your own application framework, tools, and development stack. Thereafter, you will need to maintain and upgrade it your – self. Also, the onus of making your application scalable is yours, since you get a high degree of freedom and control over your hardware. As a result, its main advantage is that you can migrate far more easily away from EC2 should you wish to do so in future.