 <p>No - it's not a prerequisite, even if you have a client app that consumes them - but imho it's a good idea.</p> <p>Microservices architecture is really nothing new as far as concept. Break up your monolithic app into many components that can iterate quickly at their own pace of development. Cloud native tooling and best practices have brought on this new notion of "microservices" with technology like containers and best practices like code as config.</p> <p>For client consumption across a broad spectrum of client capabilities, microservices are more easily and practically managed with a gateway because the gateway is a piece of infrastructure that acts as a control point for QoS concerns such as security, throttling, caching, payload pagination, lightweight transformation, tracebacks through header injection, etc.</p> <p>It's not necessary, but practically speaking if you have one already baked into your microservices development process as part of a cloud ready infrastructure - you address these things during development consideration and not in "big bang" fashion after the fact - a huge burden in the past for devop/ops folks to get their head around. It's such a burden, that that's why we've started our own solution that marries microservices development integration with management under ones cloud native platform and have a market for it</p>