resilient services. Cloud providers can offer redundancy, minimize latency and optimize failover performance when users employ more than one data center in a given geographic area. But with the growth of cloud computing, cost also becomes a top enterprise priority.
Today, the number of locations where users host their cloud workloads isn’t just about resilience — it’s about cost. Let’s consider some of the cost issues involved in the selection of cloud regions and availability zones (AZs).
Why do region or AZ prices fluctuate?
Different public cloud providers use different terminology and architecture to organize their respective public clouds. Amazon Web Services (AWS) deploys multiple data centers within geographic areas called regions, with each of the data centers within a region called AZs. AWS ties each AZ together with dedicated, high-speed connectivity to handle failover within the region as quickly as possible.
Google and Microsoft organize their clouds into a larger number of smaller cloud regions. For the purposes of this article, we will use the terms cloud regions and AZs interchangeably.
To minimize latency and improve performance, enterprises often select a region based on the location of their workloads’ users. Others select a region based on legal or regulatory limitations that might physically restrict where they can locate data. Depending on the design of the application, users can create additional VMs in other cloud regions for uninterrupted availability — often including load balancing to direct the application’s network traffic.
Cloud regions around the world are subject to different business costs related to energy, carbon penalties, real estate taxes and operating costs. There are also governmental costs such as taxes, duties and fees placed on services. Each of these factors is added into the service price in each region, and this results in cost differences between them.
For example, an m4.xlarge on-demand Windows EC2 instance in the AWS U.S.-East (Virginia) region currently costs $0.404 per hour. The same instance in the AWS U.S.-West (N. California) region currently costs $0.44 per hour, $0.446 per hour in the European Union (Frankfurt, Germany) region, and $0.455 per hour in the Asia Pacific (Singapore) region. These may not seem like huge differences, but the cost differential for dozens, hundreds or even thousands of instances taken over weeks, months and years can be startling.
What are some other cost considerations for cloud regions?
Depending on the global location of the deployment, public cloud services and usage may impose additional taxes, duties, VAT and sales tax where applicable. But all of the costs involved in an initial public cloud deployment are just the start. Admins then need to replicate part of the deployment to another region or AZ. In some cases, redundancy is simply a matter of replicating storage content, such as a duplicate RDS database. For additional redundancy and performance, admins might also replicate additional compute and other services to share the workload between cloud regions.
Consider data transfer costs between cloud regions when architecting redundant cloud applications. Generally, public cloud providers don’t charge to put data into the cloud, but there is a cost to move data from the storage instance to the internet. When you employ redundancy or move data from cloud storage to other cloud regions, expect to pay additional costs.
For example, AWS charges $0.010 per GB to move data in the U.S.-East (Ohio) region from Amazon Simple Storage Service (S3) to U.S.-East (Northern Virginia), and $0.020 per GB to move data from Amazon S3 to any other AWS region. The data transfer costs can vary depending on the location of the original data storage site. An application that relies on significant data synchronization or other movement adds to the total cost. However, moving data from storage to a compute instance in the same region is usually free.
So the cost challenge for cloud architects is manifold. They must architect the right mix of right-sized services to deploy the application, then select cost-effective failover or redundant services in a region that meets performance demands. They should also design application to minimize usage, such as outbound data transfers, wherever possible.