Microservices: decomposing a db-based application

I plan to decompose the application, which I began to build in the form of a monolith, with a graphical database into microservices. But the dilemma I encountered is trying to find the right solution to separate the various services and not lose the benefits provided by the graph database.

The idea that I originally considered was to split each individual object into its own microservice, using a document repository to store data for each service. Then define a higher level service for relationship management.

For example, with the relation (A) → (B), 3 microservices will be created, a service for objects of type A, another for objects of type B and a third higher level with a graph database, nodes of type A and B containing only the identifier and relations between them .

Question 1 : Is there anything wrong with this approach regarding combination, fault tolerance, or something else that I can't think of now?

Question 2 : when you throw a third object into the game, for example (A) → (B), (A) → (C) and (C) → (B), which one would be the best approach in this scenario?

  • I adhere to the strategy of only one higher-level service in order to maintain all relations?
  • Am I creating several higher level services to support each type of relationship?

3. , (Person) - isFriendOf → (Person), , ?

, .


, , . :

Graph relationships

, , , , , , .

+4
1

( Stack Exchange) ? , . , .

, , , , .

2 3, , , , , . :

Microservices

, 3 , , , - , .

2 , , , , , , , , , .

+1

Source: https://habr.com/ru/post/1620167/


All Articles