Say I were a CTO (I’m nowhere near it), why would I choose GCP over AWS or Azure? Even if after doing a technical assessment and I thought that GCP was technically slightly better, if something happened, the first question I would be asked is “why did you choose GCP over AWS?”
No one would ever ask why you chose AWS. The old “no one ever got fired for buying IBM”.
Even if you chose Azure because you’re a Microsoft shop, no one would question your choice of MS. Besides, MS is known for thier enterprise support.
From a developer/architect standpoint, I’ve been focused the last year on learning everything I could about AWS and chose a company that fully embraced it. AWS experience is much more marketable than GCP. It’s more popular than Azure too, but there are plenty of MS shops around that are using Azure.
- Native integration with G-Suite as an identity provider. Unified permissions modeling from the IDP, to work apps like email/Drive, to cloud resources, all the way into Kubernetes IAM.
- Security posture. Project Zero is class leading, and there's absolutely a "fear-based" component there, with the open question of when Project Zero discovers a new exploit, who will they share it with before going public? The upcoming Security Command Center product looks miles ahead of the disparate and poorly integrated solutions AWS or Azure offers.
- Cost. Apples to apples, GCP is cheaper than any other cloud platform. Combine that with easy-to-use models like preemptible instances which can reduce costs further; deploying a similar strategy to AWS takes substantially more engineering effort.
- Class leading software talent. Google is proven to be on the forefront of new CS research, then pivoting that into products that software companies depend on; you can look all the way back to BigQuery, their AI work, or more recently in Spanner or Kubernetes.
- GKE. Its miles ahead of the competition. If you're on Kubernetes and its not on GKE, then you've got legacy reasons for being where you're at.
Plenty of great reasons. Reliability is just one factor in the equation, and GCP definitely isn't that far behind AWS. We have really short memories as humans, but too soon we seem to forget Azure's global outage just a couple months ago due to a weather issue at one datacenter, or AWS's massive us-east-1 S3 outage caused by a human incorrectly entering a command. Shit happens, and it's alright. As humans, we're all learning, and as long as we learn from this and we get better then that's what matters.
> If you're on Kubernetes and its not on GKE, then you've got legacy reasons for being where you're at.
Or you have legitimate reasons for running on your own hardware, e.g. compliance or locality (I work at SAP's internal cloud and we have way more regions than the hyperscalers because our customers want to have their data stay in their own country).
Your response is from a geek’s viewpoint. No insult, intended, I’m first and foremost a 30 year computer geek myself - started programming in 65C02 assembly in 6th grade and still mostly hands on.
But, whether it is right or not, as an architect/manager, etc, you have to think about what’s not just best technically. You also have to manage your reputational risks if things go south and less selfishly, how quickly can you find someone with the relevant experience.
From a reputation standpoint, even if AWS and GCP have the same reliability, no one will blame you if AWS goes down if you followed best practices. If a global outage of an AWS resource went down, you’re in the same boat as a ton of other people. If everyone else was up and running fine but you weren’t because you were on the distant third cloud provider, you don’t have as much coverage.
I went out on a limb and chose Hashicorp’s Nomad as the basis of a make or break my job project I was the Dev lead/architect for hoping like hell things didn’t go south and the first thing people were going to ask me is why I chose it. No one had heard of Nomad but I needed a “distributed cron” type system that could run anything and it was on prem. It was the right decision but I took a chance.
From a staffing standpoint, you can throw a brick and hit someone who at least thinks they know something about AWS or Azure GCP, not so much.
It’s not about which company is technically better, but I didn’t want to ignore your technical arguments...
Native integration with G-Suite as an identity provider. Unified permissions modeling from the IDP, to work apps like email/Drive, to cloud resources, all the way into Kubernetes IAM.
You can also do this with AWS - use a third party identity provider and map them to native IAM user and roles.
Cost. Apples to apples, GCP is cheaper than any other cloud platform. Combine that with easy-to-use models like preemptible instances which can reduce costs further; deploying a similar strategy to AWS takes substantially more engineering effort.
The equivalent would be spot instances on AWS.
From what (little) I know about preemptible instances, it seems kind of random when they get reassigned but Google tries to be fair about it. The analagous thing on AWS would be spot instances where you set the amount you want to pay.
Class leading software talent. Google is proven to be on the forefront of new CS research, then pivoting that into products that software companies depend on; you can look all the way back to BigQuery, their AI work, or more recently in Spanner or Kubernetes.
All of the cloud providers have managed Kubernetes.
As far as BigQuery. The equivalent would be Redshift.
They're equivalent in the sense that you have nodes that can die anytime, but it's much more complicated. You could technically have a much lower cost on AWS by aggressively bidding low but we've had a few instances where the node only lived a few minutes.
Preemptibles nodes are max 24h, and from our stats, they really live around that amount of time. I think the lowest we've had was a node dying after 22h.
You also save out of the box because they apply discount when your instance is running for a certain number of hours.
You can even have more discount by agreeing to a committed use which you pay per month instead of one-shot unlike AWS.
I'm going to add a few more reasons to the above reply:
- UI and CLI is so much better in GCP
I don't have to switch between 20 regions to see my instances/resources. From one screen, I can see them all and filter however I like.
- GCP encourage creating different projects and apply same billing.
It's doable in AWS too, of course, but coupled with the fact that you have different projects and regions, and you can't see all instances of a project at once, this makes a super bad experience
- Networks are so much better in GCP
Out of the box, your regions are connected and have their own CIDR. Doing that in AWS is complicated.
- BigQuery integration is really good
A lot of logs and analytics can be exported to BigQuery, such as billings, or storage access. Coupled with Data Studio and you have non technical people doing dashboards.
- A lot of small quality of life that makes the experience a lot better overall
... like automatically managing SSH keys for instances, instead of having a master ssh key and sharing that.
Here's the thing though, a lot of GCP can be replicated, just like what you linked for the identity provider. With GCP, there's a lot of stuff out of the box -- so dev and ops can focus on the important stuff.
Overall, AWS is just a confusing mess and offers a very bad UX. Moving to GCP was the best move we've made.
"Cloud" is not a thing one buys and one's reputation has nothing to do with the reliability of the services consumed, but the reliability of the services provided.
To put it more succinctly, "you own your availability".
In the end, "cloud" is a commodity and all cloud providers are trying to get vendor lock-in. My goal as a manager is not to couple my business revenue linearly to any particular product or service.
So you’re not using any third party vendor for anything and you’re doing everything in house?
Cloud is only an interchangeable commodity if you’re treating it like an overpriced colo and not using it to save costs on staff, maintenance, and helping deliver product faster.
That's why it's important to use k8s (and various abstraction layers, standards APIs, etc.), which helps with portability, and thus you can risk load balance between cloud vendors, and you can even throw in on-prem into the mix.
And why wouldn't you just do a colo then? From my experience, cloud infrastructure is always more expensive than the equivalent on prem/colo infrastructure unless you depend on hosted solutions and you're willing and able to operate with fewer infrastructure people and it doesn't help you move faster.
The last time I did the math a reasonable highly available setup was $1-3m CapEx per data center, I’d want no less than three. That’s 30kw worth of gear per for a total of 90kw at ~$180/kw MRC if I’m lucky plus transit fees, so $20k a month.
Doable, but it’s a hell of a lot of hassle and that CapEx is huge for a startup.
I’d go bare metal in a second for any kind of cost conscious business that needed scale and had established revenue.
In the case of a startup, the question is just the opposite. It’s about moving fast and being nimble more than it is about worrying about a distant future where lock-in could possibly be an issue. I would be all in on leveraging as many of the services that the cloud provider offers and where they could take care of the “undifferentiated heavy lifting”.
GCP has a few features that set it apart from other cloud providers. GKE is head and shoulders above the other offerings from AWS and Azure.
GCP can be a fair bit cheaper than AWS and Azure for certain workloads. Raw compute/memory is about the same. Storage can make a big difference. GCP persistent SSD costs a bit more than AWS GP2 with much better performance and way cheaper than IO2. Local SSD is also way, way cheaper than I2 instances.
Most folks deploying distributed data stores that need guaranteed performance are using local disk, so this can be a really big deal.
I have a more detailed post above, but if you are large enough, you’re not paying the listed price for AWS. But even if you are, prices change all of the time. From a completely selfish standpoint, is the price difference worth the cost to bet your reputation on if you are the one that made the final decision? Even if statistically the same could happen with AWS, no one would blame you for choosing AWS.
However, I could see doing a multicloud solution where I took advantage of the price difference for one project.
Discounts included, my previous statements about cost still stand. That said, I don't think the cost differences should incentivize anyone to move unless they're operating at a scale that would make a substantial difference. Disk IO in AWS can be prohibitively expensive, for example. Any business that relied heavily on that would benefit by looking at local SSD on GCP.
There are lots of little things to like about GCP that are superior to AWS. Network IO, some of the bigdata products. Not having to deal with IAM. In the end it would be some combination of those things that should drive the decision. Basic enterprise IT shops moving to "cloud" should choose AWS 90% of the time.
Anyone starting from scratch on kubernetes or considering shifting all of their infrastructure to it should absolutely choose GKE. Anyone currently in EKS or AKS should sign up for GCP today and evaluate the differences to see what they're missing.
I chose gcloud for the easier admin interface. I somehow manage to separate all my resources and look at them based on project groups without having to know cryptic instance ids of 32 chars. Oh, and they had Kubernetes first and I jumped into that boat early.
Were you making that decision for a personal project or for something work related?
The AWS console is wildly inconsistent. I’ll give you that. But, any projects I am doing are usually defined by a Cloud Formation Template abd I can see all of the related resources by looking at the stack that was run.
Theoretically, you could use the stack price estimator, I haven’t tried it though.
No one would ever ask why you chose AWS. The old “no one ever got fired for buying IBM”.
Even if you chose Azure because you’re a Microsoft shop, no one would question your choice of MS. Besides, MS is known for thier enterprise support.
From a developer/architect standpoint, I’ve been focused the last year on learning everything I could about AWS and chose a company that fully embraced it. AWS experience is much more marketable than GCP. It’s more popular than Azure too, but there are plenty of MS shops around that are using Azure.