GCP has great primitives that you can use to build your architecture. Things are generally faster, cheaper (with far simpler billing), and scale without any tuning.
However their biggest weakness is the overall alpha/beta stage of many APIs and the lack of managed services. AWS, especially with these recent announcements, has so many managed services that you can get started building your business product quicker than anywhere else, even if the offerings and billing are more complex.
GCP does have some things like Spanner and BigQuery that are unmatched though.
Right, Azure has an interesting offering for a global database with CosmosDB but AWS is leaping ahead of the game with global tables and multi-master/region Aurora, which are far more usable and productive than the others.
That's a different user. We run on GCP/GKE and aren't moving, but by managed services I'm talking about the multitude of products that AWS offer in a managed version, everything from NFS to a graph database now. It makes building products very easy since you have an answer for any infrastructure need.
Azure comes close but GCP is very far behind. What's there is nice and well designed, but leaves a lot of gaps to fill in.
Google's approach to auth is cumbersome and leaves a lot to be desired. Also, there's nothing like cloudformation for configuring supporting services (their equivalent is a pathetic joke).
The only thing I'd use GCP for today is bigquery. For everything else I'd rather use AWS.
I work for Google.. Sorry to hear that your experience was poor but thanks for the candid feedback!
Is the equivalent to CloudFormation on GCP supposed to be Deployment Manager? Would you mind elaborating what could have been done better?
I work closely with them so I can at least relay the feedback. If it's easy enough maybe I'll even get to help since I am interested in working on that project =D
Yes Deployment Manager. I can't remember now. I looked at it when I needed to automate something and found that I couldn't do it. IIRC it seemed too limited in its capabilities.
The GKE auth thing is so bad to the point we had to roll back from using service accounts to using normal API keys because there was nowhere in stack driver to add a service account key file. So the choice was either lose all our endpoint monitoring or just switch to API keys. When I opened a support ticket about this the support guy seemed incompetent. He literally couldn't understand what I was saying despite repeating myself 3 times in a way I struggled to make any clearer. It wasn't worth the hassle.
I'm running a gRPC/REST service on GKE with Endpoints and to add a new credential I needed to add the key to the service.yml file and update the endpoint. There's no way that scales. I can't wait to use AWS IAM for this instead. We had to backtrack and give out API keys instead of having anything better.
It's like GCP services weren't designed to work with each other. Just a hodgepodge of services that are fine if you can run CLI commands, but as soon as you want to get an ops team involved who want to do everything through a UI you're screwed.
Oh, and I can't tell you how frustrating it is for the k8s alpha clusters to just vanish on you. I'm a big boy. Let me decide when I want to kill an alpha cluster because, you know, I might know better than whichever engineer put that 30 day limit in.
Sorry for the rant, but as you can imagine I'm done with GCP and can't wait to head back to AWS land.
Terraform [1] should be preferred over both Google's and Amazon's as it supports cross cloud provisioning and provides features such as update plan which are crucial for making low risk changes to infra.
We ditched managed kubernetes on GCP and rolled our own using kops on AWS. Things are more stable. ELB works better than Google Cloud load balancer which had random issues and meltdowns when we were there. Also support is better.