Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Which cloud provider to use in 2016? AWS or GCE?
76 points by tzz on April 17, 2016 | hide | past | favorite | 76 comments
Few years ago, I would have chosen AWS over GCE. Now, I am starting new project and need to reexamine which cloud provider to use. If you are starting new project in 2016, which cloud provider do you choose? AWS or GCE? They both seems to provide the services I need such as database, storage, scalability etc.

Correction: I meant to say Google Cloud Platform instead of GCE.

If you have to pick one, GCE hands down. AWS has more features but is more expensive and more operationally complex. GCE may have less features, but the ones it has are better thought out and the user experience is in a league of it's own. Also keep in mind that if for some reason you want to take advantage of something like Amazon's video transcoding service, nothing says you have to build 100% of your app on a single provider's services.

> Also keep in mind that if for some reason you want to take advantage of something like Amazon's video transcoding service, nothing says you have to build 100% of your app on a single provider's services.

Just be sure to stay mindful of the costs of being on multiple providers. In this example, it doubles your outage footprint, because a regional outage on either provider would disrupt your service. It will also moot some of your cost savings, as you can't take advantage of the free local transfer (e.g. EC2 > Elastic Transcoding > EC2 is free; GC > Elastic Transcoding > GC is not).

GCE is less expensive than AWS for on-demand instances, but not compared to AWS's RIs.

Unless there's a specific feature that you need in GCP, AWS is a safer bet from scalability, stability, support and cost.

GCE has an edge on performance, per minute billing, custom machine types, and some datacenters in areas AWS doesn't cover, however they're learning how to be a public cloud, so you will run into beta level bugs, scalability issues, support issues (they also limit how many people can open a ticket in your org), and stability problems. If you do go GCP, make sure you have a rep and a high level support contract, otherwise it's going to be hard when you run into issues.

GCE is less expensive than AWS even with AWS's long-term contracts. If you pay money upfront (losing the interest) and reserve instances for 3 years, then you can beat GCE prices by a small margin. But, if you take into consideration of interest on upfront capital expense, lost flexibility due to reserved instances, cloud cost cuts, GCE beats AWS even with the 3-year commitment. We go to Cloud because Cloud gives us agility and enables us to create infrastructure in a matter of minutes without any constraints (Imagine singing up a contract with your electricity company agreeing that you will consume the electricity for TV for 3 years on a 24x7 basis. That what reserving capacity looks like). Reserving capacity does not belong to the age of Cloud, it belongs to the age of data centers.

> Reserving capacity does not belong to the age of Cloud, it belongs to the age of data centers.

Nice, I really like that way of putting it. The promise of the Cloud is, indeed, that it is supposed to abstract you from that, but Reserved Instances reveal what is actually happening behind the curtain.

Yep, that's true. Capacity planning and reserving capacity should be taken care by the Cloud provider and users should be free to spin up and down the resources as and when they need them.

This is still the case, but I don't see the harm in offering the ability to reserve an instance for a discount. I prefer GCE's automatically applied discounts to AWS's reserved scheme, but there are plenty of cases where you will need both flexible capacity and have predicted use.

k8s master, or any number of internal tools.

> I don't see the harm in offering the ability to reserve an instance for a discount.

There is no harm with the discount. The harm is only with lock in. Once you reserve instances, you can not change the type (different CPU / memory ratio), region or the number of instances. Once you reserve, you have to pay for your instances 24x7, whether you use it or not. If you require more capacity than reserved, you need to pay the full rate. If you require less capacity, then you need to pay for the unused capacity. You don't have all these headaches with Google Cloud pay per go and automatic discounts. You simply use as many resources as you want and you get the discounts automatically.

GCE is less expensive for compute than AWS, period, RI's or no RI's. Disclosure: I'm a cloud pricing geek among other things working at Google Cloud Platform and I did substantial analysis on this, published here: https://cloudplatform.googleblog.com/2015/01/understanding-c...

There's also a handy-dandy TCO calculator that further explores these dynamics here: https://cloud.google.com/pricing/tco

Let me know if any other details would be useful!

Does GCE have an equivalent of IAM Instance Profiles and IAM policies in general, and if so how do they stack up?

One of the most underrated features IMO in AWS is being able to connect services without worrying about passing around, rotating, expiring, etc. any credentials. For instance if you use any of the client or CLI libraries on an EC2 instance, it automatically uses the instance profile credentials. It can also be used to solve the bootstrapping problem of a new instance that needs access to secrets.

