The app calls Orders. Orders checks the login itself.
Fine, but that check is now Orders' job.
Then the app calls Payments. Payments checks the login again.
Each team wrote its own check. Payments has a bug and lets a bad request in.
One front door handles login, limits and routing for everyone.
Services stay simple because the shared chores live at the door.
It is a single point of failure unless you run several.
Reach for it when
When ten services each need login checks and rate limits, do it once at a front door. With two, skip it.
The catch
Every request passes through it, so a slow or crashed gateway hurts all ten services at once, even if each is healthy.
Say it in an interview“I would put a gateway in front for login checks, rate limits and routing, and run several copies behind a load balancer so it never fails alone.”