Earlier quoted context omitted.
I'm pretty sure they aren't arbitrary at all and are mostly due to managed and serverless offerings backed by duct tape and chewing gum. On a few occasions I have been left with all-but-proof that behind the "let us handle scaling for you" smoke and mirrors is a bash script on an EC2 instance sized by guesswork and hardcoded until you complain, at which point support might be able to shuffle it between instance types…
Yes, it's part this and part "let's get rid of the noisy neighbour issue by making everyone whisper" design philosphy. This just arrogantly pushes the scaling challenges back down to the customers who are then forced to buy more AWS services to build workarounds for the scaling limitations in front of them. For Amazon it's a win-win though and they'll keep doing this as long as c-suite fools keep buying.
That was an instructive project - building the same service in three clouds tells you a lot both about:
- The quality and completeness of foundational services (identity, networking, compute, storage)
- The tooling ecosystem (the quality of the Packer builders and Terraform providers [1] in our case)
- How helpful (or existent) support is, which ranged from an account manager telling us up-front “here’s the way to avoid hitting limits for your design” to not being able to talk to a human at all throughout the entire project, and thus having to phase in beta customer onboarding for that cloud because of the arbitrary limits.
At some point that team should write a full retrospective on this.
[1]: Disclaimer - I have worked on both Packer and Terraform in the past at HashiCorp.