We’ve traded shipping features for managing infrastructure. Between EKS, AppSync, and a dozen other AWS acronyms, we’ve reached architectural paralysis. It’s time to stop worshiping the stack and start focusing on the product.
I was used to grocery shopping being simple. You bought milk, and there were three types: 0% fat, 1% fat, and 3% fat. In my first experience in the US, I entered a corridor and saw thousands of options just for milk. It created a total decision paralysis as I had no idea which one to choose, even though, in the end, they were all just milk. Nowadays, we are stuck in this exact situation in tech. There are so many redundant options making our decisions harder, but there are fundamentally no significant differences among them.
EC2 is just a fancy name for a machine that costs way more than it should. DynamoDB is just a fancy way of saying: MongoDB with vendor lock-in. SQS and SNS are just complicated ways to do what a simple Redis queue has been doing for a decade. ECS is just Docker with a massive AWS tax, and AppSync is just a GraphQL wrapper that ties your hands. I know people will say there are technical differences, and sure, maybe at a massive scale they do matter. But fundamentally, the majority of web applications won't benefit from those differences, and they will never actually need that massive complexity. You are just inheriting a headache and a bigger bill.
At Sacada Labs, we decided to cut through the noise and simplify. We build our apps using a monolithic approach because it covers the core needs of virtually any modern web application without the extra costs. We self-host our own web server, database, and messaging queue all on the same machine. This gives us virtually no latency and a developer experience that allows us to iterate super fast. To keep our data safe, we backup every write to a blob storage. This entire stack is open source and runs perfectly on a machine with 16GB of RAM and 8 CPUs—a setup that costs $10 at Hetzner, though AWS would call it a much more expensive 'EC2'.
Of course, we might eventually need to scale or partition our data, but until that day arrives, we prefer to spend our time shipping features rather than maintaining the accidental complexity we trapped ourselves into. The complexity that only exists because we couldn't manage our own egos and failed to make things simple. At the end of the day, simplicity is the purest form of humbleness.