3 ms·
This is good advice overall, in my experience. Most of the small/medium sized companies I've consulted for could have been easily served by a triple-redundancy
by nh2 7y ago
This is good advice overall, in my experience.
Most of the small/medium sized companies I've consulted for could have been easily served by a triple-redundancy Hetzner dedicated server setup for 200 EUR/month. Yet they they chose AWS and paid thousands per month because "that's what everybody does". I have not regularly encountered actual calculation or other analysis as basis for this decision.
Many people here and in industry seem to think that it's either AWS or "build your own datacenter or colocation and maintain machines". Be reminded: This is incorrect. The post recommends renting dedicated servers from a server provider (in this case Hetzner), which includes all hardware handling personnel, hardware replacement, power, and so on, for 50 EUR/month per big-sized server.
Others complain about the "too points in the list". In practice, all these points have to be addressed analogously in an AWS deployment as well, and require approximately as much knowledge as the "sysadmin you'd have to hire". It's a myth that you can just use AWS without reasonable sysadmin knowledge. As a "DevOps engineer" building sophisticated projects on AWS, you usually have to have a superset of typical sysadmin knowledge.
Regarding scalability: For me, Hetzner has reliably fulfilled orders for new dedicated servers within 15 minutes (!) to ssh. In contrast, I've had cases where the AWS support request to raise the limit of 0 big machines in a region to 1 has taken more than 2 business days ("a request of this size has to be escalated").
With a reasonable dedicated server setup, many companies don't need to scale for a while, because you can go a long way with ~5000 SQL inserts that a modern dedicated machine can achieve on an SSD.
Again others highlight the cloud for the available internal bandwidth. Note Hetzner gives you 10 Gbit/s as a 39 EUR/month upgrade. Such bandwidth is reliable; I have measured that I can reliably transfer at Gigabit speed even across the oceans.
A 1 Gbit/s dedicated server with unlimited traffic for 50 EUR/month (at Hetzner) can transfer ~260 TB per month egress. Per AWS calculator, this would cost 18700 USD there -- that's a factor of 375x on traffic cost.
In general, in my experience, the factors you pay for common cloud providers over rented dedicated servers are:
* 10-20x for compute
* 2-4x for storage (this computation includes multi-AZ redundancy)
* ~300x for traffic
The article's point about not being able to use strace/gdb/iostat to debug problems on hosted services is also a good one. For example, we have found AWS EFS to have abysmal performance and could not address this problem. Using CephFS on dedicated infrastructure instead, any bottlenecks could be quickly debugged and performance was great.
Similarly, the point about simplicity is good. Having just simple Linux processes running under systemd on a machine, instead of processes-in-docker-on-kubernetes-in-VMs-on-EC2, removes complexity and makes systems many times simpler and easier to debug, and thus much faster to iterate on.
The only point of the article I don't quite a agree with is to not use CDNs. If you want fast loading times over HTTPs (multiple roundtrips), you need to use a CDN, because of physics. (But you can build a CDN with dedicated servers very easily.)
I have successfully run a triple-redundancy dedicated Hetzner setup over the last 2 years (managed as infrastructure-as-code using NixOS) with a High-Availability database (postgres with Stolon), High-Availability file system (CephFS), systemd and round-robin DNS. So basically, everything the post recommends. It's been the simplest to manage deployment I've used for years, compared to many cloud setups I've worked on. It's had higher uptime than AWS in the last 2 years. It has extremely predictable performance. It costs 200 EUR/month. It's a pleasure for me as a programmer.
In summary, I think the article is on-spot (even though it uses odd language).
There remains one significant benefit of big cloud providers like AWS: Being able to spawn whatever you need via /one/ unified API in very many locations across the world. If you need something that must be distributed across as many data centers as possible, this is quite a plus. But very few people actually need this.