The reason I chose the n2-standard-2 over the n1-standard-2 was because the N1 instance in question has only 7.5GB of memory rather than 8GB. I let OVH slip on this one because they didn't have any other instances in the same ballpark but Google did. One of the eggs you have to crack when doing such a comparison I'm afraid.
With respect to the discussion of what really is a fair comparison to 1 unit of Google's proprietary vCPU units: that is of course open to speculation. One of the tremendous problems of cloud computing pricing is that the big three suppliers like to a) take a proprietary unit like "vCPU" which is not in common parlance and b) then repeatedly quote the cost for it in a tiny unit like hours. An n2-standard-4 is 0.0517 USD per hour - great. And let me really get the boot in: I hate that google's pricing page continuously defaults to the this useless unit on every page load. That company is probably the largest producer of web cookies worldwide but to remember that one, essential, UI slider was too much apparently. I broadly file this under the objection of "This is a naive navigation of the pricing schemes of $BIG_TECH" that I cover in the article
Transfer pricing is a real issue and arguably where $BIG_TECH really come and rip your face off. Egress bandwidth is priced at an unreal level precisely because people like me doing comparisons forget about it. In this respect $BIG_TECH are like the chinese restaurants where the dish is £5 but a 250ml bottle of coke to go with it is £6. I should have included it and if I did the comparison again I would model a small defined application rather than a small specific spec size. Mea culpa.
I still think the view I express in the article is right: $BIG_TECH cost a chunk more.
Edit: also, you can create custom sized instances so you could have created an 8GB 2 CPU N1 instance for $49.63/mo.
Is it the norm for CPU to be a bigger line item than transfer?
Not universal, but certainly very normal.
1. Transfer within a data center is usually free.
2. CDN reduce transfer fees significantly for static content.
3. Transfer is pay-what-you-use, whereas compute is traditionally pay-what-you-reserve.
AWS transfer are $0/GB incoming; $0.09/GB outgoing. A c5.large (1 physical CPU, 4GB RAM) is $0.09/hour.
So as long as you average less than 291KB/s from your single-core machine, you will spend more on compute than transfer.
Considering that you probably overprovision the CPU to handle spikiness, this is quite likely especially for a typical JSON API server (no images, no video, no web assets).
We picked AWS mostly because they are close to the backbone and because you really get something close to bare metal access. At the time this decision was made, similar access from various other providers was either more expensive or non-existent.
Realistically few are going to need the full 1TB and most will be closer to 2-10% on average (my guess from hosting industry experience).
Every time I have to update something on GCP App Engine, I end up creating a billing account so I can use Cloud Build for a Node.js app, then blow the billing account away after the app is deployed. It scares me to create a way to be billed when everything I'm doing is at the free-tier level.
On AWS I discarded my account entirely after I got a bill for a few cents when I wasn't (knowingly) using anything at all.
I've found AWS billing to be annoyingly opaque when you're trying to figure out what a service will cost you next month. I guess people who use it a lot have a system, but as a small fry newcomer they seemed really shy about what stuff cost.
First, why are we looking at Google's N2 instances rather than N1 instances? The N1 instance would be $52 rather than $61, but the author hasn't talked about why they selected the more expensive N2 instances. Given that competitors don't talk about the CPUs they're using, it seems weird to select the more expensive CPUs for Google.
Second, Google offers dedicated hyper-threads. The author says that cloud providers (like Google) are more expensive, but they've compared dedicated hyper-threads on Google with shared hyper-threads on Digital Ocean. DO offers an 8GB 2 vCPU (2 dedicated hyper-thread) instance for $60/mo, but the author is using the 8GB instance with shared CPU for $40/mo.
So, with storage, Google costs about $52 while DO costs $60 for an equivalent instance. Linode's $60 8GB dedicated vCPU instance does come with 4 cores so it seems like a better value. One can also argue that the included transfer on Digital Ocean offers $8 in value. However, the premium for the instances alone isn't as big for Google. In fact, google seems cheaper.
Now, it's probably a fair comparison for Amazon's instance which only gives you CPU credits for around a third of the time.
Google's automatic sustained-use discounts and dedicated hyper-threads make it really competitive with Digital Ocean (if you don't need a lot of bandwidth) as long as you're doing an apples-to-apples comparison. DO's over-sold CPU instances will be cheaper because you're getting less. If DO didn't offer dedicated hyper-thread instances, maybe you could claim that they were equivalent. But DO literally sells something more equivalent for $60 rather than $40.
EDIT: Also, OVH is a bad comparison. OVH is cheap, but inconsistent in their product offerings. The author notes that they offer hosted DB services, but that's only in France. Their US, Canada, Singapore, Germany, Poland, and Australia locations don't offer that. Their US website is missing pricing on many of the things they seem to offer. Plus, at a certain point, when you're trusting someone with your datastore, you want a high level of certainty. OVH's website doesn't inspire confidence given how much seems like someone didn't even check it. It's certainly cheap, but it seems cheap for a reason.
One final thought: I'm surprised the author hasn't talked about transfer pricing. Cloud providers usually charge a bundle while others charge a lot less. 1 cent per GB at Digital Ocean is a lot less than the 9 cents per GB at AWS. AWS even charges 1 cent per GB for data transfer between AZs in the same region. If you're running a compute and Kafka cluster in 2 AZs, then writing 1GB to a quorum of 3 servers means paying 1.5 cents per GB written (assuming that half the time you're writing to 2 servers outside your AZ and half the time you're writing to one server outside your AZ). Likewise, when you go to read it, if half the time you're not reading from a local AZ, you're paying half-a-cent per GB to read the data. So processing 1GB costs 2 cents. That adds up fast. Everyone compares things like compute instances and seems to ignore data transfer costs. Frankly, Google is competitive on storage and compute costs with places like DO. However, if you are trying to create the next Imgur, you probably care more about transfer costs than compute or storage costs.