Microservices architecture offers great flexibility to decouple the applications and develop independent applications. A Microservice should always be independently testable & deployable.
But, as you keep on having too many services, there is a need to have an API Gateway.
You can't expose all your services to external clients. You need to have some layer of abstraction which acts as a gatekeeper for all your Microservices. One entry point for all your services.