Here&#x27;s what I&#x27;ve seen:<p>1. HTTP&#x2F;JSON, with resiliency semantics layered on via SmartStack, Hystrix, or DIY library.<p>2. GRPC&#x2F;protobuf. Haven&#x27;t seen anyone other than Google run this in production, and Google doesn&#x27;t really use gRPC (they use Stubby).<p>3. Finagle&#x2F;Thrift. Twitter and some other folks use this.<p>4. Async message bus. Not as popular because it&#x27;s not point-to-point, but it works. It&#x27;s technically not RPC so it requires a different architectural approach that lots of people aren&#x27;t willing to adopt.<p>5. Super fancy custom RPC protocol. Uber does this, for example. As does Google. You need lots of engineering to do this well, though.<p>&lt;plug&gt; We&#x27;ve seen these design patterns over and over again, which is why we&#x27;re building Quark (github.com&#x2F;datawire&#x2F;quark) which is a language for you to build your own custom RPC protocol (case #5 or to a lesser extent #1). We&#x27;re also building Datawire Connect on top of Quark which gives you resilient RPC semantics in a way that&#x27;s compatible with your existing tech stack. &lt;&#x2F;plug&gt;