(That said, it seems like a huge oversight to me that AWS itself doesn't offer a dedicated secret store to further take advantage of this, since it's something every web app needs. And actually writing the IAM policies can be a bit of a nightmare, it's a whole skill in and of itself to learn to find the 2 or 3 separate docs pages you need to cross-reference to be able to write a policy).

Yes, Google Cloud offers IAM. I find it easier to use than AWS IAM. Google Cloud IAM gives you curated roles, hierarchy of resources and thus is easier to use.

Yes, Google Cloud can manage secrets for you. For example, you can spin up an instance and let Google Cloud handle SSH key creation, copying it to instance, auto-rotating it periodically, deleting it when a user is removed from project, connecting to services from Cloud instances is taken care for you.

It's been introduced very recently, but yes: https://cloud.google.com/iam/

Also keep in mind that when you are inside of a cloud (or at least a region within a cloud) you typically do not pay fees between things like EC2 and S3, for example. If you were to build parts of your infra on AWS and other parts on GCE you would pay for data to go between those deployments.

Google Cloud if feature equivalent of AWS.

If you build inside AWS, you have to pay for cross-region bandwidth like transferring data between the east region and the west region.

If you choose Google Cloud, cross-region bandwidth is also free!

AWS has more services but they also come out with improvements and newer services much more often than GCC. GCC/GCE is very exciting but AWS is miles head right now. Open source libraries and documentation available for AWS in a wide range of languages is reason alone for a lot of people to prefer it over Google's.

I find Google Cloud miles ahead of AWS. AWS does not play well with open source services. Google on other hand embraces OpenSources (Google OpenSourced Kubernetes, Dataflow, TensorFlow, MagLev the load balancer, integration with OpenStack ... ). This reduces your risk of vendor lock-in. I have not seen AWS OpenSoruce a single Cloud service.

I've been using AWS for years, but the recent downtime for GCE got me to take a look at what Google was offering. (Makes no sense right? All publicity is good publicity?)

I was blown away by the UX of both the console and the instances themselves. Example: when you add a new user/public key in the console, it propagates to instances automatically. Sure, you could do that yourself, but the default features are just really nice to have.

You have to run their images however, but yeah, that's a nice feature esp. if your org uses GA already.

For users that are using their own images, we also provide source for all our customization to the images so you can integrate functionality into yours as required.

The code used on Linux to integrate the OS with the platform for ssh keys, startup script, auto-expanding root-disk, etc: https://github.com/GoogleCloudPlatform/compute-image-package...

For Windows, ssh keys aren't supported, however the platform has password reset built-in and starter scripts via metadata are also supported. Here's the code for the Windows agent: https://github.com/GoogleCloudPlatform/compute-image-windows

If running Windows, you will also need device drivers: https://github.com/GoogleCloudPlatform/compute-windows-drive...

Google Cloud wins hands down!

Places where Google Cloud shines over AWS: Excellent UI, Ease of use, Scalability, Security, Data services, Big Data, Machine Learning, Network, Disks. The only place where Google loses to AWS is Relational Databases.

Google Cloud Network and SSDs are about an order of magnitude better (in terms of performance / price) compared to AWS Network and SSDs. Googles Big Data tools (BigQuery, PubSub, Bigtable, Dataflow) can scale to petabyte scale without any problem. AWS can be OK for terabyte scale data workloads, but beyond that, it's hard to scale and manage. Other pieces like Kubernetes, TensorFlow and Dataflow (Opensource, if you want to run in-house) and available as native Cloud services, all services are fully managed makes Google Cloud the best Cloud.

I am very interested about Google Cloud and Machine Learning. Did you try to use other libraries than TensorFlow? What is your experience?

I think it's a complex question.

AWS is far ahead in terms of maturity of the service, breadth of services, ecosystem support.

On the other hand, Google Compute Platform is "up and coming", and in general it is trying to attract customers by offering lower-than-AWS prices on most comparable services.

AWS is also a safer bet. At the same time, Google is big enough that betting on it is not as risky as betting on another "startuppy" provider.

GCE is pretty much based on Google internal technologies and infrastructure. They had a low profile on GCE, they services are more hand picked, but it's a mature and complete service offering.

And in general, the comparable GCE offerings are LIGHTYEARS ahead in performance.

Compare instance launch times. Compare internal network performance.

I just cannot fathom using AWS for a new project. I guess if you MUST have some of the SAAS apps built on top of AWS and don't want to consider how you would run the same thing on GCE... but I think GCE would be a fantastic default cloud for 90% of people.

Do you have benchmarks on that? Not my experience for network speeds and CPU of individual machines but it's been 6 months since I checked.

Google Network and SSDs offer an order of magnitude more performance / price. Disks and Storage are about 2 times fast. Booting is 5 times fast.

Not just the performance, all Google Cloud services are fully managed (Think of S3 and Lambda on AWS). No servers! On AWS, only a couple of services are fully managed. Rest of them are a thin layer on top of EC2. If AWS is DevOps, Google Cloud is NoOps.

Some of my benchmarks for networking and storage (block and object) are in the middle of this deck:


How do HN commenters rank Azure amongst the three? I like the UI/portals quite a bit, but haven't explored any of the 3 major cloud providers in great detail.

Serious question: have you had to _use_ the Azure portal for anything?

Like much enterprise software, the new side-scrolling mess which hides necessary information has the distinct smell of something that was built to sell on golf courses to clueless middle and upper management, and not for people who actually need to do the work. The load times are horrible because of the number of HTTP requests and the weight of their payloads, making it practically unusable on, say, plane wifi or tethering outside of LTE service.

Practically this might not be the worst thing ever, because it might encourage people to describe their infrastructure as code instead of a pointy-clicky mess, but sadly this still appears to be outside the Microsoft-blessed way to do things - so most never will.

No, not for anything serious. I get some free credits every month for being a student, so I've used it minimally for configuring a few things for hobbyist projects, but I have never used it in production ready environments. Thank you for your perspective!

I'm an ex-Microsoftie so I tried everything to like Azure. They even gave my company like $600 / mo free through BizSpark.

Absolute shit experience, the worst I've had with a major platform. We went back to paying $250 / mo to DigitalOcean, despite being a bootstrapped startup with no money that hasn't paid ourselves in 18 months. That's how bad it was.

Azure is shit. The portal is insane. It's as if the Windows 8 UI people took over. It's slow and buggy. They actually call series of navigation steps a "journey", reflecting how difficult it is.

Their SSD story was late and pathetic. At first, they started offering SSD ... as temp volumes. Zero real-world use cases (except as a SQL 2014 "Buffer Pool"). Like, why would you even announce such a weak offering?

Then they added full SSD ("Premium Storage"). You need special instances to use SSD, it's not just a bit you flip on your storage options. AND, you need to pick 1 of 3 sizes. If you need something between, round up. Need more performance? They suggest you software RAID things together. It's laughable.

Everything is SLOW. Machines take forever to start up. Windows boxes often enough get stuck, requiring resizing (change to larger, change back to orig size) to get them unstuck.

The networking is dumb. "Cloud Service" = 1 public IP, then each VM gets NAT'd. This is a holdover from when Azure thought they could PaaS their way to fame. Oh, I tested restoring an Elasticsearch backup that was stored on Azure blob storage. Restoring to a GCE instance went about 10x faster.

Pricing is very high. On some instances, GCE was 10x cheaper, though the average was like 2-3x and that was including Azure's "enterprise" discount.

Azure is squarely aimed at old MS-style customers that want "cloud" and don't really know more than that. "Ooh Hadoop... in the Cloud!" That kind of thing. They know they can make a killing by just migrating on-prem customers to their own thing. And they're probably right. Why would an enterprise with a big AD deployment decide to take a risk by not going with Microsoft?

Oh and did I mention the portal will cause depression and frustration? Cause it will. It's beyond comprehension how anyone thought it was a good idea. Oh, and there's 2 of them. The old one is not-as-bad and last I checked, was still needed for things they didn't include in the New Tablet Edition Portal.

You literally could not pay me to use Azure over GCE: I was looking at something that might get BizSpark Plus, with $$$$ in free Azure credits, and it wouldn't be worth it.

Edit: Oh another awesome part. Global Namespace! Everything you create is scoped globally, so if you're naming things like mysite-web-1, better hope no one else decides on that prefix too. But hey, maybe it's 2016 and we're supposed to use guids for names and container managers so this doesn't matter. Just another poor decision decision.

I know I accurately summarize many of my coworker's opinions when I say: Fuck Azure.

Disclaimer: I used to be a huge MS fanboy, and I still really dislike Google as a company. If I sound bitter and biased, it's because I've dealt with Azure for ops for around 2 years and they've earned it. I've less exp with GCE but it's been so, so, refreshing. Like a cool minty breeze.

Azure is fine for a Windows oriented company. It's not mature enough, but soon will be a serious competitor, even for a linux shop. Watch out!

I need Windows cloud hosting for SpreadServe, as it's an MS Excel centric server product. I opened an Azure account as I wanted to try Server 2016 Containers. I left two Windows 2016 hosts running, but doing nothing, and attracted a monthly bill of 150GBP! On AWS I've got a heavily tasked Server 2008 t1-micro instance that costs ~20USD per month. So I'm sticking with AWS for pricing reasons. I didn't realize Google was doing Windows hosts, so maybe I'll try it out.

Use it everyday, we host basically everything there. Have played decently with Amazon and my preference certainly is with Azure, but I'm quite biased (.NET developer).

The ease of certain things (the integration with Visual Studio for example) simply surpasses anything I've played with for Amazon. I use the portals less though, and mostly rely on the tools provided in Visual Studio (explorers, deployment managers etc).

Azure is good for corporate IT departments. Wouldn't recommend it for anything else.

I work with 40+ partner companies, and they are all using AWS. Moving big data sets around is cheap and super easy. And, it's not been very expensive to process large data sets on AWS. On average, I crunch through 20 TiB for like $50 a pop.

Given that no company that I work with uses Google's cloud, I'm curious who is using it. They're marking hard obviously. Makes me wonder what's an ad and what's not.

Off the top of my head, Spotify, Apple, and Snapchat run at least some part of their businesses on Google Cloud products.

So practically nobody ;) These are just garage firms.

