A few years ago, I was the VPoE for a small-ish startup in Denmark. I was the only ops person, and I was able to provide 100% uptime for a year, including a migration from k8s clusters, AWS AZ outages and whatnot. During that time, I also reduced our monthly spend from $15k to $5k. This was a fully auto-scaling, redundant and highly available system.
When I started, every night I got woken up by alerts (working alongside the CEO and another engineer to fix things). By the time I had stabilised things, the only thing waking us up were our providers having outages.
I used to run a similar business earlier, without AWS. We owned our own hardware and had ops people going to data centres. I can guarantee you we did not spend less than $12-13k/month (AWS fee + my salary) in that company. Think closer to $100-150k/month.
AWS can be cheaper when you factor in the cost of employees. It can also be stupidly expensive when you use it the wrong way.
Another example: I host a small service that gets very seldom, seldom use. Maybe 20-50 people discover it and use it per month. I have the backend running on a Lambda, and it costs me about $0.5 per month. It took me 20 minutes to write the CloudFormation for that and push it through my CI pipeline to have it deployed. There is no way I could get cheaper hosting, uptime/availability, and faster time to market than with a Lambda.
If and when that service becomes more used where it warrants running full time, I’ll rewrite the request handling and throw it in my k8s cluster. But until then, I do believe this is the cheapest solution (for me).
I believe you, but most people don't do this, sadly. You very clearly _get_ Cloud, but most don't, and financial optimisations often come much later down the line.
That said, it was a long time ago, and I'm sure competition and prices have changed dramatically.
It’s not actually required. And I don’t mean the completely unrealistic “if you run stuff on your private network that never needs to connect to the internet, then you don’t need a NAT gateway!”. I just mean you can implement routing to the internet in cheaper ways.
If you don’t need 100Gbps highly available outbound traffic routing like a NAT gateway provides… you run a t3.nano instance doing forwarding and NAT that will sustain 30Mbps and burst to 5Gbps for $3.80/mo. Just on raw bandwidth, unless you need more than a t3.large can push (~500Mbps continuous, 5Gbps burst), it’s cheaper to run an EC2 instance as your gateway rather than use a NAT gateway.