4 ms·
Putting a network connection between your application abstractions was always a dicey proposition. (See EJB 1.0) Making it the entire basis for application abs
by e67f70028a46fba 5y ago
Putting a network connection between your application abstractions was always a dicey proposition. (See EJB 1.0)
Making it the entire basis for application abstraction is lunacy, the sort of extremely clever idiocy that can only occur in the tech world.
- discreteevent 5y agoThe funny thing is that Martin Fowler had a First Law of Distributed Objects: Don't distribute your objects. But then he switched and helped popularize microservices (he's rowing back a bit nowadays). I can only assume it's because he saw his clients doing it and for a consultant the client is always right. (And I think the client was doing it to indulge their hard to get developers who wanted complexity and the freedom to use their programming language of the week) It feels like a cowboy industry when this is the 'leadership' we have.
- e67f70028a46fba 5y agoYep. Look at the REST/JSON API debacle that has unfolded over the last two decades. It is trivially obvious that REST is both difficult to implement and largely pointless outside of a hypermedia system, but the thought leaders never said a thing about it.
- edgyquant 5y agoHow is REST difficult to implement? And as for pointless, what is a better way to present an API in your opinion?
- e67f70028a46fba 5y agoJSON isn’t a hypermedium so creating a uniform interface is hard. I don’t have a strong opinion on alternatives. GraphQL seems ok for server to server stuff.
- tootie 5y agoThere are some valid cases for microservices. Specifically when you have divergent scaling needs for different types of services. But almost everything else about them can be solved with good code modularity. I think microservices grew out crummy package managers that either didn't work very well (npm, everything python has tried) or ones that were powerful but no one knew how to use properly (maven, nuget).
- gravypod 5y agoHow do your applications persist data? If you're running a compute resource today there's very likely a TCP connection between your application and your data somewhere. Also, in things like kube, it's possible to schedule jobs next to each other so your TCP connection is essentially going over localhost. There are many tricks you can do to have this even out perform a single process application.
- e67f70028a46fba 5y agoThat’s why I said application abstractions rather than system abstractions.