Platform-as-a-service offerings from public cloud vendors continue to gain popularity, as they make it easier for developers to deploy web applications and mobile back ends to the cloud. With platform as a service, developers can spend more time focusing on application code, while the cloud vendor handles the deployment and management of the underlying infrastructure.
However, trying to perform a platform-as-a-service (PaaS) pricing comparison between multiple vendors can be tricky. For example, Microsoft, Google and Amazon Web Services (AWS) all have PaaS offerings that, from a high level, are very similar. Under the hood, though, the technical implementation of each is a bit different. The other challenge is performing a PaaS pricing comparison for public cloud services is a constantly moving target. Pricing is subject to change, and it's not uncommon to see multiple price drops over the course of a year from each provider.
Microsoft Azure App Service
Azure App Service is the PaaS offering for building web and mobile apps on the Azure platform. Developers deploy apps into an Azure App Service Plan, which maps to one of five PaaS pricing tiers.
The compute instances that support each Azure App Service Plan are fully managed virtual machines. Developers don't get access to the operating system, but they do have administrative control over application settings. The five pricing tiers for Azure App Service are described below.
Under this tier, apps run on shared infrastructure and the plan is completely free. Customers can deploy up to 10 apps within the free tier. Resources are scarce in this model, as CPU cores are shared with other customers, and memory and storage are capped at 1 GB each. In addition, support for custom domains and Secure Sockets Layer (SSL) are unavailable.
This tier also makes use of shared infrastructure and is charged on a per-app and per-hour basis. For example, to run one website for one hour, the current pricing in the West US region is $0.013. This means one site would cost $9.67 per month. This tier is a small step up from the free tier, and although it supports custom domains and SSL, it is still only intended for development and proof-of-concept scenarios. Customers will get more shared CPU resources in this tier, but memory is capped at 0.5 GB and storage is set to 1 GB.
The Basic tier is where customers can realistically start thinking about running production web applications. Customers are billed on a per-hour basis for a specific number of dedicated compute instances.
While the Basic tier can support production workloads, keep in mind that scaling the resources is a manual process. For example, to scale up, a customer can move to a B2 or B3 instance from a B1 instance. To scale out, customers would simply provision additional compute instances.
To determine the cost for one month of 100% utilization, multiply the hourly rate by 24, and then multiply that by 30. Do this for each VM instance in the tier.
For example, to come up with an estimated cost for two B2 instances running 24/7 in one month, consider the following formula:
$0.150 (hourly cost) x 24 (hours per day) x 30 (days per month) x 2 (B2 instances) = $216.00
The PaaS pricing shown here is based on the West US region.
The Standard tier works similarly to the Basic tier. Again, customers are billed on a per-hour basis for a specific number of dedicated compute instances. The number of CPU cores and RAM are the same for each of the Standard VM sizes, but they provide five times the amount of storage capacity.
The other difference is the Standard tier includes auto-scaling up to 10 instances, so users don't need to worry about manually scaling out to meet a sudden demand increase for their application. In addition, the Standard tier includes automated daily backups, deployment slots that support multiple versions of application code and Azure Traffic Manager support for geodistributed load balancing.
The formula to determine monthly costs is the same as the Basic tier. Again, the prices shown are based on the West US region.
The Premium tier is the Cadillac of the Azure App Service Plans. Customers are billed on a per-hour basis for a specific number of dedicated compute instances, and there are four instance types.
The instance types are similar to those included in the Standard tier, except these provide more storage capacity. There is also the P4 instance type that doubles the resource capacity of the P3.
The Premium tier allows for auto-scaling out to 50 instances, and it also includes more frequent daily backups and additional deployment slots.
Don't worry, there's a calculator
If this is the first time you've looked into Azure App Service pricing, then you may be scratching your head. But don't worry -- Microsoft has a pricing calculator that will help you figure this out.
You can also use the calculator to include other items, such as IP Secure Sockets Layer connections and various paid technical support options.
Google also provides a calculator for its cloud platform to help you determine App Engine costs. App Engine's Standard environment is somewhat similar to Azure's free and shared App Service tiers in terms of the compute resources provided.
Like the other providers, Amazon Web Services also has a calculator that can be used to determine costs. The Elastic Beanstalk service is free to use, and customers only pay for the resources deployed to support their applications. To determine PaaS pricing, they can plug inputs into the calculator to get an idea of what the monthly costs will be.
Google App Engine
The PaaS offering within Google Cloud Platform is called Google App Engine. It's similar to the Azure App Service in the sense that developers can deploy code to a scalable set of server resources that Google manages. However, the technical implementation is a bit different, and Google App Engine applications run in two separate environments.
The compute infrastructure in the standard environment is made up of container instances. Developers can choose preconfigured containers with support for Java, Python, Go and PHP. Container instances in the Standard environment receive a certain amount of free resources, which can be as high as 28 free instance hours per day.
Applications in the Standard environment run on a specific container instance class that determines the compute resources and PaaS pricing.
For example, the B1 instance class provides 128 MB of RAM, a CPU limit of 600 MHz and costs $0.05 per hour. There are a number of additional instance classes and per-hour pricing rates available if more compute resources are required.
Based on the Google App Engine free quota, which provides 28 free instance hours per day, developers can run one B1 instance for an entire month and pay nothing. If they wanted to run two B1 instances for an entire month, they'd only pay for 20 instance hours per day. So, $0.05 x 20 hours x 30 days = just over $30 dollars a month.
The Google App Engine Flexible environment is currently in beta, but the compute resources are provided by Google Compute Engine VMs. In addition, the flexible environment provides auto-scaling and load balancing.
Google App Engine's Flexible environment is comparable to the Azure App Service Basic, Standard and Premium tiers. One of the biggest differences is developers have full administrative control and root access to the VM instances. Google App Engine simply manages the compute infrastructure, but allows developers to have ultimate control over the settings within VM operating systems.
PaaS pricing is a bit easier to figure out when working with the Google App Engine Flexible environment. Developers simply specify the VM type to use and pay a fixed rate per hour for the resources.
For example, a Google Compute Engine VM type called the n1-standard-1 provides 1 vCPU and 3.75 GB of RAM. Based on Google PaaS pricing information shown in the table above, the cost would be less than $60 per month. In contrast, an Azure App Service plan under the Standard tier with a single S1 instance would cost $72 a month. Keep in mind, the S1 instance under the Standard tier on Azure App Service provides 2 GB less memory than the n1-standard-1 on Google's platform.
AWS Elastic Beanstalk
Conceptually, the idea behind AWS Elastic Beanstalk is the same as with Azure App Service and Google App Engine. The AWS Elastic Beanstalk service allows developers to deploy applications to a fully managed set of resources, which includes auto-scaling compute instances and built-in load balancing.
However, much like the Flexible environment in Google App Engine, developers have full control of the underlying resources. AWS Elastic Beanstalk will do all the heavy lifting of building the required infrastructure, but developers get root access and can customize the VM operating systems, if needed.
The compute costs for an application running in an AWS Elastic Beanstalk environment will be determined based on the Elastic Compute Cloud instance type being used.
For example, the t2.micro instance type provides 1 vCPU and 1 GB RAM. Under the AWS free tier, developers can consume 750 compute hours a month for a year using this instance type. Compared with the Azure App Service free tier, the resources provided are basically the same. But with the t2.micro instance, developers get a dedicated VM that can support custom domain names and SSL.
The t2.small instance type also provides 1 vCPU, but more memory for a total of 2 GB of RAM. The cost per hour in the Northern California region is currently $0.034. The t2.small instance type is very similar to the Azure App Service S1 instance type under the Standard tier. While the S1 instance has a bit less RAM at 1.75 GB, it costs nearly $0.07 an hour more.
Pay attention to your application requirements
Get familiar with evolving pricing models for public cloud
Watch how much you are spending on public cloud