AWS, hands down. They're years ahead, and the support is just as lousy.

Serious question, when would you need to use support? I always wonder that when people say Microsoft is better than Linux because it has support, but actually I've never had a time when I needed Linux support.....

I've had to use their support many times for many complex problems around things like networking, outages, feature requests, and so on. It is truly a mixed bag. They have highly competent people working there. The problem is, they have layered in an intentionally incompetent tier of people in front of them. That's support.

I've never got much use out of AWS support for single-server installations, and my natural inclination is just to let things ride or work around them anyway. Once you are committing yourself to SLAs, and you've hired someone a bit shoutier to keep operations running they will suddenly find a lot more things to call up and try to get fixed, or at least get a story on why they went wrong and what we can do to mitigate. As you start to spend the sorts of money where the Enterprise support is economical it gets very useful indeed, with people to call who can actually chase down problems and make things happen.

Here are the cases you need support:

- instance needs to be force stopped, that doesn't always work in the AWS console, you have to open a support case

- scaling things up: s3 buckets that get sudden amounts of traffic need to be manually partitioned, ELBs as well

- they have more logs on the backend you can't see: ELB logs aren't complete for example, they have more detailed logs only support has access to

- RDS failovers: determining if a RDS failover was due to a maintenance period or a hardware problem

- SNS/SQS errors: 5xx from SNS/SQS due to backend issues you have no control over

