Microsoft Azure vs. Google Cloud – Part 2

Autumn Leaves

In my previous post, I talked about the similarities between Microsoft Azure and Google Cloud in their Compute sections. In this post, I want to compare the Storage options provided by the two providers.

Microsoft Azure provides the following storage options under its Data & Storage section:

  • SQL Database: Relational SQL DB as a service.
  • Storage: Blobs, tables (NoSQL), queues, files and disks.
  • Redis Cache: High throughput, low latency cache.
  • DocumentDB: NoSQL document DB as a service.
  • StorSimple:Cloud storage for enterprises. 
  • Azure Search: Search as a service for mobile and app development.
  • SQL Data Warehouse (Preview): Elastic data warehouse as a service.

Google Cloud provides the following storage options under its Storage section:

  • Cloud SQL: MySQL DB in the cloud.
  • Bigtable: High-volume, low-latency data store (no queries)
  • Datastore: Scalable store for NoSQL data.
  • Cloud Storage: Binary/object store.
  • Memcache: Key/value cache.
  • Persistent Disk: Network attached block storage. 

Microsoft Azure’s and Google Cloud’s storage options are not listed in a similar way, so let’s break it down in a way that makes sense for both.

SQL

Azure’s SQL Database and Google’s Cloud SQL are pretty much the same thing: relational DB in the cloud, except the former uses Microsoft SQL Server whereas the latter uses MySQL. Azure also has something new called SQL Data Warehouse which is an enterprise-class distributed database for petabyte volumes of data but it’s in preview mode currently.

NoSQL

In Google Cloud, we have Bigtable and Datastore for NoSQL support.

  • Bigtable is a scalable, distributed, highly available and structured storage. It’s not really a database as it doesn’t support querying. It provides strong consistency for a single row and eventual consistency for a multi-level rows. In Bigtable data model, a row has a key and one or more columns, basically a key/value store. It supports CRUD on a single row and preserves single-row consistency and allows range queries by keys. It provides scalability by automatic sharding, reliability by replication and performance by reduced lock granularity and co-location of data.
  • Datastore is built on top of Bigtable and it’s a database for entities and properties on those entities. It support queries by doing index scans on the property being queried (not on the actual underlying Bigtable), so all complex queries require a composite index table to be built upfront (single-property indexes come for free) but this means that the performance of queries depend on the size of the result set, rather than the size of the whole data set.

Azure provides its own Table and DocumentDB for NoSQL support.

  • Table (listed under storage) is quite similar to Datastore in functionality. I haven’t run extensive tests on either Azure Table or Datastore to compare their scalability promises though.
  • DocumentDB is a NoSQL document database service designed from the ground up to natively support JSON and a unique NoSQL offering from Azure.

Storage

Google provides Cloud Storage as binary/object store. In Azure world, this kind of functionality is provided via Blobs (listed under storage).

Google Cloud also provides Persistent Disk which is network-attached block storage and Azure provides Disks for similar functionality.

Cache (or in-memory key-value store)

Azure provides Redis Cache, basically an in-memory database based on open source Redis. Google Cloud offers a key-value cache via Memcache.

Others

Azure provides StorSimple, cloud storage for enterprises and Google Cloud does not seem to have anything similar. Azure Search is also listed under storage which is weird, considering search is not really a storage feature. We’ll cover Azure Search when we talk about services.

This sums up our storage investigation in Azure vs. Google Cloud. In the next post, I want to look at different networking options provided by the two cloud platforms.

Microsoft Azure vs. Google Cloud – Part 1

Thames in Fog

I’ve been working with Microsoft Azure Cloud Platform for a while now and in my free time, I’ve been also looking into Google’s Cloud Platform out of curiosity. It’s interesting to see how the two platforms compare. On one hand, both platforms provide similar functionalities but usually under different names. On the other hand, there are some unique offerings by Microsoft Azure and some unique offerings by Google Cloud.

In this series of posts, I want to go through Microsoft Azure and Google Cloud and highlight similarities and differences as we go along. My goal is not to rank one cloud platform as better or worse than the other, that’s not my intention. Rather, I want to technically look at both platforms, clarify similarities and differences, and hopefully make lives of fellow cloud developers a little bit of easier.

Many organizations use cloud resources to compute and not surprisingly, both Microsoft Azure and Google Cloud group a number of features under “Compute”, so this is a good starting point for our investigation.

In Microsoft Azure, Compute section contains the following features:

  • Virtual Machines (IaaS): Fully customizable Windows and Linux VMs and apps (typically Microsoft apps, some Linux apps, Docker and a few more).
  • Cloud Services (PaaS): Web and Worker Roles. Support for Java, Node.js, PHP, Python, .NET, Ruby. Autoscaling, load balancing and health monitoring of instances with automatic OS and application patching.
  • Batch: Cloud-scale job scheduling and compute management. Stage data and execute compute pipelines. Takes care of scheduling, queuing, dispatching and monitoring jobs.
  • RemoteApp: Install Windows apps on a Windows Server in the cloud and let Remote Desktop clients access those apps on their Internet-connected laptop, tablet, or phone.

In Google Cloud, Compute section contains the following features:

  • Compute Engine (IaaS): Unmanaged Linux VMs running in Google’s infrastructure.
  • Container Engine: Run Docker containers in the cloud.
  • App Engine (PaaS): Managed platform for building web and mobile backends. Support for Java, Python, PHP and Go. Autoscaling and health monitoring of instances with automatic OS updates.

In terms of similarities, conceptually Virtual Machines = Compute Engine and Cloud Services = App Engine. Azure does not have a separate offering for Docker containers but Virtual Machines can be configured to run Docker, so Virtual Machines can be thought to contain the Container Engine as well.

In terms of differences, RemoteApp is a Windows specific service, so it’s not surprising that Google Cloud Platform does not have anything similar. Azure’s Batch service has no corresponding service under Google Cloud Compute section but Google Cloud has something called Cloud DataFlow under Big Data section that looks very similar. We will cover Big Data section of Google Cloud in later posts.

This wraps up other first post on the topic. In the next post, I will be looking look at different storage options provided by Microsoft Azure and Google Cloud.