Running your infrastructure in the cloud gives you the possibility to start new projects and ramp up capacity within days, rather months or years – as can the case when you manage your own datacenter with bare-metal hardware. Nowadays, it is not uncommon to have a small team managing an infrastructure with hundreds of servers in the cloud thanks to infrastructure automation tools, as well as the availability of APIs. While bare bone infrastructures give you performance boosts, the freedom you get running on the cloud can be worth every dollar.
In this blog post, we’ll do a brief comparison between cloud providers.
Product and Pricing
Each cloud provider is oriented towards a different type of customer and usage. For example, DO is much cheaper as compared to GCP and AWS, but it offers less options in the infrastructure that you would like to build. This is pretty neat for developers, hobbyists or those would just like to have a simple hosting service running in the cloud. DO focuses on developer experience, and development environments are usually not as complex as the production one. Thus, DO is very popular during the initial phase of a project, when the scale is still small.
AWS and GCP are targeted towards fully-featured large-scale deployments, with the possibility to replace an entire datacenter. They offer a wide range of options, from choosing the right instance type for your workload to various other managed Internet services like object storage, database and big data, content delivery, virtual network, artificial intelligence, mobile platform and so on.
DO offers transparent and direct pricing, where you pay for what you used. Usually, you should be able to anticipate the bill they are going to charge at the end of the month. AWS on the other hand, has a more complex pricing and the real cost is hard to anticipate. This includes the 10% premium support charge plus the cost for provisioned IOPS for databases since the normal EBS IOPS are not reliable enough. Google Compute Engine (GCE) is generally cheaper than AWS Elastic Compute Cloud (EC2), and you can get even more discount (up to 30%) if the instances are running 24/7.
One pretty good option in GCE is it offers custom machine types, where you can pick how much CPU and memory you want and you will get the exact instance with a tailored pricing.
Keep in mind that pricing changes over time and some of the services offered may come with discounts and saving plans. We’d advise you to do your own research, with your specific workload in mind.
One of the most important things to know when deploying cloud instances is the location where the instance is deployed. A region is a specific geographical location where you can run your resources. Each region usually has one or more zones. Choosing the right region is vital whereby the closer the instance to the users, the better experience your user will get. Furthermore, in some countries, you might need to comply with data privacy regulations by having a local facility.
At the time of this writing, AWS has the most regions with 16 locations, while GCE offers 6 regions and DO has 7 regions. Following table shows them all:
|Amazon Web Service
|Google Cloud Platform
The number of regions does not determine the overall size of the infrastructure since each region is completely independent from each other. You deploy instances in a region, and if you want to scale out geographically, you build another set of them in another region. AWS has the most regions, you can get much more options as compared to others. Take note that there is a bandwidth charge between regions, so do not assume that having multiple regions interconnected under the same hood won’t cost you anything.
AWS EC2 bandwidth allowance is limited and correlated to the instance size. The bigger the instance, the more bandwidth you get. GCE is known to have the least latency across networks if compared to AWS and DO. Choice of using IPv6 and private networking are available on all cloud providers depending on the region.
Outage and disruption are other factors that you might need to consider. While most of the outages are recovered without any data loss, they do happen and can be costly. AWS has had major outages in the past couple of years, while we have rarely heard about outages affecting DO and GCP. Just recently, AWS experienced a massive outage of the S3 services in its Northern Virginia data center which caused thousands of websites to go down.
Outages do happen, you need to have a backup plan when it happens.
If you are running in the cloud, try to tie your infrastructure together by using automation tools, leveraging the provider’s API. This will save you a lot of time when expanding your infrastructure, reduce the risk of human errors and make the deployment and capacity planning process much easier. DO, AWS and GCP have their own set of client tools to interact with APIs for deployment automation, system provisioning and bootstrapping. You can also use e.g. Terraform, a popular open-source tool developed by Hashicorp, to manage infrastructure across multiple cloud providers and vendors.
Looking from the service integration perspective, each cloud provider has its own set of products that can be integrated together. AWS has the widest range of products, so you can easily integrate your instances with any of the managed services available. Otherwise, you might need to build the service on your own, and this could mean that you have to spend a number of hours to learn the new technology. For example, you are capable of having predictive analytics for your applications by integrating with AWS Machine Learning (ML) without having to learn complex ML algorithms and technologies. This is a major advantage with AWS, where you can combine a number of services required to run your infrastructure.
DO is quite lacking in this area, you will need to build the functionality on your own. However, it is still possible to integrate services across cloud providers, with extra steps required for a seamless integration.
It does not matter whether you are on public or private cloud, the instances are owned and managed by the cloud providers. This means there is always the possibility for some kind of intrusion, which is beyond your power. Protecting your cloud resources is critical, to reduce the risk of data loss, data theft, or intrusion by hackers.
Regarding firewalls, there is not much difference between them in terms of out-of-the-box functionality. It’s more about how the cloud provider simplifies the management of it. GCE supports source and target tags which simplify the management of firewall rules when scaling, removing the need to reuse the same source IP ranges over and over again. AWS on the other hand, does not associate descriptions or metadata on the rules themselves. This can make things cumbersome for larger organizations with thousands of rules spread across a number of regions and AWS accounts.
DO doesn’t have Virtual Private Cloud (VPC), which is an isolated, on-demand configurable pool of resources allocated within a cloud environment. Running instances in a VPC is a step forward to scale your cloud resources in a secure way. As your services become more complex, you may need more control. You can seamlessly customize the VPC size and connectivity rules so that it adapts to your needs, with peace of mind knowing your cloud instances are in an isolated environment rather than in an exposed network.
Encrypting data at rest is vital for regulatory compliance to ensure that sensitive data saved on disk is not readable by any user or application without a valid key, keeping a high standard of data privacy. GCP encrypts data stored at rest by default, with no additional action required from you while AWS requires some extra steps and DO only offers this feature on its Block Storage product line.
Each cloud provider has its own merits, there is no one best cloud for all use cases. For instance, if you would like to have a simpler, low-cost infrastructure for development purposes, DO might be a very good option. But if you are looking at putting something in production, in a secured environment and the ability to add load balancers and other infrastructure services, then AWS or GCP would be a better fit. One word of caution when using a service that is only available on a particular cloud, as doing so will limit your ability to move to other cloud providers. Most probably, you will end up using a mix of cloud providers and would want to use functionality that is available on all of them.