Microservice-Based System

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).

 

 

Why Select Microservice Architecture for Your System?

Motivation:

You need to decide whether to use microservice architecture for a new system or for modernizing a legacy system.

Suggestions:

A. Why select microservice architecture for your new system?

Reason 1: You want to have several independent development teams.

Reason 2: You want or your client wants to have a faster and modern UI (i.e. SPA) that is totally decoupled from the other parts of the system.

Reason 3: You want or your client wants that a part of your system (e.g. user store and authentication) can be shared among or reused by multiple different systems.

Reason 4: You want or your client wants your system to be able to scale out easily later.

Reason 5: You want or your client wants that some parts of your system can be revised or extended or replaced easily later.


B. Why migrate your legacy system to microservice architecture?

Reason 1: You want to have several independent development teams.

Reason 2: You want or your client wants to have a faster and modern UI (i.e. SPA) that is totally decoupled from the other parts of the system while the old technologies (like ASP.NET Web Forms or WordPress) cannot provide it.

Reason 3: You do or your client does have performance or scalability issue with the legacy system.

Reason 4: You find that is too difficult to add a new feature to the legacy system because it is too complicated.

Reason 5: You want or your client wants that some parts of your system (e.g. user store and authentication) can be shared among or reused by multiple different systems.

Reason 6: You want or your client wants your system to be able to scale out easily later.

Reason 7: You want or your client wants that a part of your system can be revised or extended or replaced easily later.


C. Here are my suggestions based on estimated development effort and a number of system users.

For a new small project (3-month effort, less than 1,000 users) I always recommend that we use any simple solution that works (e.g. WordPress, Magento, Salesforce LWC, ABP).

For a new medium or large project (2-year effort, more than 20,000 users) I recommend that we use a microservice-based and SPA solution.

For a legacy project I think that we do need a really “good” reason to migrate it to microservice architecture first.

Maybe your client wants to provide a modern SPA for their users.

Maybe the number of users grows to 1,000,000 and you do have a performance or scalability issue.