Cloud services are supposed to make things easier for IT, application developers, business buyers and software users -- and they usually live up to that expectation. However, if the service doesn't fit a standard category like compute resources or storage space; or as products get more complex, nuanced and customized, cloud services become harder to evaluate. Such is the state of enterprise platform as a service (PaaS) offerings -- and as we found when analyzing the costs of infrastructure as a service (IaaS) app deployments, there are no simple answers.
The IaaS market enjoys relatively standard units of consumption -- virtual servers of various sizes, object storage, databases, network transfers -- typically priced by the hour or month. In contrast, PaaS offerings are more varied in features offered, customization options and vendor pricing models. Vendors seem to understand the potential for confusion, with most gravitating toward SaaS-like tiered services with monthly pricing. But as you will see, even these can have capacity-based pricing options. Yet choosing the best PaaS is seldom purely a matter of price shopping. It instead requires analyzing your required app development features, estimating the size of deployment and finding a development environment that fits your development team's skillsets, work style and long-term strategy, because porting PaaS applications between platforms isn't easy.
PaaS promises "just add water" convenience by providing a pre-built, managed app development framework and runtime infrastructure. PaaS has elements of both SaaS (for the development environment, toolchain, project and source code management) and IaaS (for the deployment infrastructure), with the resulting hybridization of pricing models: service tiers billed monthly (SaaS) and resources consumed billed hourly (IaaS).
A quick look at PaaS vendor offerings
The easiest way to understand PaaS pricing is to look at service features, tiers and pricing models of major PaaS vendors. As the following list illustrates, PaaS is a diverse market composed of pure-play products (e.g., CloudFoundry), development platforms bolted on to SaaS applications (e.g., Salesforce 1) and IaaS services augmented by app development features (e.g., AWS CodeDeploy, CloudFormation and Elastic Beanstalk).
- Salesforce 1: Salesforce actually has two significant PaaS offerings -- Force.com, designed for employee internal apps, and Heroku for external customer apps -- bundled under the Salesforce 1 platform. Force.com provides tools tailored for business users needing a point-and-click UI to automate workflows and build dashboards and for developers using its Java-like Apex language and cloud runtime environment. The tiered pricing model is based upon the number of custom app objects available to each user or developer and runs from $25 per user per month (10 objects) to $150 per user per month (2,000 objects). Salesforce doesn't publish pricing of Salesforce 1 bundles that include Heroku, but it does offer standalone instances at Heroku.com priced according to the number of compute containers and associated database. For example, 10 medium compute dynos and a 64GB premium database runs about $900 a month.
- Microsoft Azure: Azure App Service is Microsoft's new (released in late March) PaaS bundle that includes features designed for Web and mobile apps, middleware (what Microsoft calls Logic Apps) and API management. App Service has a tiered, monthly subscription pricing model that includes a "free" level for up to 10 apps on shared infrastructure where the only charge is for outbound data. Generally, for enterprise apps you will want the basic, standard or premium tiers that use dedicated servers. Pricing is by number of servers per tier level per month, plus bandwidth. For example, 10 standard one-core servers plus 100GB of traffic runs about $750 a month. Azure, like AWS, is an umbrella for all Microsoft's cloud service offerings. This means that Web or mobile apps built with App Service can be scaled using IaaS services like additional Web and worker servers, SQL databases and storage resources (object, block, files, etc.).
- Google App Engine: Like Azure, App Engine's pricing model is based on the usage of compute instances, storage and outbound traffic. However, as with Google Cloud IaaS, the model is more granular, with instances and high-speed cache memory billed by the hour and SQL databases in chunks of 100k I/O operations. A further complication is a choice in app front end instance types spanning a 4:1 range of capacity based on allocated memory and virtual CPU performance with an associated 5- to 20-cent per hour price differential. You can't criticize Google for embracing choice and customization, but that means developers must have a thorough understanding of application resource requirements before using its pricing calculator. For example, 10 instances using a 2GB memcache pool, 1TB of storage and 50GB of outgoing network traffic runs $135 a month.
- AWS: AWS includes deployment and management services that provide app orchestration, autoscaling, code management and logging at no extra charge; users pay only for IaaS resource consumption. More sophisticated application services like message queues, app streaming, workflow and state management (SWF) and media transcoding are individually priced by usage. For a detailed analysis of AWS pricing, see our article on the true cost of AWS application development.
- IBM Bluemix: Like Google App Engine, Bluemix charges for app runtime resource usage by the hour; however, IBM has simplified the model by combining compute and memory into a single GB per hour metric. Optional services are charged either a fixed monthly price or metered. Again, developers must do their homework before using IBM's app price estimator because Bluemix has more options than a Chinese restaurant menu.
- The rest: Many other PaaS vendors use a simplified variant of the instance per hour pricing model with predefined instance sizes. For example, Red Hat OpenShift segments instances by the number of virtual CPUs and associated memory allocation. Pivotal simplifies the Cloud Foundry model even further with four-tiered monthly pricing based on the memory per app instance. CenturyLink App Fog has perhaps the simplest approach, with five plans designed for a maximum number of apps and delineated by the total amount of app memory, databases and storage.
Tips for selecting a PaaS vendor
Selecting a PaaS vendor is more like selecting a house than buying a TV: there is a plethora of options; inconsistent features between services; various, often complex pricing models -- and you'll be living with the decision for a long time. Here are a few tips:
- Developers in organizations already using AWS or Azure should start there. Business users wanting to exploit data on Salesforce and other SaaS platforms should try Force.com.
- If you are starting from scratch, you know exactly what you want and you expect (or hope) to rapidly scale, you should study Google App Engine. If you are investigating, but not fully committed to PaaS, and you want an easy way to do real-world testing, you should try pure-play PaaS offerings like AppFog, Cloud Foundry or OpenShift, all of which have free or low-cost, entry-level service tiers.
Comparing PaaS options