This project is about MicroServices and it's best practices. What is MicroServices and on what principle it's based on?
Microservices is an architecture design model with a specific bounded context, configuration, and dependencies. These result from the architectural principles of the domain-driven design and DevOps. Domain-driven design is the idea of solving problems of the organization through code.
The business goal is important to the business users, with a clear interface and functions. This way, the microservice can run independently from other microservices. Moreover, the team can also work on it independently, which is, in fact, the point of the microservice architecture.
Eric Evans, introduced the concept in 2004, in his book Domain-Driven Design: Tackling Complexity in the Heart of Software. According to the book, it focuses on three principles:
-
The primary focus of the project is the core domain and domain logic.
-
Complex designs are based on models of the domain.
-
Collaboration between technical and domain experts is crucial to creating an application model that will solve particular domain problems.
Visit following link for more details:
Reference from : https://medium.com/microtica/the-concept-of-domain-driven-design-explained-3184c0fd7c3f
Writtern by : Sara Miteva
https://saramiteva.medium.com/
Microservices are considered to be service oriented architecture. From outside a single microservice is considered to be black box.
Microservices embraces the concept of data hiding. This help in maintaining the services based on different domain and the changes in them doesn't effect the other service.
SOA is a design pattern in which multiple services combine to perform a certain tasks through different availble endpoints. The SOA emphasizes on reusing the code for different problems.
-
Independent Deployability: This allow application to be loosely coupled and one application will be deployed without changing anything in the other service.
-
Modeled around Business Domain:
Separating the business model will allow to make things easier, the domain of every business will be different so making change in one business domain will not effect the other.
- Owning their own State: Every Microservice should have their own state like if one service want to access the data from the other service it will require permissions from other service to allow access to the data, also it will keep the Object Oriented encapsulation principle alive of data hiding principle.