our mobile app talks to 3 backend services directly.
A 4th one ships next sprint. The mobile team is already drowning.
Every new service means a new domain to whitelist, a new auth scheme to wire, and a new error shape to parse. You’re asked to reduce coupling before NotificationService lands.
Here’s the setup:
Mobile → UserService (users.api.com)
Mobile → OrderService (orders.api.com)
Mobile → PaymentService (payments.api.com)
…and NotificationService next sprint.
The client is doing routing the backend should be doing. What do you do?
A) Add an API Gateway — single entry point, all services hide behind one domain.
B) Build a BFF (Backend for Frontend) — a dedicated aggregation layer tailored for mobile.
C) Put a Load Balancer in front of all services — single IP, distributed traffic.
D) Switch to GraphQL Federation — one unified schema the client queries.
Three of these are real patterns you’d use in production. Only one of them actually solves the problem in front of you.
Pick one — A, B, C, or D — and tell me why. I’ll drop the full breakdown in the comments (including why two of the wrong answers are close enough to trick senior engineers).
If this is the kind of tradeoff question your team argues about, share it with them. The debate is worth more than the post.
Drop your answer 👇























