TL;DR: AWS’s awesome, but Google is Googol awesome.

Participate in any AWS re:Invent conference ($1,600 admission) or follow head evangelist Jeff Barr and you’ll fall in love instantly with Amazon Web Services.

100s of new features every year and an all-you-can-eat, elastic, no-ops bouffe of on-demand services. Well, until you get to actually taste the food…

Amazon’s awesome, but Google Cloud is built by developers, for developers, and you see it right away.

Why we moved?

App Engine

GAE just works, has auto-scaling, load-balancers and free memcache all built in. Want to connect to Cloud SQL? use the virtual linux socket /cloudsql. Want to write custom logs and see them instantly? Append /var/log/app_engine/custom_logs or simply console.log() and console.error(). Want to profile and debug your application IN PRODUCTION? put breaking points in StackDriver or SSH to the managed instance.

Under the hood you’ll see GAE is 100% docker. Use it to run your 20 microservices with *.appspot.com service discovery or run one mamooth application at scale.

Update: I’ve received horror stories about what it was like with GAE at the early days, especially with the built-in datastore. I had no experience with GAE or Google Cloud back then so can’t really comment. As before any blind date, be prepared to leave anytime. Code a wrapper around your cache, data and message stores so you can switch technologies/providers.

Flexible VMs

Google lets you create custom machine types with any cpu/memory configuration. They let you opt for cheaper, preemptible (a-la spot) instances with a single click and no bidding/auction code whatsoever.

Networking & Bandwidth

Google connects each and every VM to its super-fast, low-latency networking. Amazon requires you to buy expensive 10G-capable instances and/or enable enhanced networking.

Google lets you set up simple Firewall rules. Amazon gives you VPC, security groups, network access control lists and a big, fat headache.

Update: Some have commented AWS VPC is great and lets you tightly secure instances, create sandboxes and control internal networking. I still found it confusing since I rarely need anything beside basic ports/home IP rules. However if you’d like to investigate every connection issue like a murder mystery go ahead.

Billing

Google bills by the minute (not hour) and apply AUTOMATIC DISCOUNTS for long-running workloads, with absolutely no reserved pricing nonsense (warning: AWS EC2 pricing page might crash your browser).

Pub/Sub

Want to run a message bus? AWS will make your head spin with SNS, SQS, Kinesis, Kinesis Streams and Kinesis Firehose. GCP has only Pub/Sub which just works and is insanely scalable.

Update: I realize SQS (~Hosted RabbitMQ?) and Kinesis (~Hosted Kafka?) are two different buses, but getting GCP to work with one messaging product regardless of volume/velocity sounds better for me.

BigData

Google BigQuery is nicely priced by the GB stored and TB queried, has day partitioner built-in, 50% reduction in price for unmodified partitions (so you can keep data for longer) and full SQL support.

Google DataFlow is an amazing framework for consuming and processing data in batch or streams, with windowing, automatic triggering/speculative data and easy to use transformations.

Update: AWS started adding “Streams” to each service and spun them as new products, further increasing confusion. Dataflow is easier to comprehend as it treats all I/O targets as either sources and/or sinks.

Users & Permissions

Amazon has one of the most confusing IAM. While it is nice to set up a role to only allows usage for a particular resource from a specific device and times of day, you end up spending most of your time debugging policies.

Google security is more leaned back, assumes all resources are allowed within each trusted “project”.

Moreover, people you invite to projects must have a Google Account which are secure by default and usually already set up.

Update: Apparently you can have a Google Account with any email address, but if you are like me and using Google for Work (Google Apps) for SSO, you are already set. Amazon also supports MFA but you have to create a new set of users.

Wait, no downsides?

Actually several. In no particular order:

GCP Documentation and community support are not nearly as good as AWS (though paid support is top notch) StackDriver (GCP logs) feels detached, same for BigQuery (which runs on a slightly different UI) Many of the services are labeled Beta and excluded from SLA (Cloud Functions, BigQuery, Flexible VMs, even 2nd generation Cloud SQL) Cloud Datastore is very feature-limited and hard to switch out from BigTable has a stiff (~$1,500 monthly) starting price BigQuery/DataFlow in streaming mode can get REALLY expensive and hard to project Google CDN doesn’t work with custom sources For standard compute, bandwidth is still the most expensive component (and priced similarly to AWS)

Summary

We moved to GCP because we wanted to work on infrastructure that runs YouTube, Gmail and Google Analytics. We moved because Google is fair, much more tech-savvy and launch products that just works.

Update: It is unclear if Google (the search engine, youtube, gmail) is using GCP. It has certainly created it and happily released it as they are working internally on the next big thing.

AWS is still fantastic. I just hope they would close issues before releasing new, half-baked features in time for re:invent.

Someone wrote: “I guess nobody ever got fired for using AWS. It’s the IBM of the cloud” and I couldn’t agree more, but if you are your own boss and like to look further, go with GCP.

Your mileage may vary.

Follow me here or on Twitter as I plan to write deeper posts battling specific products (i.e Pub/Sub vs. Kinesis, Google CDN vs. CloudFront).

Updated based on some love and hate from HackerNews.