Motivation:
You want to use microservice architecture for your system but you are not sure whether your design does follow microservice style.
You need to explain your microservice-based design to your client or manager.
You need to evaluate a system against microservice architecture style.
Information:
A microservice-based system contains 2 main parts: a user interface and a collection of APIs (or web services or just services).
[A diagram shall be added here.]
The user interface can be multiple web pages or single web page or mobile native application or Windows native application.
The user interface can be implemented using ASP.NET MVC or React or Angular or Android SDK or iOS SDK or even ASP.NET Web Forms or WordPress.
Each API must have its own database, must be deployed independently of other APIs, must support automation testing and automated deployment, must be able to be scaled horizontally, can be implemented using preferred technology stack, and should focus on a single business domain.
Each API database can be a relational database (MS SQL, Oracle, mySQL) or noSQL database (MongoDB, Cassandra).
These APIs can be implemented using .NET Framework 4.8 or .NET 6 or Spring Boot (Java) or Node.js or Golang or even WordPress.
These APIs often share an identity provider that in turn is often a specific API too.
These APIs often share several utilities (e.g. notification service, file service, payment service) that in turn are often specific APIs too.
These APIs can be grouped into API Gateways for easier authentication and authorization control. The API Gateways can be implemented using using .NET Framework 4.8 or .NET 6 or Spring Boot (Java) or Node.js or Golang or even WordPress.
These APIs can also share data with one another using a message broker (i.e. message queues). These message queues can be implemented using a relational database (MS SQL, Oracle, mySQL) or noSQL database (MongoDB) or a distributed event streaming platform (Kafka, RabbitMQ).