Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Picturing a real-world situation here in my recent past...

We start with the pinnacle of engineering, a SPA, could be built in React, Vue, whichever.

It loads, which on slower smartphones takes a long time as they suck in running JS. When it's booted, there's nothing there. It has to reach out for data.

And so it does, to the microservice. Which might start doing something in 20ms or 200ms, it's all very intermittent due to excessive virtualization. It can't just go and return the data, no...it has to take the authentication token that was passed in and authenticate it with yet another service, which is vendor managed and even slower. Then there's rate limiting, logging, all types of overhead. Eventually, it returns 3 product rows.

Sadly though, for each of the product items we have to make an individual call to get related data, part of it coming from yet another microservice. All of these calls having their own startup time, authentication and overhead.

So for what one might call a classic "join", we're into multi-second territory. Which is fatal territory. Not to mention the shit state of data, as it's all no-sql garbage. Mind you, this is about 1/10th of what users are supposed to see on the initial dashboard.

We're talking one tiny part of a small- to midsized "app". It all costs a fortune and it produces garbage that users hate.

Old dinosaur me used to code up a CRUD app like this by the dozens. Using LAMP, .NET, whichever. Performance would be near-instant, I wouldn't allow any query response time to go over 10ms.

Every part of our stack is "best-practise" and enterprise-grade. And it just doesn't fucking work. It's 10 times more expensive and 100 times slower whilst the very idea of such an app is that it's supposed to be more interactive/responsive compared to the traditional stacks.

Luckily though, these services are multi-client. Except they're not, because then the mobile app team needs different data, and it's all just bolted on to the "generic" service. Services teams independence is a problem, not a solution. Plan a UI feature and good luck getting it orchestrated across teams each having their own roadmap.

And let's end with comedy gold where Lamda developers now need to calculate the running costs of their logic line by line. Whoops, slightly inefficient loop, that'll be 30$ extra per month on the bill. Now "scale" that problem to dozens of such developers building hundreds of services.

What a joke we've become. Distributed computing is an error, not an architecture. The point of computing is to put compute and data as closely together as possible. As the brightest minds on the planet deliver in stunning hardware advances which us software developers piss away.

But hey, the God of Complexity pays well and those footing the bill have no idea what we're doing but it does sound impressive.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: