Skip to content
Preptima
hardDesignMidSeniorStaffLead

One screen needs data owned by three different services, and it has to render in 200 milliseconds with a filter and a sort applied. How does that request get served?

6 min readUpdated 2026-08-15Target archetype: Big Tech, Enterprise Captive, Product Startup

Answer

Short answer

Fanning out in parallel is fine while every service can answer independently, but a filter or sort spanning owners cannot be composed at all. Either make one service the driver and hydrate its page of identifiers, or build a read model from events and pay for staleness deliberately.

This is a microservices API composition problem. Good microservices design decides whether composition belongs in the client, an edge service, a backend-for-frontend, or a precomputed read model. API composition is not just calling three services faster; API composition also defines ownership of partial failure, caching, timeouts, and what the user sees when one dependency is slow. Weak microservices answers add parallel calls without owning the composed experience.

Microservices make this harder when nobody owns the composed response.

Was this answer helpful?

Likely follow-ups

  • Your read model is nine seconds behind and a user has just made a change they expect to see. What do you do for that one user?
  • The pipeline that builds the view had a bug for two days. How do you rebuild it, and can you do that while serving traffic?
  • Who owns the composition layer, and what happens to it when a fourth service joins the screen?
  • One of the three services wants to change its schema. Which of your two designs makes that harder for them?

Related questions

Masterclass guide

Further reading

Related Topics