Hiring your own security guard is cheaper than paying an outsourcing firm.
Hiring your own janitor is cheaper than paying an outsourcing firm.
Building your own office is cheaper than renting one.
Doing your taxes with pen and paper is cheaper than paying turbo tax.
Making your own food is cheaper than eating out. Hiring a cook directly is cheaper than hiring sudexo.
I could keep going. But sometimes it’s not just cost. The biggest two values you get with AWS is 1) reducing time spent outside your business’s core competencies and 2) a vast ecosystem - 3rd party offerings, readily available devs, consulting services, and compliance services.
I’d add that for those having compliance needs. It’s not always as simple as rack and stacking infra. You have to use services that meet the compliance auditors needs.
When people talk about the cost of cloud, there’s some assumptions we need to state:
A. Does your workload fully utilize 100% of the capacity of the resource? If not, then cloud would be cheaper. Just like if you only need office space for a few people, it’s not cost effective to buy an entire office building. If you only need server with a few gigs of RAM, it’s not cost effective to buy (own) an entire physical server.
B. If you are going to fully utilize a resource and don’t want to purchase/own it - then a service provider needs to provide that asset to you around cost and make margin from the efficiency from scale they have. Example, it’s actually more expensive for me to buy all of the ingredients to make a hamburger than to simply buy a fully prepared hamburger for McDonalds. McDonald’s is able to provide this due to their scale.
What I’ve seen is that when you’re in Group B, many people are finding that AWS/etc is way more expensive. Essentially, their scale in efficiency is not being passed down to the customer in cost savings. And the sizable cost premium is not worth the value received in return.
I’ll give a good example of where this does make sense, and that’s Hetzner or OVH. Their scale allows them to procure & host dedicated servers at a price I’d be difficult to match doing it myself. Or even if I could beat their price, it would be minimally. But folks are finding that with AWS/etc, that premium is extreme and that’s where the equation is unbalanced for folks.
McDonald's is a pretty good example. For one, cheap burger they can provide it to you for cheaper. As soon as you start asking for quantity or quality though, you quickly realize you can make it yourself for cheaper, not counting your time.
At that point, the question becomes how much is your time worth, or in this analogy, are you ready to hire a professional chef to get better quality food?
I choose to host on Vercel because I can spin up a production-ready, globally distributed web app in about 5 minutes with marginal, predictable costs without hiring a single other person, procuring any hardware nor learning anything beyond what’s necessary for coding my application. Pair it with analogous services like Upstash and Fly.io for persistence, and you can achieve incredible scale with minimal operational burden. Obviously this depends on your workload - for mine I can imagine this would cover the majority of use cases for the lifetime of my company. And there are many companies like mine.
At a glance, Vercel's pricing looks unbelievably expensive. $550/TB traffic, and $60k/yr for a 128MB function running at 100% utilization. What's the point of scalability, if you can't afford it to scale above the size of a small vserver? I'd have nightmares about a small DDoS attack costing me millions running on infrastructure like that.
What does it offer compared to other serverless offerings (aws lambda, google cloud run) to justify this cost?
You host static, or slightly dynamic (calling APIs from the front-end) websites. Serverless functions are a bonus to use occasionally. If you're using a serverless function at 100%, you're doing something terribly wrong.
As for DDoSes, such providers are genuinely okay with waiving bills from serious mistakes or DDoSes (besides also having anti-DDoS services for "free" and transparently, so must DDoSes won't even show up on your bill).
Exactly, you’re incentivized to make your website as static as possible, and I attach standard http cache headers to most of the server rendered stuff so that their responses get cached in Vercel’s CDN, and once again not invoked super often.
1. My workload is an early stage enterprise SaaS where traffic is not the limiting factor for our growth. If you’re planning to push a lot of bandwidth you probably want to use something else.
2. Like I said, it’s that I don’t have to spend even a minute thinking about how I’m going to deploy my app. It just listens on our git repo and runs the NPM standard build and start commands to run the app, so I don’t need to do any vendor specific configuration. We use NextJS as our web framework, so we just write pure web frontend/backend code and automatically everything’s hooked up so that it’s served with serverless infra (so I don’t have to care about scaling or machine resources ever), with a global CDN that caches the API responses we return by just attaching a Cache-Control header, which is very transparent. On top of that Vercel instruments deploys for all of our git branches so that I can see what my teammates do directly in their PRs, once again with no configuration. And if the pricing becomes an issue, all our code is just following web standards and next to no vendor-specific code exists in the app, so I can move off it any time, but really I don’t see that happening even if our SaaS 100x’d in size (which is the aim).
I really have trouble seeing how we can do less work on nor get less locked into a specific infra this way. I’m sure for resource intensive workloads it’s not ideal, but for ours, optimizing for resource efficiency by running our own stack of servers is a case of YAGNI; the simplicity of the DX is totally in our team’s favor.
Not really sure why this argument wouldn’t make sense by now, Heroku has always been expensive and yet it always has been popular since it’s so much simpler than dealing with the choice paralysis and complexity of either using the full AWS system and of running your own servers.
Rent colo space, rent transit, rent equipment (which you should absolutely do below gigantic footprint). Boom - your physical dc is now an opex. Still cheaper than public cloud by an order of magnitude on certain workloads (egress heavy, gpus, etc)
OPEX in the US is tax deductible for the current financial year; a lot easier to calculate and maintain. It’s basically the cost to run the company, taking away from revenue.
CAPEX items are amortized over multiple fiscal cycles; it’ll count and can helps raise the value(valuation) of your company, but tricker to calculate.
So depending what financial number goals your company has, the accounting of items can go one way or the other.
If your dev work brought permanent value to the company, then it can be capex. If you were a contractor instead, it could be either cap or opex. AWS services are basically rented and not permanent value to the company, ie, if you sold everything the company owned for cash, you couldn’t sell the AWS part, just the terraform scripts.
For business perspective, it's large irreversible upfront investment on capex vs ongoing opex. Sizing and building a data center is risky, execs not wanting to attach their names to $xxM data center project.
Cost wise Capex are depreciated, this gives less visibility on month on month costs compared with opex which goes onto income statement.
Developer work as capex is intangible asset, which has a bit more 'flexibility' depending on what management wants. It can operate on the same idea, developer wages for 1 year spread over several years via amortization of intangible asset.
Depreciation of assets also goes on P&L so no difference on periodic visibility. Also, while not capex, prepayments/reservations for cloud services are in fact assets/liabilities so yes opex vs capex is a good high level distinction but not 100% the essence.
The capex vs opex argument in cloud is more about having better transparency on your infra costs on a monthly/quarterly/yearly basis. With DCs you need to make large upfront purchases for todays and the next 3 years needs. If you under estimate you’ll be unable to grow further. If you over estimate you’ll be stuck with a bunch of unused infra.
Now say you want to spin up a new feature/product. Can you accurately forecast the compute needs? How difficult would it be to get a large capex PO out through your internal orgs on the unreleased non-revenue functionality.
Compare that to cloud where you pay for what you need. Calculating marginal cost is much easier, and securing budget on an ongoing basis to pay for clouds opex is also much easier, as you can easily show to finance the profit margins.
As the other commentor has mentioned, much easier for management to manage costs and assign to cost centers or buckets. It's a big difference to track consumption monthly based on actual instead of straight line depre, eg. depreciation hits even if everything turned off
(1) opportunity cost: doing your own systems administration instead of growing your business (features, marketing, etc).
(2) switching cost: once you have a working system that outgrows the free / cheap AWS tiers, and might be cheaper to run outside cloud, switching away from the cloud becomes expensive, and does not look like a good investment to many, see (1).
Opportunity cost is everything. Staffing for a small startup, after funding, is a huge bottleneck. Every second you spend managing an install of Rabbitmq, be it on a VM or on-prem, is time spent not working on the app, or anything else that's drastically more important.
And every dollar you bleed on expensive AWS (and expensive devops engineers to wrangle it), is a dollar less you can pay for a new employee to deliver value quickly and get you profitable (or aquired).
Startups spend way more on staffing than cloud. generally the cloud Premium is less than the cost of a single employee for an early stage startup.
As the startup scales it’s about velocity of product. Spending 10% your time to save 20% on cost is a bad strategy. Instead startups should take that 10% time and invest it into their core product. This would lead to an accelerated timeframe for raising their next funding, which will be much larger than any cost savings. Eventually in the future once growth slows down you can focus on costs to improve profit.
*you still want to ensure your costs grow slower than top line rev.
Personally I think run on-prem till you outgrow a server in the office closet, Digital Ocean/Linode till you run out of features, then AWS/GCP when you start needing to scale to handle hockey-stick user growth. Then again, you'll need an expensive devops engineer to manage those redeployments seamlessly, so have you really gained anything there?
How much funding do you have? A couple hundred thousand is different from a couple million.
I'm not even sure it's cheaper. At a previous employer we had approximately 150k of cloud expenses per annum. Bringing that in house would have eclipsed the cloud expenses on additional staffing costs alone.
How much is small? In terms of cpu cores and memmory
Cost in cloud is all about capacity and each cloud has very good tools to see where the money is going. It sounds like either what you consider small is not that or money is being wasted somewhere on things you are not aware of
Let’s say 720vCPU for the cluster and about 2.3TiB of memory.
These would be quite small nodes if you bought them as machines in a datacenter. Most modern machines have 40+vCPU and 128G+ RAM each.
I have 36machines in my GKE nodepool with 20vCPU and 64G of ram. So the aggregate totals sound high but it’s not many. In terms of real machines I could have fewer, like 18 or so.
that compute is much larger then startups i worked for that make millions of dollars/50+ M unique users per month. so obviously not "corporate" sized but definitely not small
Looking at the GKE price calc - N2 machines (which i have no idea if they are cheapest per vcpu/mem) * 7 will give you 896 vcpu and 3584 GB ram. that will cost you 21K per month for a zonal cluster
we can do napkin calculations but that won't help you. if you want to get your bill down you just need to open the billing reports and start slicing data by usage
Edit - i really hope i am not coming off as condescending or anything. I used to work in a startup related to cloud cost optimization and currently as a devops in a cloud env so i know how these costs can get out of hand.
I have definitely looked into getting the costs down, we’re not doing anything truly special.
Making use of best practice costs a lot more than most people expect, interzonal networking is charged, for example; a lot of people also assume that redundancies are built in to things like RDS or CloudSQL, but they’re not, and you should be having replicas.
And of course traffic to databases is interzonal networking.
* understanding what you're actually doing is better than outsourcing your knowledge.
Most of the issues I see from either on-premises or cloud generally come from not actually understanding the business/use cases/environment. Cloud becomes the 'solution' to a problem of people and process, rather than a value proposition that augments existing reality. You can't make good decisions (e.g. Should I outsource my taxes) if you don't understand what doing those thiggs acrually involves (which most people don't bother to even try).
And usually worked into this is a lot of outsourcing of expertise to the point the business relies on third parties to tell them what to do, which is never a cheaper outcome.
What you call "sometimes it's not just cost", actually are costs. Only it's indirect costs that are hard to measure, but these costs definitely exist and definitely have to be taken into account somehow. A large part of hidden costs in corporates is the things you are not doing to save costs because the infrastructure is not flexible enough. I think everyone will recognize this, but it's really hard to put a number on it though.
Not to be dishonest towards the argument that you're making, but most of the examples that you give actually seem fairly straightforward.
I do my own taxes, but maybe that's just easier in Europe and is definitely easier for individuals. That said, there's no reason why a LibreOffice spreadsheet would be an insufficient solution for handling taxes and other things like that.
I also haven't eaten out in years, the closest to that was ordering some Wolt when hanging out with my friends pre-COVID, because they wanted to try some. Apart from that, it's all just home cooked meals for me and that's pretty great. It also seems to be working out great for the folks over at https://www.reddit.com/r/mealprep/top/?t=month
At work, the company that i work for have their own building and have their own support staff as well, which seems to be working out great for them.
Furthermore, there are plenty of on prem resources that are used and despite the disadvantage of lacking self-service in many cases, there's very little difference in configuring and running software for deployments, with something like Ansible and containers. Even moreso when you have to support clients that have their own particular data centers and on prem deployments, which might differ noticeably from public cloud offerings. That's even not thinking about things like compliance in regards to what data can be stored where.
Personally, i also have a homelab with some repurposed old computers with 200 GEs and value RAM, a few HDDs and WireGuard for working around NAT and exposing my sites to the world through a pretty cheap cloud VPS or two from https://www.time4vps.com/?affid=5294 (affiliate link, to make hosting cheaper if anyone else uses them). Of course, when i need 24/7 uptime, i do use their VPSes in a hybrid cloud setup, especially since my blog getting 30k views could be a bit taxing on a residental 4G LTE modem connection.
The argument about competencies, ecosystems, 3rd party offerings, outsourcing and so on is probably a valid for some, but not for me and not for many companies out there - too often you end up depending on SaaS solutions which vendor lock you and might cause you to spend unreasonable amounts of money, or will let you remain ignorant about how to actually manage the software that you're using, i think SaaSS (Service as a Software Substitute) is a relevant term here: https://www.gnu.org/philosophy/who-does-that-server-really-s...
That said, what works for me and even the company that employs me, won't work for others. And what works for others, won't work for me. This is all because of how different the circumstances of various people out there are: i cannot afford AWS, i cannot afford Azure, GCP and managed services for my own needs.
I currently pay 320 EUR for 6 cloud VPSes per year (and additional amounts for the occasional replacement HDD for my homelab), whereas others pay similar amounts for their cloud platforms of choice per month. For them, depending on their circumstances, it might be more cost effective to spend their time working and throw money at problems, whereas for me it's almost always more cost effective to learn the tech myself.
Similarly to how in Latvia you could hire a team of developers for what one developer would cost in the US. Companies have other factors to consider, of course, but this is just one example - the alternative (opportunity) costs of individuals.
Edit: Of course, some in the comments are talking about hundreds of VPSes/VMs/nodes and in my eyes, that's just an order of magnitude or two higher than what i'm talking about. I've seen plenty of companies in my country running their own data centers and there have been relatively few issues with those that i'm aware of. Something like Ansible and container clusters can scale pretty far!
The problems were more often caused by either mismanaged environments/deployments by developers/agencies who just didn't care about shipping sustainable software but cared more about getting paid and making their software someone else's problem, or making mistakes early in the development and not considering load testing and scalability of the systems as priorities. I'd argue that you can do bad engineering anywhere, though, be it on prem or in the cloud.
Hiring your own janitor is cheaper than paying an outsourcing firm.
Building your own office is cheaper than renting one.
Doing your taxes with pen and paper is cheaper than paying turbo tax.
Making your own food is cheaper than eating out. Hiring a cook directly is cheaper than hiring sudexo.
I could keep going. But sometimes it’s not just cost. The biggest two values you get with AWS is 1) reducing time spent outside your business’s core competencies and 2) a vast ecosystem - 3rd party offerings, readily available devs, consulting services, and compliance services.
I’d add that for those having compliance needs. It’s not always as simple as rack and stacking infra. You have to use services that meet the compliance auditors needs.