You can do a cross service join in a single request. Combine that with good caching and a normalized architecture is (almost) as performant as a demoralized one.<p>Check out <a href="https:&#x2F;&#x2F;github.com&#x2F;facebook&#x2F;dataloader" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;facebook&#x2F;dataloader</a><p>We use it to do cross service joins in the form of bulk requests in a very transparent way.