When it comes to Cloud Computing plenty are the alternatives on the market and any product has its strengths and weakness. Here is a comparison of some of the most popular cloud platforms: Amazon Web Services, Google Cloud Platform and DigitalOcean.
The most distinguishing characteristic is probably the amount of functionalities made available by each cloud provider. Amazon AWS has a big advantage in terms of number services out of the box, while DigitalOcean provides virtual machines and leaves details of implementation to system administrators. GCP (Google Cloud Platform) follows AWS and at the same times is more selective on its toolset.
At the end of the day any Cloud Platform makes big money by selling CPUs and Memory, additional services attract clients but with additional costs.
If I had to explaing in few worlds the phylosophy befind each provider I would say that Amazon AWS tends to monitor what clients are using its infrastructure for and then builds new services to satisfy the common needs. Digital Ocean just focus on providing virtual machines without too much baggage in order to keep prices low. In the meantime Google Cloud Platform increased the investment in Cloud Computing and is introducing strategic tools to increase the market share.
AWS, Google Cloud Platform and Digital Ocean have different pricing strategies. Generally speaking Amazon AWS tends to be the most expensive in terms of infrastructure costs and DigitalOcean the cheaper, while GCP (Google Cloud Platform) is in the middle.
This should not lead to a quick conclusion as few additionals hours of system administration to install and mantain a service can erase the few dollars of gain and make a big difference.
Anyway the DigitalOcean price list is the simplest, while the Google's one is more structured but still transparent and discounts are applied automatically. Amazon Web Services looks cheap but sometimes with hidden costs, in addition the procedure of getting discounts for continue use is no way as simple as the Google's automatic discounts approach.
Here are the most common scenarios that can make a difference during the evaluation of Cloud Platforms.
Some companies, like financial institutions, are required by law to run their infrastructure in as specific geographic region. Amazon AWS and DigitalOcean allow to chose the country in which the virtual machines run, while Google Cloud Platform is more generic. Google specifies the area (for example Europe) but not exactly the country.
Availability of skilled system administrators
Amazon AWS has plenty of services the user can set up with few clicks of mouse cutting installation and maintenance costs. Content distribution network (CDN), Caches, SQL and No-SQL databases, DevOps tools, Messaging services are already there and work pretty well without the concern of scalability and availability which is managed by Amazon. By using Amazon Web Services toolset a company can cut system administration costs but at the price of being dependent on Amazon's platform.
Google Cloud Platform is working hard on providing the most common services without adding too much stuff. Google's platform looks less comprehensive than Amazon's however all the main functionalities are there.
DigitalOcean, to cut the price, has a do-it-youself approach, it provides virtual machines and basic funtionalites like DNS or additional disks, all the rest is left to the system administrator.
DigitalOcean requires more system administration work, while Amazon AWS can greatly redure the administration time. Google Cloud Platform (GCP) administration work is similar to Amazon AWS, basically it depends on what services a company needs to set up.
Dependency on a specific technology
If you rely on a specific proprietary cloud technology like Amazon RedShift, Amazon Kinesis or Google Big Tables the are no choices other than using the specifig provider. Apart from some technology like Google Big Table, Google tends to be more open, for example Kubernetes is becoming very popular for microservices orchestration and it is open source.
Digital Ocean does not provide any proprietary service, the system administrator needs to install what is available on the market.
A proprietary cloud technology has the advantage of cutting installation and maintenance costs and the drawback of becoming cloud provider dependent.
Digital Ocean has not much security in place, the system administrator needs to install firewalls etc. Also internal networks in Digital Ocean are not as much isolated as in other cloud providers and require some work to be made secure.
This does not mean that Amazon Web Services is more secure than Google Cloud Platform, Google has some of the most skilled security brains and invests in security a lot, however Amazon tools are more granular right now.
Both Amazon AWS and Google GCP provide external firewall and isolated internal network.
In addition to the traditional disks a cloud storage service can greatly semplify the archival of any kind of file.
Very popular is the cloud storage service Amazon S3, a theorically unlimited file system which can store any amount of data with reasonable latency, high throughput and low costs. Amazon Web Services extendes the storage offer with Amazon Glacier for backups and Amazon EFS, a network file system similar to NFS which can be used as a shared disk.
Google Cloud Platform offers similar products to S3 and Glacier with Google Cloud Storage but does not have an Amazon EFS counterpart. The costs of all these services depend on the amount of data stored, number of requests and throughput.
DigitalOcean does not offer cloud storage service apart from more traditional even if easily resizable hard disks.
Machine Learning and Big Data
Both Google Cloud Platform and Amazon Web Services are investing in their machine learning toolset. Righ now Amazon AWS offers more Big Data and Machine Learning options, for example wizards to set up Hadoop clusters with Amazon EMR, manage big streams of data with Amazon Kinesis, etc.
Event if Google Cloud Platform has fewer options it can leverage preemptible instances easier for example while setting up an Apache Spark cluster with Google Data Proc, cutting processing costs significantly. In addition some Google machine learning open source technologies like TensorFlow are alredy available in Google GCP.
Regarding to Machine Learning algorithms both Google and Amazon provide out of the box APIs for predictive analysis, classification analysis, neural networks, etc. In my experience even if those algorithms are interesting for startups they tend to create black boxes and the cost per request can be problematic while processing big data. For a more structured business I would rather implement machine learning with Apache Spark or Tensor Flow.
Once again Digital Ocean does not offer any machine learning or big data tool, it just provides cost effective virtual machines. Unfortuntaly DigitalOcean does not provide preemptible virtual machines like Google or Amazon do.
Microservices introduce new challenging architectural tasks like load balancing, service discovery, containerised applications, etc.
Google Cloud Compute offers Kubernetes out of the box, which is an open source and popular microservice orchestration technology based on Google's expertise.
Amazon Web Services tackles the problem with proprietary services like Amazon ECR, Amazon ElasticBeansTalk etc. They are valid tools but unlike Kubernetes they tend to make the applications cloud platform dependent.
Digita Ocean does not provide any tool or service, after all to cut the costs their policy is to provide just virtual machines with limited additional service.
Choosing the cloud platform is not an easy task, if I had to write a guideline in few sentences I would say:
- DigitalOcean for small or highly customised projects. Good to cut infrastructure costs when few servers are required and there are system administrators who can install and mantain the applications.
- Amazon Web Services from startups to big projects. Good to leverage the great offer of services out of the box and simplify the system administration especially in big teams, while paying attention to hidden costs.
- Google Cloud Compute from startups to big projects. Good to leverage Google's open source technologies and services and save some infrastructure cost.