I have built a microservices-based application using .NET Core and C#. My focus was on creating a clean codebase, which has allowed me to develop each service independently and to use MongoDB as the main database (although you can easily switch to SQL Server).
To organize my codebase around the business domain, I implemented Domain-Driven Design (DDD). This approach helped to align my codebase with the business needs, rather than just focusing on technical implementation details.
To separate the responsibility for handling commands and queries, I used the Command Query Responsibility Segregation (CQRS) pattern. This allows me to optimize the two responsibilities independently, improving the overall performance and scalability of my application.
I also used Docker to package and deploy my microservices. This approach makes it easy for me to deploy and run my application on different environments.
Overall, I believe that my application is well-architected and built on modern technologies and patterns. This should make it scalable and maintainable over time.