Hacker News new | ask | show | jobs
by zer00eyz 813 days ago
There is a corollary to this: Do you really need cloud infrastructure?

Cattle not pets right?

Well, no. Have you seen amazons AWS margins? Its 30%.

After amazon buys hardware, pays people to run it, it still makes 30%. Not having hardware is someone else's profit.

That isnt cattle, its contract poultry farming.

Learn capacity planing. Learn to write cachable, scalable apps. Track your hardware spend per customer. Learn about assets vs liablity (hang out with the accountants, they are nerds too). Do some engineering dont just be a feature factory. And if you are going to build features, make fuckin sure that you build tracking into them and hold the product teams feet to the fire when the numbers dont add up (see: friends with accountants, and tracking money).

9 comments

> Not having hardware is someone else's profit.

But it's also someone else's economies of scale. The chances of me getting datacenter space, hardware, bandwidth, and expert 24/7 staffing at the same volume discounts they do is... slim. Particularly for the small amounts I'd need.

>> Particularly for the small amounts I'd need.

How small... ovh, hetzener are both a thing and cheap as chips if your VPS sized. You just have to plan ahead for what you're doing and how you want to scale it. It requires a bit more upfront thought... but if your on a budget (personal project scale) knowing that you have a FIXED COST is pretty good for sleeping easy at night.

There's a middle ground - there are plenty of providers that will give you a turn key "insert credit card here, get root SSH access" experience similar to AWS EC2 but on physical hardware and at much smaller margins. See OVH, Equinix Metal, Hetzner, Packet, etc.
In most cases where your total needs are less than a dedicated server, you're probably correct. Once you hit that level, issues like network traffic, EBS volumes, etc, really start to creep that cloud bill up fast.
They may be enjoying economy of scale, but they aren't passing that along as savings to their customers. Why would you when people seem happy to pay high prices?
There is more to this: who is you?

If you are the owner who foots the bill and has the capability to run your own infra then nothing beats it. If you don't have the capability then cloud throws you the lifeline at a price of course. Pay for it and be happy.

If you are the guy who runs/manages the infra for someone: then there is no point in saving dollars. You peddle Kubernetes and go to the kubecon and post all about it on linkedin and establish yourself as a kubernetes expert. When the owner of current gig goes under, you will have a bunch of job offers to pick from.

Besides, kubernetes solves a problem very elegantly that most companies do not have. Not everyone is google and running apps on web scale with an expectation of 99.99% uptime...

Cloud is an abstraction over hardware. lLike any good abstraction, it makes certain tradeoffs.

Sometimes it makes sense to move to a lower level of abstraction, for performance, cost, or compatibility reasons. In this case, diving under the cloud and running your own servers could save 30% of your server costs.

Cloud adoption has shown that many (most?) companies prefer the convenience over cost savings. Maybe optimizing hardware spend is not the best way to optimize a business.

AWS spends tons of engineering time on features you don't need. There is a lot more than 30% on the table.
I fully agree with your last paragraph, but not sure what it has to do with cloud infrastructure specifically. AWS also leverages huge economies of scale into profit, it's not like you're going to realize equivalent margins by running your own little server in a colo somewhere. You certainly won't realize equivalent availability, scalability, security, support ecosystem, etc with it either. Cloud infra can make a lot of sense even with "pets" - you just gotta make sure to understand requirements, limitations, and use the right tools for the problem. For me personally, I'll reach for cloud infra these days as a reasonable default (similar to reaching for Postgres as a reasonable database default), especially if it's managed and affordable.
> it's not like you're going to realize equivalent margins by running your own little server in a colo somewhere

There are a lot of projects where the bandwidth charges alone would make self-managed on-prem come out ahead, and I'm not even talking the instant 2-3x performance boost you get by moving to real hardware instead of overprovisioned cloud VM hosts.

>> it's not like you're going to realize equivalent margins by running your own little server in a colo somewhere

At this scale ovh, hetzner are the solutions. If your that small fixed fee pricing is a HUGE win.

> it's not like you're going to realize equivalent margins by running your own little server

I get even better than their margins. In the neighborhood of 100x cheaper. It's not rocket science.

> equivalent availability

AWS availability isn't all that super great. Most of their services are rated for only 99.95 before they offer pittance credits. That's not difficult to meet with a single computer...

> scalability

A service only needs good enough scalability. Auto scaling is also a bug, not just a feature. Remember that it is also tied to auto billing. I can't afford to have my wallet DDOSed.

> security

Security is always a problem that needs to be solved. You don't get an auto pass on security needs because you signed up for AWS.

> support

You have to pay for that.... You can get it from other vendors too if you have budget for it.

> ecosystem

This is flat out wrong. Compare AWS offerings to the breadth and depth of open source offerings and the latter comes out far ahead.

Learn to write cachable, scalable apps.

I'm expected to write a service like s3?

That's not what they meant. And, S3-compatible object stores already exist. Ceph, for one.

Cachable, scalable apps that you write as part of a web-centric business are ones that use in-application level knowledge to coordinate with the web framework to use caching services at each level of depth of the stack, be it 3rd-party Cloudflare or DIY CDNs (varnish/squid), memcache/NoSQL/database-level.

Depends on S3's role in your application. If you actually need unlimited, worldwide-replicated object storage with nearly limitless bandwidth, sure, use S3 and pay for it.

Do you just need a place to stash files so your multiple application servers can read them? An NFS export over a private network can very well be all you need, and you can have that file server back itself up to S3/etc at regular intervals.

Well, you could deploy Minio.

I see Kubernetes as an enabler. Grab some commodity hardware - your own or Linode - and have a cloud experience using open-source components.

I just wish Kubernetes wasn’t so darn complicated.

Or use GKE/AKS/EKS and save on the salaries needed to operate clusters and hardware
The biggest thing “the cloud” had gotten me is that I no longer have to call a sales rep and wait a week if I need a server. Yes this is a process problem, but for whatever reason it seems to stop being a problem (as much) with companies moving to the cloud. I have seen this 3+ times now. As an engineer, I’d much rather move off prem than fix bad management.
If you mean buying an actual server I order on menu regularly. If you mean a dedicated server in a DC then there are plenty of providers who can auto provision a bare metal instance for you. That was possible before AWS even opened up to public sales.
You’re not wrong, but generally the political friction of deploying a new service to k8s is lower than what you propose as well.
Well yes, but I run container orchestration on owned servers (Swarm, not Kubernetes) so it's really easy to add a new service at a whim and only quite rarely do we need to add capacity, to which we can also add in a cloud provider. But I'm using off-lease servers which are sort of bonkers as to how much capacity you get for the price. I think they cost less than a months spend on an equivalent cloud instance.
That’s a good point. Preemptable instance can be insanely cheap. I would guess it’s more efficient for the data center overall to shuttle services around to different nodes as needed.
Fully agree. Cloud can be an easy way to get started since you don't have to pay as much up front, and even you need extremely elastic scaling you'll save a fortune in the long term by investing in at least some on-prem hardware to handle the off-peak workloads. If you have predictable stable loading, you can save even more!
If you need servers for the majority of your application, don't use AWS or any other mahor cloud provider. Their benefits come from economy of scale, so if you cannot be part of that economy, do something else.

And you can be part of it really only by doing cloud native stuff like Lambda, DynamoDB et al.

That's like recommending people to buy a trailer to haul their groceries because transportation companies make a profit on hauling cargo.

Maybe some people do need a trailer, maybe some do not. As long as you don't blindly follow the cloud you can also profit from them.