1.

How to partition a large application into microservices architecture?

Answer»

MICROSERVICES should be autonomous and divided based on business capabilities. Each software component should have single well-defined responsibility (a.k.a Single Responsibility Principle) and the principle of Bounded Context (as defined by Domain Driven DESIGN) should be used to create highly COHESIVE software COMPONENTS

For example, an e-shop can be partitioned into following microservices based on its business capabilities:

  • Product catalogue

Responsible for product information, searching products, filtering products & products facets.

  • Inventory 

Responsible for MANAGING inventory of products (stock/quantity and facet).

  • Product review and feedback 

Collecting feedback from users about the products.

  • Orders 

Responsible for creating and managing orders.

  • Payments

Process payments both online and offline (Cash On Delivery).

  • Shipments 

Manage and track shipments against orders. 

  • Demand generation 

Market products to relevant users. 

  • User Accounts 

Manage users and their preferences. 

  • Recommendations 

Suggest new products based on the user’s preference or past purchases. 

  • Notifications 

Email and SMS notification about orders, payments, and shipments.
The client application (browser, mobile app) will interact with these services via the API gateway and render the relevant information to the user.



Discussion

No Comment Found