I once got a new hire from Uber and for months on end his complaint was that “the services are too big”.
C# accidentally solved this problem with extension methods, these little helper utils at least get grouped by type and not in one humongous file. Or maybe that was part of the design team's intention behind them all along.
And because they're static you can easily see when services or state are getting passed into a method, clearly showing when it should in fact be some sort of service or a new type.
Even in architectures that start as distributed, I’ve seen the “involuntary monolith” arising.
Way too common, unfortunately.
Sun RPC was microservices.
But understanding they are several decades old concept isn't cool, doesn't sell conference tickets, books and consulting training.