The Amazon Premium
calpaterson.com
calpaterson.com
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.
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.
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.
But that's now how compute is delivered in projects any more. The value isn't on the box, it's on the platform.
I'm personally about to bolt together a solution that will need to scale significantly, that uses complex message queuing, enormous amounts of object storage, expose set of APIs, and require a highly available distributed document store. And I'm going to personally do it by myself without having to hire 14 SMEs across each of the domains.
The value isn't in a cheaper linux server, or less expensive bandwidth. The value is me being able to develop a solution from the ground up by bolting together Web services, Amazon S3, SNS/SQS, Lambda and DynamoDB from a menu of integrated services all by myself. Period.
Cool. It sounds like money doesn’t matter to you because you’ve identified a really high margin business and time to market is critical. This doesn’t match how 99% of businesses work though.
Somebody else said it best. People go to the cloud not to escape the hardware, it is to escape all the people who administrate the hardware. Truer words have never been spoken. Escaping all the gatekeepers of traditional setups adds significant value to a company.
That might be why uninformed people do it. But the real cost of managing your own hardware is devops, which doesn’t actually go away on the cloud.
Not using multi-cloud or not having a super trivial way to switch is just negligence and wouldn’t be tolerated in any large businesses.
Cost matters to all businesses. But you have to do proper accounting. Do I hire more people on my team to build automation to create our database clusters, or do I just punch a button and then pay the bill? There must be a point where it makes sense to roll your own, but that point is likely to be fairly high up.
Whenever I hear that someone 'can do it cheaper', I often find that the math is not correct.
By the way, if you are not big enough that the relative cost of a VM between cloud providers is the primary concern, guess what, some of the services mentioned are really cheap – in some cases cheaper than running your own in whatever provider. You don't have to maintain VMs 24/7 to store data on S3, or to make use of SNS, SQS, DynamoDB. Lambda is the poster child for not maintaining servers
If you are really tiny, go use those services instead of wasting any time spinning up servers.
PS: If you want to try this is my referral code (10$ off): https://app.cloud66.com/referral?code=IOwgnqPHIEJwEzG
This is the only use case you see for what I described? Most data processing I saw works exactly like that, too: some compute cluster using a shared persistence layer (either object store or a network filesystem).
Edge computing, otoh, explicitly exists because not everything can be handled well in that way.
For example, how do you handle long running asynchronous processing, distributed pub sub, or services that have widely different performance and scaling characteristics?
If you haven’t seen this, it might be time to start looking for a more interesting job.
For a truly distributed system just look at a distributed hashtable. You can do it with a cloud provider, but it somehow contradicts the point of a DHT to control the nodes, does it not?
The value to me personally is the reliability. Amazon continues to deliver on highly reliable services, which is IMO the main reason they can charge such a premium.
To each their own, but the ability to deploy seemingly endless amounts of computing power to do whatever I want, with the click of my mouse, is something I could only dream of as a kid.
It took me back to that childhood experience of playing with Lego. Everything just "snaps together", and a lot of things that ought to be difficult were shockingly easy.
Mid-way through the project the customer apologised because they forgot to mention that they needed geo-redundancy for every layer, including the database.
It was a checkbox on AWS Aurora. A literal checkbox. I pressed it. There was a progress notification and then it was done. Just like that. A distributed cluster.
I know what's involved, it's not like I haven't built SQL Server clusters dozens of times before, I've even scripted the process before. But it's kind of magic to see it condensed down to a the absolutely most trivial true/false button that it could possibly be.
In my opinion AWS Console is one of the best designed from all cloud providers out there. GCP is years behind, even with $100k credits I just can force myself to use that pice of unusable crap. Probably Material Design is here to blame, as it's terrible on web.
DigitalOcean does a great job with their interface but they don't even have 1/20 of features offered by AWS, at the end it will share the fate of GCP. Being extremely bloated. :)
I hear this for the first time; to me all the Amazon related interfaces I've used have resulted in poor user experience at best. This goes from the store to AWS and sellerscentral should really get a special mention. In AWS, I always felt that everything was super cluttered and important things hard to find, nowhere near intuitive. This goes for high level concepts as much as component behaviors like lists in s3... So, I'd be super curious to hear what you found that was so good. Care to share?
Azure is 5 years ahead of Google Cloud. AWS is 5 years ahead of Azure. The differences are that extreme.
I didn’t know at the time that the consultants were a bunch of old school netops folks who took one AWS exam and all they knew was how to duplicate an on prem infrastructure in AWS.
Of course as always, if you take your on prem thinking and processes to the cloud, you now have the worse of both worlds. All of the process and people overhead of being on prem and you’re spending more for the privilege.
I started studying for the AWS architect associate exam just so I could talk the talk and I realized how much unnecessary work we were doing instead of using managed services. I presented my entire plan to the consultants and they didn’t tell me once that there was a better way.
For phase 2, I wanted to be more “cloud native” there was so much push back from the netops people who could tell they were losing their grip.
Not long after, I changed companies to work for a company where the new CTO - a smart guy who is definitely not young - always prefers managed services.
I’ve worked for small companies and everything I do in AWS, I’ve had to do on prem in the last 20 years. Never again.
Of course as a developer, the thought of creating infrastructure just by writing code is attractive.
The post is not about cloud computing vs bare metal, it is about AWS compute and storage being more expensive. All the alternatives presented are cloud providers. The article provides data, you are providing hyperbole. You are not even wrong. AWS probably IS the most feature complete PAAS, but you can't deny it's also the most expensive IAAS.
I do think the data in this article was valuable, and it probably is likely that AWS charges more for these services because they can - the total value people get from the whole AWS system makes it worth it. So if you only care about a compute instance and storage, you probably don't need AWS, but the second the decision becomes "Do I have to hire a developer if I have to do this thing on my own?" it becomes pretty clear why people want a more full-featured cloud.
Get to a certain maturity and standardization of the cloud software. Don't deliver servers, deliver half-racks, pre-assembled, Turn-key. No screwdrivers, no wiring to braid, just a hundred cores on a couple dozen motherboards and a couple 10G wires coming out the side.
So if all you're doing is setting up root access and handling everything yourself, then yes, you're throwing huge wads of cash down the toilet with those platforms versus renting a VPS on Linode, Digital Ocean, etc.
The economic disparity can flip, though, if you use these services as they're intended. i.e., take advantage of features that are charged incrementally and optimise to reduce how much they're activated per user transaction, where "user transaction" is a key user action such as a page serve or a reported being emailed.
The costs can be much lower when you're only using what you need, and not paying for large capacity to be sitting around in case of a peak usage moment. And even more so when you consider there are automatic upgrades and ops to ensure high availability.
If you are running in the cloud then you still need a devops guy same as you would if you where bare metal. In fact you will probably need _more_ devops people the deeper you get into the AWS ecosystem.
The cloud formation code is (likely to be) much less than your application code. ... and if your intention and need is to have couple servers, then you don't really need any infrastructure code. If these cases, yes bare metal is much cheaper and (probably) better option.
Every place that I have worked it’s the responsibility of the team who wrote the code to create the CI/CD pipelines.
But at least three of the senior engineers (including me) I feel could hold our own against any “specialists”. My experience are too many of the “specialists” are old school netops people who got one certification and treat AWS like an overpriced colo.
I'm a software engineer who went the specialist route because it does take real skill to do this well. Yes, I am embedded on a team of old school netops people now, but I'm in charge of all of this and I get to drag them kicking and screaming in to the modern world.
Specialists are worth it if you find the right one.
Old school netops folks are so afraid of becoming less relevant they do their best to keep control. But at least they are harmless compared to the ones that have tried to transition to the cloud. They are actively harmful costing clients and companies more with little to show for it.
And no I am not young. I’m 45 and started programming in assembly in the 80s.
“lift and shift” should be phase 1. Not the end goal.
Dang, I wish we had a term for this blending of roles...
But still ops serve developers not the other way around. The senior developers who knew AWS well, basically set the standards and kept ourselves accountable to the ops guy we hired, even though any of us can override him because of our influence in the company.
I started taking away some of my own access and privileges just so I would be the first to hit roadblocks to feel other developers pains who weren’t given the keys to kingdom.
Hiring "DevOps" teams completely misses the point, in the same way that I don't hire Unit Testing teams to write the unit tests that my Devs don't want to do the grunt work for.
When a Dev understands Ops they write more efficient code, as they realise what storing your entire DB in cache really means for the server.
Granted, we're a mature startup and have put a few years of investment (at the cost of 2-3 "Devops Guys") into our infra, but ultimately it doesn't take much to manage a ton of AWS infra once the tooling is in place.
The instances we use are not the largest (we use 2xls) but we also incorporate spot instances as part of our autoscaling.
They were capable of scaling in a way that is certainly an anomaly, and not indicative of the costs of an ordinary team.
It speaks volumes about what the right talent and architecture/technology choices can do if leveraged successfully, but is more of an interesting anecdote than a realistic infrastructure budget.
That’s a pointless calculation. The acquisition wasn’t for the employees. As with all network-effects products, the acquisition was for the active user base. They could have acquired WhatsApp, fired the engineering team, rewrote it with an architecture that required 100x the servers and still been happy.
Terraform and the fact that I came in with experience makes this doable. But only just.
Everything is a tradeoff.
You can manage things efficiently in AWS if you do it right. You can manage metal efficiently if you do it right.
You can kill your business if you do either one wrong.
This does not make any sense. You don't need cloudformation or anything, you can just use a wizard and provision as many VMs (baremetal or otherwise) as you need. It's literally a form and next -> next -> next.
Now that you have systems you can login to, their complexity is the same – except you won't have to care, or manage any hardware.
You still have to manage those systems yourself. Keep them patched, secure, and the workloads up. It's your choice whether or not to delve deeper into the AWS ecosystem.
Note that even though I said you don't need cloudformation (actually just use Terraform instead), you have a lot of power at your disposal if you do. You can't automate racking and stacking of physical servers, but you can fully automate the lifecycle of a cluster of VMs. At my job I can bring up a 40+ cluster containing many kinds of workloads, with a single butotn press. And destroy it just as easily (for non-prod). That's invaluable.
Depends upon the number of servers you have.
Back when I worked on several somewhat popular websites ( a handful with ~1-5mil daily unique users), we had about 40 servers and they mostly took care of themselves. Between me (primarily a developer) and the CTO we averaged maybe a single day thinking about hardware per month, and that was mostly to install new hardware rather than taking care of existing stuff.
If you have this number of servers, once you have something like Ansible setup (we used cfengine back in the day, ugh), both hardware and software mostly manages itself.
I set up an EC2 instance behind a load balancer and set it to auto-scale. done. If I had to handle that bare bones, I would have had to upgrades switches, manage dozens of servers, deal with hard drive failures, etc., and most of that would be idle 99% of the time.
I had the same experience hosting on AWS (having previously hosted on colocated bare metal server). An entire category of sales friction almost entirely disappeared, and it was friction that was common on the largest and most profitable accounts.
If you want to use managed services (Fargate, Aurora, DynamoDB, etc) at AWS, it's even more expensive!
So if you just use EC2 then alternatives are cheaper, and if you use managed services it becomes so expensive so can actually afford hiring people to take care of your virtual machines.
Just put your app into an image and write the CF templates for your cluster, services, and task definition and you’re good to go.
And we can actually move faster without the netops bottle neck.
And HA is - for most usages - best avoided. It's a complexity source like nothing you've seen before. Better to make sure you can replace anything that's broken really fast (because it's all scripted), and if you have enough scale to have at least few machines - just accept that you'll have some very small downtime when lightning strikes, and that many machines can be temporarily missed without much impact anyhow. By the way - you'll have that in HA cloud datacenters too, but the cause there will be human error due to the excessive complexity. If you dive into uptime claims by cloud providers it's typically for obtuse stuff like "can bare VM ping another VM over http in same datacenter". Actually use any of all of those complex services they provide, and weird stuff like "the outside internet connectivity" and the uptime of the overall system starts shedding those precious 9's. Uptime is almost certainly excellent compared to any trivial alternative, but the real-world difference isn't as large as the misleading uptime claims lead you to believe. I've had outages cloud providers several times while their uptime ticker claimed everything was just peachy.
If you really need HA, my condolences - but it's overrated vs. simply being able to spin up a new copy in a few minutes, especially since stuff just doesn't die or crash all that often; typically only once every few years, if that. Almost all actual downtime is not because your physical infrastructure went down in ways that most HA could have prevented.
I wrote CloudFormation scripts that handle our basic use cases and use parameters.
Any developer can click on quick create link for instance and have an isolated build environment just for there service. If they need something above and beyond the standard CodeBuild Docker container for their build environment they can create their own.
And we have made the infrastructure manpower diminish to an extent that it might as well be gone.
* Even compared to bare-metal, the difference isn't all it's chalked up to be - the actual rusty box doesn't need a lot of TLC, and you can hire companies for that too,*
Can I hire a company to put in 20 additional servers every night when our processing queue increases and take them out when it decreases?
And HA is - for most usages - best avoided. It's a complexity source like nothing you've seen before
It’s “complex” to have an autoscaling group with a min/max of two and clicking on a button (well actually use a CF script) when you want to increase the number of servers? There is nothing “complex” about having HA in a cloud environment.
Better to make sure you can replace anything that's broken really fast (because it's all scripted),
It’s even faster when you don’t have to do it yourself..
* Almost all actual downtime is not because your physical infrastructure went down in ways that most HA could have prevented.*
HA can be as simple as a rogue query killed an app/web server (been there done that). I got an alert that the web server was unhealthy. By the time I woke up well, I got another alert saying that a new instance was brought up. I went back to sleep and investigated in the morning. Not to mention the automatic updates performed on RDS instances or the updates that you don’t have to care about with managed services.
> I wrote CloudFormation scripts that handle our basic use cases and use parameters.
scripts will run on things other than the cloud. The thing that made that difference? It may have been you, not the cloud.
> > Even compared to bare-metal, the difference isn't all it's chalked up to be - the actual rusty box doesn't need a lot of TLC, and you can hire companies for that too,*
> Can I hire a company to put in 20 additional servers every night when our processing queue increases and take them out when it decreases?
Nope; you can't - and that's a real upside to a cloud. I'm not opposed to using the cloud; merely saying that personnel costs savings are nonsense, however. In any case; you cannot easily do this with physical hosts. Then again; most people probably don't need to. If your workload is merely a little spiky (like day vs. night) then the extra costs due to the cloud will be greater even if you spin down instances sometimes; and if you do that, you're spending time to do so, which undercuts the clouds other selling point "I don't want to manager all that junk".
On HA: You're listing scaling, not HA. You don't need to do anything special to make interchangable, largely stateless machines "HA" no matter your infrastructure. HA is relevant if you have any single points of failure, and how you avoid the consequences of having those; e.g. having a live database replica or whatever. But sure: this 'll be easier on some clouds!
> > Almost all actual downtime is not because your physical infrastructure went down in ways that most HA could have prevented.
> HA can be as simple as a rogue query killed an app/web server (been there done that). I got an alert that the web server was unhealthy. By the time I woke up well, I got another alert saying that a new instance was brought up. I went back to sleep and investigated in the morning. Not to mention the automatic updates performed on RDS instances or the updates that you don’t have to care about with managed services.
So... why does any of that need the cloud? Sounds like a plain old process or container needed restarting. That's just basic server stuff servers have been doing for... well, longer than the cloud even existed.
But the point isn't that the cloud is a bad idea. It's that people ascribe frankly absurd benefits to it, when many of those are either unrelated to being in a cloud, and some are wildly overstated, specifically the management costs. Not that there aren't upsides: but if you're saving 170k on network engineering personnel costs; well, you didn't need the cloud to do that unless you're really, really huge, to the point that other costs are dominating anyhow.
Can you run a script that creates a VM that autoscales your build server from a size that runs 1 build to 50 builds simultaneously? That’s the equivalent of CodeBuild.
* On HA: You're listing scaling, not HA. You don't need to do anything special to make interchangable, largely stateless machines "HA" no matter your infrastructure. HA is relevant if you have any single points of failure, and how you avoid the consequences of having those; e.g. having a live database replica or whatever. But sure: this 'll be easier on some clouds!*
HA and scaling are conceptually different, but in the cloud they are practically the same thing.
An autoscaling group for instance that you set for a min/max of two across availability zones will ensure that you have two instances running whether your computer goes down or the entire zone goes down. It’s just a matter of rules what it scales based on.
The only practical difference between autoscaling and HA is scaling across AZ’s (overly simplified).
Then again; most people probably don't need to. If your workload is merely a little spiky (like day vs. night) then the extra costs due to the cloud will be greater even if you spin down instances sometimes; and if you do that, you're spending time to do so, which undercuts the clouds other selling point "I don't want to manager all that junk".
A “little” spiky going from 1 VM to 20? And that’s just one workload with Windows servers. We have other workloads where we need to reindex our entire database from Mysql to ElasticSearch and it automatically autoscales Mysql read replicas. How much would it costs to keep multiple read replicas up just to have throughout you only need once a month?
How much “management” do you think autoscaling based on an SQS is? You set up a rule that says when x number of messages are in the queue, scale up to the maximum, when their are less than y messages you scale down. This happens when everyone is sleep. Of course we do this with CloudFormation but even clicking in the console it literally takes minutes. It took me about 2 hours to create the CF template to do it and I was new at the time.
There are all sorts of spiky workloads. Colleges are well known for having spiky workloads during registration for instance.
but if you're saving 170k on network engineering personnel costs; well, you didn't need the cloud to do that unless you're really, really huge, to the point that other costs are dominating anyhow.
It doesn’t take being huge to get complicated:
- networking infrastructure
- permissions
- load balancers
- VMs (of course we need 20x the capacity just to handle peak)
- Mysql server + 1 read replica. Again we would need 3 or 4 more just to sit idle most of the time.
- enough servers to run our “serverless” workloads at peak.
- a server for our messaging system (instead of SNS/SQS)
- an SFTP server (instead of a managed solution)
- a file server with backups (instead of just using S3)
- whatever the open source equivalent of just being able to query and analyze data on S3 using Athena.
- a monitoring and alerting system (instead of CloudWatch)
- an ElasticSearch cluster
- Some type of OLAP database to take the place of Redshift.
- a build server instead of just using CodeBuild
- of course we can’t host our own CDN or just host a bunch of files in S3 and serve them up as a website and all of the server APIs hosted in lambda.
- We would have to host our own domain server.
- we would Still need load balancers.
And...Did I mention that most of this infrastructure would need to be duplicated for four different environments - DEV, QA, STG, and Prod?
And none of this is overly complicated with AWS, on prem we would have to have someone to manage it. Imagine managing all of that at a colo? We would definitely need someone on call. The only things that would go down and that we would have to do anything about are our web and API servers.
While there might be some thrashing with them being killed and brought back up until we figured out what was wrong, autoscaling would at least keep them up.
More expensive than what? Running similar services yourself?
Being a "solo hacker" developing multiple websites, I need to prioritize where I put my time in. Thus my "default" choice is using Elastic Beanstalk to deploy websites, be it PHP, Python or something else. I can easily add environment variables, let it connect to RDS (database), scale it up (more servers or bigger servers), I can add SSL certificates, I can add a CDN (Cloudfront), I can add separate data storage (S3) all with a few clicks and from one (albeit super-huge and need-to-get-used-to) dashboard.
Alternatives: I don't trust Google services for anything critical (they tend to shut down easily or they might just change their pricing drastically - e.g. in Google Maps), Azure might be an alternative, just never had the time to check it out intensively.
For "fixed ceiling" projects, I use Digital Ocean (because unfortunately AWS mostly doesn't offer a budget ceiling, just alarms).
It is in the ecosystem in the sense that it ultimate boots up an EC2 instance. It is essentially a simplified skin on top of EC2 where AWS makes most of the decisions for you in regards to server setup, with simplified pricing. And it shows up as AWS on your bill, and can be billed along side other AWS services you use.
However, it isn't really in the ecosystem as I would argue. You can't connect it to networks and subnets you create. You don't have control over availability zones, so essentially everything (like talking to S3) is considered egress traffic. It is like a sandboxed AWS service, that sits out there on its own. It really isn't any different than using Linode or Digitial Ocean for your compute resource and using AWS for block storage, queuing, DNS, etc.. Other AWS services can't "see" your Lightsail instance, like they can see your EC2 instances. You can't connect EBS volumes to it, you can't take advantage of elastic IPs, or anything of that sort. It really is a separate service that sits on its' own, under the comfort of the AWS name.
If I remember right, even tags don't carry over between Lightsail and the rest of your AWS account. Again, Lightsail is fine as a service, but it is only "sort of" in the AWS ecosystem. It mostly sits on its own as an isolated service, backed by AWS.
I'm not really sure where you're coming from.
As someone who's been doing this for years, the old days when you had a £10 virtual machine that could handle tens of concurrent requests don't seem to be handled by the low price AWS/Azure servers. Let's not forget, tens of concurrent requests is 100,000s of monthly users, a major win for most startups.
And even the expensive cloud options are utterly rubbish compared to what you can get for a bare metal, I like to compare the two as you can get a Ferrari for £1000 a year, or you can get a bicycle for £1000 but don't worry, it's a "cloud" bicycle so definitely go with that.
I am constantly having problems with an Azure app at the moment timing out because of some poorly optimized queries that are being throttled because they somehow exceed the ever mysterious DTU. On my laptop, a 5 year old laptop, the queries take 10ms. So it's is impossible to run on Azure because "reasons" unless I pay a ridiculous amount of money to upgrade the SQL server. Yes, I could fix the query, but why should I be spending time on that? They're part of the admin system and are simple reports.
Another app I worked on we ended up having to pay £1000 a year just so we could have multiple-domains + SSL, when we expecting to pay £80 p/y.
Personally, every time I use cloud servers I regret it. I keep trying or clients really want it, and can understand the lower devops cost and that with bare metal, every 5-10 years I need to migrate the app to get a better server, but I honestly find the cloud servers so completely underpowered for the cost. I don't understand how they've got so popular. Basic devops for most startups is a day or two task once every few years. Write a deploy script, backup script once, and almost forget about it.
(I absolutely love s3 though for backups though)
If you look at Microsoft's strategy with C#/Azure you'll see that every single tutorial uses deploying on Azure. Their instructions for how to deploy to a real server in their tutorial is pretty much "we're not telling you, figure it out yourself, sucker".
Their new business strategy is to get the entire of their userbase paying massively over the odds for hosting small apps.
And, in reality, almost every app by any startup you could go and look at on producthunt (and probably most of ycombinator startups) have such low volumes of usage they could run on a $5 VPS. But I bet all of them are on AWS (there's even a few comments on this thread that basically say "start on AWS, then move").
Everyone is using cloud now, go to any meetup and ask. Or simply look at the sales figures.
The other side of this is that documentation is hard, and Microsoft documentation is frequently lacking or out of date, especially for anything off the beaten path. I use IoT Hub for messaging, and it's documentation is scant, many limitations and failure modes are found by trial and error.
Magically absorb the knowledge in an incantation to the Redmond Gods in the ether?
On reflection my comment about level of skill is unfair, what I should have said is: generally the information is there, but it's not always in the form of follow-able 'How-to' guides, often it's a dry detailed documentation. If you need something other than the standard setup, it is up to you to know what you are looking for and put 2 and 2 together. Of course it is by no means easy.
They do have reasonable guidance on how to deploy ASP.net core on Linux, but it can be lacking for lesser used stuff
I really like that for my side projects/solo hacks I don't have to think about anything other "here is my code that does the thing that I think is cool" and all the deployment/serving/data layer/ml model inference/etc just kind of happens.
For small/very early startups it's also similar. At least in the US, it's not the extra $5k/year you spend on cloud hosting vs doing it yourself that kills you; for many engineers that less than a week of comp.
At the same time, when you are large and spending $100s of k on your hosting then sure, look into alternatives and migrate if needed. This is where "start on AWS, then move" comes from.
I can make a script to do it all for me (and have in the past), but it's a bit of work.
That's really why the title of the article is apt being "the Amazon Premium", and not "the Amazon Rip-off".
Ironically, we were having the discussion here yesterday about a guy with a failed startup saying he'd wasted the opportunity because he used too much new stuff and spent all his time on that instead of iterating the actual product. Several comments focused on it'd just be better to start off with a Rails app, it's quick, it's easy and it's understood.
And really, is lambda appropriate for anything more than a very focused niche app? I mean, try writing all the usual things you need to slot into a SaaS on it, billing, user management, signup, admin reports, admin functionality, emails, multi-tenancy, custom domains, etc. etc. Even a 20 user, internal, enterprise app needs most of that functionality. Put on top of that, you're forced to use a particular, proprietary tech stack and lock yourself into something that might very well die in a couple of years.
Lambdas always free tier is 1 million requests per month and 400Gb/seconds per month.
https://aws.amazon.com/lambda/pricing/
It takes a lot to have any meaningful lambda bill. That in no way is meant to be an insult. If you’re spending even $100/month on lambda, you’re running a successful website.
It's hard enough starting a business without learning a whole new tech stack.
If you know how to write a program and create a function that takes two parameters - a payload and context argument - you know lambda. You can write it in the console if you’re using Python or Node and just run it from there.
Even if you don’t want to learn that, you can host your standard C#/WebAPI, Python/Django/Flask, Node/Express API on lambda just by adding code and changing your endpoint.
Several comments focused on it'd just be better to start off with a Rails app, it's quick, it's easy and it's understood.
There is also code to wrap a Rails app and run it on lambda....
And really, is lambda appropriate for anything more than a very focused niche app? I mean, try writing all the usual things you need to slot into a SaaS on it, billing, user management, signup, admin reports, admin functionality, emails, multi-tenancy, custom domains, etc. etc. Even a 20 user, internal, enterprise app needs most of that functionality
Yes. Especially in today’s world of client side frameworks and microservices, you host your static assets like Javascript, css, and HTML in S3 and call server side APIs hosted on lambda.
Put on top of that, you're forced to use a particular, proprietary tech stack and lock yourself into something that might very well die in a couple of years.
Well, two things. What’s more likely to die in two years / your startup or AWS?
Second, you can host your standard API just by adding four lines of code and you don’t have to make any changes to host it in Docker or on a VM.
There is a way to do this in every language that lambda natively supports. For instance for Node:
https://github.com/awslabs/aws-serverless-express
I have a Node/Express app that gets deployed to both lambda and Fargate (Serverless Docker) when I push it. The only difference is that lambda uses one entry point and Docker uses another.
I’ve done something similar with C#
https://aws.amazon.com/blogs/developer/deploy-an-existing-as...
Where it is deployed to both lambda and a Windows server running IIS.
I can be a lot more productive with all the resources that AWS has to offer when all I have to do is provision resources with a CloudFormation template and instead of doing the grunt work of infrastructure administration I can concentrate on writing software.
1) bare metal is dramatically faster than most cloud instances. Many of us might have collection of old hardware that, by performance, would be equivalent to >$1,000 in monthly cloud fees.
2) If from the start of your career you have only dealt with modern cloud/Azure/AWS, there is a whole body of knowledge you are missing. Acquiring it from scratch is time consuming, and you are never quite sure you are doing the right thing. As a developer, I don't pay the AWS bill, so it would be more rational to spend my time on learning ML or something else that will be reflected in my paycheck.
I am also thinking along these lines but not sure about reasonable paths to try. Care to share some pointers on your setup? Basically looking to serve web pages from a server cluster at home.
Any advice would be greatly appreciated. Can’t handle the monthly payments to gcp only to get a raspberry pi level of compute.
I point my DNS at the VPS, then I use the Zerotier VPN to tunnel traffic to my home server (Zerotier is embarrassingly easy to set up - I struggled for a while with OpenVPN but gave up). I use iptables packet forwarding to route traffic on port 443 or 80 from the VPS over the VPN to my local server, which is running an Nginx instance to serve the traffic.
This works perfectly for me 99% of the time. Main pain points have been the unreliability of hosting a server locally where Internet can die and power drop off, and a small amount of sysadmining on the VPS, which is so tiny that I have to be mindful of disk space (e.g. removing old Linux upgrade images every so often, etc). All told though, it works surprisingly seamlessly, and there's a certain smugness to knowing traffic from my smart TV goes all the way round the world and back through a VPN just to talk to my server sitting one foot below the TV.
Edit: I think I misunderstood, but will leave this up anyway.
I have it easy for external access -> static IP and a Gigabit connection without NAT, so all I have to do is setup ports on my router.
For my services like databases and Redit, I expose them only on Cluster-IP, and them you use kubeDNS and get something like 'redis.default.svc.cluster.local'.
If I need to access them for development purposes, I use kubectl-proxy, but a VPN is also an option.
In the case of GCP, the product is the product rather than the user, so there's a greater expectation that it'll not get shut down or that pricing will change easily.
Further, they're obviously committed to being competitive with AWS which requires that they behave similarly.
Maps is a consumer facing service for which revenue is derived from the data collected and advertising. That business model is nothing like selling commodity compute services to enterprises.
If anything, I think GSuite is a portent of how Google will treat GCP. That is, the set of products has been relatively and consistently stable for quite some time, which has driven fairly decent adoption into the enterprise market.
There've a couple of product shifts, specifically around voice, hangout, and chat, but that seems to settled at this point.
I speculate that the changes that have raised the most ire have been around gmail, which I suspect has a fragmented product management team as it's both a free consumer service getting monetized through ad revenue as well as an enterprise product sold directly to customers.
So selling access to an API that businesses depend on is nothing like selling access to other resources that businesses depend on?
https://gadgets.ndtv.com/apps/features/google-maps-apis-new-...
Prices have gone up as much as 14 times in certain scenarios
Selling access to the Google maps API is wholly superfluous to Google's business model. Certainly, it doesn't clock anywhere near a billion in revenue.
Prices have gone up because Google doesn't have any interest in sustaining the product. The total addressable market is miniscule by comparison to cloud or even enterprise productivity apps.
It doesn’t matter how large the “addressable market” is if Google doesn’t have the will or talent to compete. Social is also a large market, how did that work out for Google?
Isn’t that the entire pitch of every startup? “If we just get 10% of the market, we will be huge”.
And “revenue” is meaningless is GCP profitable? There was a submission on the front page of HN yesterday about Google’s management not being happy about how GCP waS doing and they have three years to turn it around or “lose funding”.
At worst, they'll sell off or divest the business entirely. They'll expose themselves to tremendous liability if they attempt to wind it down like their other properties.
On the other hand, AWS announced something as minor as that they were discontinuing one form of accessing publicly available S3 urls that was deprecated in 2010 for the newer one. After a vocal outcry from the internet about how many websites that it would break, they backtracked:
https://aws.amazon.com/blogs/aws/amazon-s3-path-deprecation-...
On the otherhand, how many Urls were broken when Google discontinued it's link shorterning service?
Google has shown time and time again that it can't be relied upon for any important infrastructure.
Yes, it's true that Google capriciously kills products for various business reasons without any regard for customer sentiment. My counter-point to that is that GCP products exist under different conditions, specifically legal and business realities. They have contractual obligations to corporations with very large legal departments. There is also the business reality that if they're going to compete with AWS and Azure then to be competitive they have to behave in similar ways. If they piss on customer sentiment as they have with their b2c services, they'll fail and I think this is very clear to them.
That's not to say that they aren't already failing. As I mentioned up thread, their support is laughably bad and when pressed about that fact, they don't seem to actually acknowledge how that could be a problem.
Also the GCP panel is truly awful, much much worse than the AWS console.
However, their support is absolute shit and they're absolutely devoid of the customer first mentality that AWS demonstrates.
Doesn't matter what is the product. They're ready to kick GCP to the curb if it doesn't perform up to expectations. I wouldn't host anything important on it.
For some more difficult use cases I have to be pragmatic and decide on the circumstances. E.g. when needing presigned URLs (which is an S3 feature) I will use the native S3 SDK, it's not the cleanest way, but it gets the job done. Only when it starts getting annoying / slowing the development speed will I abstract it away. Security is important and I keep a high standard there, but when it comes to clean abstraction I will occasionally make compromises, knowing that often we will only need one implementation or that feature might be thrown away (I work freelance mostly with startups or SMEs).
If you chose AWS and there's a security incident or hours-long outage, well, some of the best in the industry experienced the same thing, what can you do? Whereas if you chose Linode and they had exactly the same incident justly or otherwise, people might question your choice of a cut price $10/month provider.
And thus is why one small company dumps $1,000 a month into AWS when it could dump about $250 a month into Digital Ocean for comparable results. I know these are small numbers for many people on here, but it is a good illustration.
For what its worth. I was able to justify getting an AWS Certification because of this, which has been surprisingly helpful to have on my resume, even with companies that don't use AWS. It seems to be a fairly respected certification that demonstrates knowledge of cloud computing in general.
Here are my key points:
- What makes aws great is NOT ec2... it's the ALB, route53, ecs/eks/fargate, redshift, rds, lambda, SQS, Kinesis, cloudwatch, cloudfront... ect. The last startup I was at our production MySql got corrupted... glad I paid for RDS and had their 5 minute interval backups to s3 that required 1 click.
- Nearly everyone is on aws, if aws is down the internet is down. The down time from aws is often hand waved away.
- With aws I have access to 3rd party services like snowflake and databricks. Hiring and training talent is more expensive then ease of use services.
- The cost to performance ratio had always been worth it for every startup* I worked at (double given aws gives baiscly a free year when you raise a round of vc funding). Its costly to dedicate staff/time to infrastructure. I had a real time data pipeline up in under 2 hrs using kensis and imply. Just having to set up somthing like kafka alone will take a multiplitude longer. *The exception being the startup that did billions of requests a day... I doubt they regretting paying aws to get to that point after 6ish years.
This is not even close to true. The 3rd answer has some numbers for you: https://www.quora.com/How-essential-is-AWS-to-the-internet
You’ll notice that the most dramatic responses come from other AWS devs like yourself (the first answer in the quora link). This is because as an AWS devotee you end up in an echo chamber.
Note:I take offence to being called an AWS devotee, I have been in this space professionally for going on 13 years with nearly all of it in the startup space. The early years had to rely on collocation. To see startups struggle from things like hardware failure and delaying sales because they need more hardware is something I do not fondly remember.
When an AWS outage stops wire transfers, airline reservations, robot surgeons, etc, then it really will be “everyone”. Until then, try to give yourself some perspective so you can recognize when a product is mature enough that it’s time to start moving away from AWS.
> I have been in this space professionally for going on 13 years with nearly all of it in the startup space
This is why the siren call of instant infrastructure is so alluring to you. While your depth of knowledge for startup infra requirements is there, it does not transfer to large enterprises/campuses/etc where demand is very predictable and involving another company (Amazon) in your operations is nothing more than a liability.
Before you bemoan on-prem competing with Amazon’s world-class engineering org, consider that their priorities are spread across thousands of products all interacting with millions of customers. An outage that could destroy your business means nothing to them other than some reduced KPIs that month. While an on-prem solution might be worse in throughput, global latency, etc, the fate is in control of the org that can make sacrifices Amazon can’t (e.g. planned nightly outages).
Every large company has dozens of vendors that they “involve their operations”.
My whole original post was from the startup point of view and I made that quite clear. I am more then happy to admit the enterprise space (from an infrastructure POV) is not my expertise. Your taking my points out of context. Even in my own example I added an astrisk of a startup who started moved to hybrid on-prem after six years.
I would finger in the wind guess that a majority of AWS customers are just renting servers and storage and not even scratching the surface of the usefulness of the platform. Just my guess.
My employer is okay with paying an extra $10k/mo for stability and predictability.
The money we save by not having someone babysitting infrastructure and the speed we can move at is well worth it. One client contract basically pays our entire infrastructure bill and then some and we have 30 clients. If we had to hire one Devops person it would be about the same as our yearly bill if not slightly more.
What is the AWS value add as Kubernetes operators become mature? They own datacenter space and have contracts for power and internet.
> As kubernetes operators become mature
This implies (and I agree) that they’re not mature yet.
Aside from that, there is still more to maintain on kubernetes than on AWS. Those pods don’t patch themselves...
I want serverless options, I want message queues that scale out of the box, I want stuff that lets me try different k8s configurations.
And I haven't done any research so I guess it's unfair for me to speculate, but will the small guys be guaranteed to be around in 5-10 years? I'm sure Azure, AWS and GCP aren't going anywhere any time soon.
So the comparison means nothing to me. Getting more hosting is way easier than getting new programmers. I'm going the lowest maintenance route I can, provided the costs are somewhat reasonable. I'm willing to pay a premium because stability and easy-to-use features is what I care about.
I retired this year, last job was engineering manager at Capital One (managed deep learning team, I had little to do with infrastructure). At large scale, AWS is a good choice because of the capable security roles that they support. Not a perfect system, but when a large corporation wants to go all in on cloud deployment, AWS is a reasonable choice.
Personally, I really appreciate getting a free GCP micro instance that usually hosts two semi permanent web demos. Before I bought a good at-home GPU system, GCP was a good option for spinning up instances for machine learning runs, but Azure and AWS is also good for this.
If I were trying to spin up a startup business, I probably would use DO or OVH with a hot smaller backup always running that I could switch DNS settings for rollover - but not nearly as robust as multiple availability zones with one of the expensive cloud providers.
The price one pays for it is vendor lock in. I wrote many mini-non-mission-critical apps to run on AWS, but I would think twice about putting my main business app in AWS without (costly)backup.
I imagine that for startups it might make sense to create their initial product on AWS and when the product takes off spend some of first revenue making it cloud agnostic.
The benefit of AWS is that a startup can implement a proof of concept quickly without having to worry about managing their own elastic search for example, and once it proves viable effort can be added to escape vendor-lock-in.
Even if you are just running a bunch of EC2 instances the pain of transitioning your workload and data usually isn’t worth it.
I'll give two examples.
Netflix focused on productivity. They even popularized the phrase "undifferentiated heavy lifting". They were able to build a metric system, in less than a year, that supported full OLAP query with practically arbitrary number of dimensions. The system ingested > 20 billion data points per minute, ran on more than a thousand machines, and did not set quota to any team or service. The entire system was built and operated by merely three engineers. This was simply not possible without AWS. Similarly, Netflix's data pipeline, Elasticsearch cluster, and Druid clusters were developed and operated by two engineers. They were oncall 24x7, yet they rarely got waken up in the middle of a night. You think this was possible if Netflix tried to build its own infrastructure?
The counter example is Uber. Uber was ambitious and wanted to build everything. The results? More than 200 alerts got fired within 2 hours -- the poor oncall engineer couldn't do anything but to keep ack'ing the alerts. Wanted to use Cassandra? 10-page forms that were more tedious than applying for the Ivy schools, weeks of waits, lots of angry emails, countless meetings, and still no Cassandra instances. Wanted to add 50 machines to your ES cluster? PPTs, meetings, escalation all the way to CTO, and weeks of planning. Want to try out Apache Kudu? No way, because our container-based EC2-like system did not support persistent volume, let alone something similar to EBS or EFS. Wanted to use container for your ES cluster? Same answer. Wanted to create your bespoke cluster topology? Same answer because apparently custom network configuration was not supported. After waiting for more than three years? Same answer. If this was not expensive, I don't know what was.
So, you asked if you should save a few thousand bucks a month for your fast-growing company?
Everyone going to AWS is going there for an AWS-like experience. As someone who runs pretty big workloads on AWS, you still very much need the help when you get to a certain scale, and there is a ton of value in just buying a support contract from Elastic or Redislabs, even when using their managed services or running it on an ec2.
[0] https://ir.aboutamazon.com/news-releases/news-release-detail...
Your setup premise is too constrained, you only provide two possible answers. One, they reinvest a lot; two, they're much less efficient than someone (who?) expects.
The third one is that you're wrong about how much margin is in the business to begin with. The smaller operators are barely surviving at break-even or worse. Companies like Linode and DigitalOcean are not printing large profit margins. DigitalOcean has been a money losing operation (growing via hundreds of millions of dollars in venture capital and debt, plausibly self-sustaining some day when they decide to pull back on spending expansion vs growth... maybe). So the premium that Amazon is charging is precisely what is responsible for them comparatively printing money with a ~25% operating margin. It's not the other way around, such that their margin should be up at 50% if they were run properly as a business. It's something close to remarkable that they have a 25% operating profit margin (and are consistently so profitable), it's the envy of the entire cloud industry.
See the chart at https://ibb.co/M7nnMvL for some different scenarios.
Indeed, I don't need global-wide services though. But it's more than enough for my localized SAAS.
I'll probably add some PI4's in a cluster and experiment with that ( eg. Hosting 2 message brokers instead of one) or the elastic search that requires 1,5 GB RAM ( I'm not sure yet), since I don't want that in the same server.
You are using commercial-grade hardware, with no ECC RAM and other server-grade features.
You are also missing RAID, the UPS power supply and generator backup, as well as redundant Internet connections to different Tier-1 providers.
Server-grade ECC memory is slower and more expensive than what people typically put in their desktop machines.
I had hardware raid 5 before and it failed, because I used similar hard drives ( 3 drives failed within a month, wasn't expecting that).
Working on redundant deployment though ;)
-- My quote still stands as I said it
And that's fine. Though as a counterpoint:
https://louwrentius.com/please-use-zfs-with-ecc-memory.html
> I had hardware raid 5 before and it failed, because I used similar hard drives ( 3 drives failed within a month, wasn't expecting that).
Which goes back to my point. You're comparing your home system, with something like one-9's uptime (90% availability over an entire year) with a cloud provider that is going to give you five-9's or better.
These are not the same things. And you are going to pay more for each additional 9 of uptime.
For your own stuff, yes, of course it can make perfect sense to host it yourself. I've got a personal server running on positively ancient hardware that still manages two-9's availability, and that's fine for my use case. But I wouldn't directly compare that to a cloud provider either.
As a solo SAAS founder, I use AWS because of all the other services that surround those offerings (Cognito for user management, DynamoDB for database, Serverless stack for API, SES, SQS, Route53, ECS, I could go on for a while) provide a huge amount of value for me in terms of not having to fully set up and maintain that functionality myself. I pay next to nothing for these services and the developer and devops hours saved is worth many thousands of $ to me. However, because of this reliance, I then end up knowingly overpaying for storage, computation, and bandwidth (the latter is by far the biggest concern, the former 2 are fairly minor, so I'm looking at alternative CDN providers). However, other than that, even though my AWS bill is the biggest my SAAS has, I happily pay it. There would be almost no way for me to run this thing solo without it (I'm not saying someone else couldn't, just for me).
But yes OVH has a lot to offer and got my preference too. But I am French and it is a French success!
BMWs also cost more then Fiat’s
Also, AWS has become the new IBM and as they used to say “nobody gets fired for choosing IBM.” In the current market if you choose something other than AWS people will question your decision if something goes wrong.
> "Smaller providers cannot operate at my yottabyte scale"
I used to work at a company, now closed, that at one point was the #2 or #3 user of S3 in the world. We were not a big company and the fact that we were inexorably bound to Amazon was a harbinger of our doom. That we were too large for most solutions and that we had become trapped on one provider was a sign of our poor decisions and our inability to think laterally and, effectively, do anything other than digging straight down.
I raise this because I think that, if you ever find yourself thinking you're too big for a small provider, I think you should treat that fact as an existential threat to your company. Either you build your own hardware setup or you break up how you do things so you can use smaller companies (even if you chose not to). All the tooling and learning you do to fragment, migrate and validate your data will be invaluable.
> All the tooling and learning you do to fragment, migrate and validate your data will be invaluable.
Too bad this learning has absolutely nothing to do with 99% of any business out there. It adds zero value to the company. In fact, it is a net negative because the company could be doing anything but learning something like that.
Opportunity cost is a real cost.
To be fair, other providers also don't really offer an SLA on their durability.
We have a job that automatically updates an AWS WAF IP blacklist with their ASN ranges from BGP. We don't want their business or their customers business.
A full 1Gbps up/down cost about $200/mo, plus ~$150/mo for the managed fiber run. A full locked rack is around 800-1,200$/month. You can load up 40U worth of Dell R730xd, or R740xd (dell outlet). Throw in a few enterprise HP 10g fiber switches (refurbished).
You will quickly start to crush any cloud pricing. But you need IT/VMWare experience.
Keep in mind that a cpu/core on AWS or GCP is a fraction of an actual cpu/core. It’s a spot representation of an x cpu from some arbitrary time way back when. Even if their specs say differently, try running a job on a 2x cpu machine vs 2x cpu on dedicated hardware.
Also, purchasing Dell R7xx hardware, from our experience, has almost 100% uptime at scale, over the past 10+ years, confidently running a 3yr machine 5-7 yrs easily.
Consider the costs of a rack of Supermicro thumpers (90 bays https://www.supermicro.com/en/products/chassis/4U/946/SC946E...) for long term large online storage vs AWS. Even using Glacier (which is cached tape) is expensive in comparison, especially when read/egress costs are included. Even if you use more enterprisey gear from Dell it is MUCH cheaper to DIY or pay an independent integrator than to use AWS.
AWS itself it doing this for even cheaper than what white box gear sells to retail, because of their huge scale and integration efficiencies. There is a reason AWS makes so much money.
One advantage of AWS is that there seems to often be free AWS credits thrown around. It's hard to compare and quantify that, but something I'm aware of.
We also tried Heztner, Linode and others. They were all bad in their own unique ways.
With AWS, and GCP, yes it is more expensive and also have their own set of problems but nowhere near the same scale as these other providers.
Yes if you are running a 1-2 machine setup, who cares. If you are running a professional organisation where you cannot reasonably have downtime without customers screaming, don't go for the cheap stuff.
Seriously - root access on the control plane - that was then covered up. You really are going to build your business there?
There is a reason AWS can charge the premium.
I quickly learned my lession in linode at least!
-DHH
https://m.signalvnoise.com/only-15-of-the-basecamp-operation...
Imagine if Netflix or Twitch were founded today - two businesses with demanding media-hosting needs. Would they be better if they used Amazon infra or built out their own data centers and CDNs?
I'm really curious about this because I'd like to get into the space and I'm mulling over bare metal as a competitive advantage vs a barrier to scaling. I've seen how difficult it is to provision and upgrade machines. At the same time, if you were to make it to scale, it seems like having the bare metal and the talent to manage it puts the ball back in your court. Am I wrong?
On AWS if I want to run a model that requires a lot of RAM (or compute, or whatever) I can have it up and running in minutes without thinking too much about it.
Yes, I pay a premium, but the experience is just superior to anything the value hosting services provide. I find the same to be true for the most part in Azure as well.
I'm happy seeing this comparison, however. It gives me a good sense of just how much of a premium I'm paying. Thanks for doing this.
Whenever I or one of our devs has a problem with AWS or configuration, there's a 99% probability that anyone had this problem before and I find high quality google search results. That's not the case for OVH, Digital Ocean, ...
With developer salaries at 350'000 USD/year, you can now calculate the massive amount of savings.
Also, why don't you compare Digital Ocean to Amazon Lightsail? Or spot instances? You can often get those for 1/10 of on-demand price.
Both Amazon and Digital Ocean do have dedicated CPU instance types. The prices will make your eyes water. (I have not used the other cloud providers, so I don't know what they're up to.)
Obviously selling CPU on a time-sharing basis is a good idea; most customers aren't maxing out their CPU 24/7, and this lets them pack more customers into fewer machines. (RAM is the killer, though, and you'll see that at every cloud provider, RAM is really what you pay for.) But when you compare these prices to what a CPU costs... it starts to make you think.
My last job really warmed me up to the idea of just running my own servers. All our workloads were containers running in Kubernetes. With Kubernetes, I don't care about individual computers anymore. If one malfunctions, workloads can be easily moved to another computer. All the machine setup work is made machine readable by building containers and authoring Deployment objects, so there is no mental investment in a particular computer or disk image that you get from logging in, installing Debian, screwing around with files in /etc for an hour, etc. Basically, any sort of maintenance involved with physical computers no longer concerned me; repairing a hardware failure basically meant just repairing that hardware failure at my leisure and then moving on.
Combined with this was the fact that we were an ISP, so we had a datacenter, power, networking, and all that the floor below our office. I eventually convinced myself that for a month worth of AWS fees, we could have 10x the computing resources and 10x the bandwidth for a one-time cost. Nobody was motivated to hand over the credit card and let me build the cluster... but for me, running dedicated servers went from "thing that only Google does" to "why isn't everyone doing this!?" It's just not that expensive. And, consumer-grade hardware is really good these days. I drooled over the fast builds we got from a c5.4xlarge AWS instance. A consumer Threadripper build would blow that out of the water for about the cost of 6 months of AWS. (Amazon pays the Intel tax. You don't have to, though.)
It’d probably be much easier to run the kubernetes cluster within some virtualization/container setup.
After the initial work to get everything set up it’s been working absolutely trouble free.
Source: Amazon store ;)
The HDD that you buy is not redundant, don't provide more than a very limited throughput, is not distributed across multiple geographic areas, is not connected to the internet, comes without any of the hardware to make it spin and is not benefiting from s3 APIs as far as I know.
You are comparing the costs of buying gas vs the costs actually associated with driving.
Probably? Back button where art thou.
If you've never done Datacenter operations, then you're missing a giant point that eliminating an entire department of expensive technical people is a huge gain long term.
He is talking about virtual machines.
I suspect this algorithm needs tweaking, then :)
It has nothing to do with on-prem.