- Accidently used the official CentOS AMI? Oops, that AMI is "locked" and doesn't let you mount the image on another instance to get your data, you have to use support to get them to remove market codes

- New instance types don't alway boot correctly, this happened with i2s, they'd just fail to boot sometimes

- Accidently use CloudFormation to deploy your stacks? Lots of support tickets to fix all the backend problems with that, but at least Terraform solves that now :)

I've had to use the support to find out why their LB kept marking my machines offline. My logs showed all 200 OK responses, time were good. The ELB logs showed success too! But then, magically, every other month ELB would shit. The "support"? Just make a new ELB. Which we did. Nice thing about cloud: don't diagnose issues, just make a new instance of X

It depends on your state and needs. It's a no brainer if the majority of your customers are in a specific region where AWS has a nearby datacenter or when you need some specific service from AWS like DynamoDb, IAM, CloudFormation, ActiveDirectory, Workspaces etc.

GCE is preferred for any kind of big data or analytics scenario. It's a cheaper service with way better networking or disk io, fit's very well for an engineering oriented organisation. Per minute pricing or very fast scaling of the services are huge advantages.

We thought a lot about this question to pick a cloud for Quizlet (~200 cloud machines) and ended up going with GCP. Here's a summary of our analysis, hope its helpful: https://quizlet.com/blog/whats-the-best-cloud-probably-gcp

I'd go for AWS since it has already proven its trustability, stability and usability in the context of daily routine/providing solid solutions for hosting high access-content.

GCE is interesting however, I'll definitely keep that in mind for future "testing" but at the moment I'd take AWS as my "out of the box"-solution.

Give GCE a try and I am sure you will be blown away!

GCP is a non-starter for us due to Region support. No Australia, Singapore or even US west regions means that latency is too high. CDN / caching can make web performance acceptable, but service performance will always suffer. Unfortunately over half of .au traffic routes to Asia via the US west coast (due to lower cost), with the rest route via Japan, Guam or Singapore. This means Taiwan would be a 300ms route for a significant portion of our audience.

