One thing that's easy to forget is how much of the "everything is a service" idea predates LSP. Emacs had long-running subprocesses, RPC-ish interactions, TRAMP, GUD, REPL integration, etc. LSP standardized one important interface, but it wasn't the beginning of the architecture.