Menu Close

Microservice Overhead

I came across https://dl.acm.org/doi/pdf/10.1145/3593856.3595909 via https://www.ycombinator.com/companies/gauge last month. “An order of magnitude lower than the baseline” seems like an excellent increase in performance. I seem to recall similar claims about Erlang years ago.

I wonder why academics keep finding these optimizations that the industry ignores.

Could there be something the academics are missing?

Stream-aligned teams with different goals that conflict with sharing process space, perhaps?

Ghemawat et al. mention at the end that they wouldn’t expect multiple stream-aligned teams to use this pattern. It’s hidden at the very end of the document.

Why is that? I remember, at Big G, we would write services that didn’t need to know where the services they were talking to were. Grpc just hid all that from the developer. If they were all written in the same language, they might all use the same process.

When I started reading the document, I thought that’s what they were describing.

Why can’t we create applications that share address space and make calls without marshaling and unmarshaling? Why can’t we do it even across languages? Foreign function calls are not a new concept.

To the grey beards, it must be painful to see the industry running away from tried and battle-tested efficient patterns, only to re-discover them after a decade and reimplement them badly.