AWS is what we use for cloud provisioning, with Rackspace still hosting some legacy systems. We are moving our workloads off Rackspace as the cost is higher. Azure is a possibility but unlikely as they are as expensive as AWS and offers nothing that we feel is especially compelling as a Linux shop.

If Digital Ocean, Linode or similar offered an Australian hosting option I would be willing to look at it if the cost was under 2x that of a US region, as I could get a similar functionality having SaltStack handle provisioning. However knowing bandwidth and related costs in .au I really doubt many want to go through the cost & effort.

Most of the domestic providers are either too expensive ($40-$80 AUD a month for a 1 core / 1gb instance w/ HDD backed storage & 100 GB transfer), and/or aren't run to the scale that you can have confidence that they will be an ongoing competitive business.

FYI, GCP is getting new regions later this year. US Western region in Oregon and East Asia region in (Tokyo) Japan.


And 10 more unannounced locations through '17. I'd be surprised if a single AUS wasn't one of them.

Check out Vultr. They used to only offer 1/10th bandwidth to AU, but pretty sure you get full bandwidth now. They are coming close to feature compatible with DigitalOcean (BSD, DNS, anycast dns)

Hadn't heard of Vultr, but they look awesome and prices appear right.

BGP is an awesome feature for my use case (mail), but unfortunately 32gb instances aren't available in Sydney and one of the virtual appliances I run have that as the recommended config for the traffic level I am pushing. Other feature that would be really good would be some bulk storage to hold backups on (in addition to the automatic backup feature). Additional Block storage isn't available in SYD.

Thanks for the recommendation.

OVH recently sent out surveys suggesting that they're expanding to APAC soon and as others said, Vultr offers Australian instances, albeit with Australian bandwidth prices (thanks Telstra).

Would be really surprised if OVH hit Australia before Singapore, Tokyo, Hong Kong or Taiwan, but crazier things have happened.

Something worth monitoring, thanks.

I think OP means GCP: Google Cloud Platform. There's GCE, Google Compute Engine, as part of GCP. GCE is also different from another GCP product Container Engine.

nit: GCE is Google Compute Engine, which is a raw VM product most analogous to EC2 in AWS. Google Container Engine is "GKE", which I guess is a clever resolution strategy since it's a hosted Kubernetes service (http://kubernetes.io/). GKE is another compute-based offering, but helps you deploy autoscaling services on Docker.

How about using https://cloud.google.com/storage/ for personal backup (photos, videos, files..)?

It seems much less expensive than paying a fee for a big Google Drive. The bandwidth needed for GCStorage would be minimum (just uploading from time to time)

Are you talking just about the VMs ? Because if you're talking about the platform, then just the fact that Amazon has Postgresql RDS to take care of your databases is killer.

And if I'm already locked in to AWS for one service...

Lack of managed PostgreSQL is the reason I've not tried GCC for anything serious yet

Aiven provides managed PostgreSQL in Google Cloud, please check out https://aiven.io/postgresql and https://youtu.be/m1T0SHUoa8U for a quick introduction to it.

Use Spinnaker and chose both or decide later. http://www.spinnaker.io/

the 1-click GCE image for spinnaker is estimated to cost ~$200 per month; not much next to payroll but surprisingly beefy.

I'd use multiple smaller providers, preferably non-US ones when possible.

anyone know where GCE stands in terms of PCI compliance? i know AWS is a level 1 PCI-compliant service provider and makes it a bit easier during the audit process.

I'm not going to pretend I understand PCI compliance but their certifications are here: https://cloud.google.com/security/compliance

They appear to be PCI DSS v3 compliant?

Here is the recently published solution on how to accomplish PCI-DSS.


Are they even comparable? AWS offers full virtual machines. I was under the impression that GCE offers a more high level platform where you run your code in their proprietery environment?

If I am not mistaken, using GCE means you are locked in and cannot migrate away easily. That's why I never looked into it closely. I don't want to be at the mercy of a provider.

Google Compute Engine offers virtual machines, Google App Engine is the special app platform where you have no control over the individual instances that your app runs on.

My guess is OP meant to say AWS vs GCP (Google Cloud Platform) instead of GCE (Google Compute Engine).

That's my read as well. Google has a bit of a hurdle to overcome in explaining their acronyms. AWS has a 10-year head start.

GCE ~= EC2

GAE ~= Elastic Beanstalk

Might as well toss the azure comparble ones in here while we're at it.

Azure Virtual Machines ~= Google Compute Engine ~= Amazon EC2

Azure Websites/App Service ~= Google App Engine ~= Amazon Elastic Beanstalk

I would say more correctly GAE ~= Lambda

GCE is just VMs

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact