We're trying to develop a comprehensive system which has broken down to multiple microservices. So we decided to use CQRS and DDD to tackle the complexities of the domain. Also we’re about to launch Generic Domains (e.g. Authorization, Tracing and Logging) to minimize the size of microservice.
Everything goes fine until we discussed about the form of the API Gateway. There is a cross-road: Simple reverse proxy or a specific API which needs more efforts and collaborations between developing teams.
The question is what is the risk of using a reverse proxy when you’re unable to use a BFF(Backend for frontend) in this case and also is there any turning point when we face with the deadlocks?
For instance, you’re going to have multiple client apps (web app and mobile app) and there are thousands of APIs which should be used in different ways. In addition, when you route the request to the exact API synchronously, you may disregard the Command fact of CQRS paradigm.
Developing
The technologies that we use to develop our Microservices are .net core, rabbitmq, open-tracing, mssql and dapper. We develop the APIs through different teams with individual repositories and mono-repositories for the management app and users’ dashboard app with Angular.
Deploying
We build docker images in our CI/CD pipelines and infrastructural services to ensure the deployment team about the production environment functions. Both APIs and client apps deploy independently in different docker swarm stacks.