locked
Breaking a project into microservices. RRS feed

  • Question

  • User-1355310219 posted

    Hi,

    I have an idea for a big project and for a change I want to break it into microservices.
    The general idea is that there will be services for:

    • Core (master)
    • Forums (slave)
    • LiveChat (slave)
    • Articles (slave)

    In essence, all 3 slave services share a common resource: `User`, which conveniently resides in Core.
    Does this architecture make sense? I believe it'll require all slave services to implement at least a tiny bit of coupling - fetching users from Core.

    Saturday, August 22, 2020 7:18 PM

All replies

  • User1686398519 posted

    Hi JTkrs,

    Microservices are small, independent and loosely coupled. Each service uses its own data source, and services will not affect each other. They communicate with each other through the use of well-defined APIs. The internal implementation details of each service are hidden from other services.In addition, you need to understand the API gateway, which is the entry point of the client, and the client calls the API gateway, which forwards the call to the appropriate service on the back end.

    But according to your description, Forums (slave),LiveChat (slave),Articles (slave) share the Core (master). This architecture is not a microservice. Keeping all data in the same data store runs counter to the decentralized data management characteristics of microservices.

    Best Regards,

    YihuiSun

    Monday, August 24, 2020 10:12 AM
  • User-1355310219 posted

    But according to your description, Forums (slave),LiveChat (slave),Articles (slave) share the Core (master).



    Only `User` is shared, Forum etc. have their own data - but `User` is an entity for entire platform

    Monday, August 24, 2020 10:21 AM
  • User1686398519 posted

    Hi JTkrs,

    1. Microservices are completely independent. According to your previous description, your approach is different from the definition of Microservices.
    2. Your idea looks like an SOA architecture, which extracts repetitive and common functions into components and provides services to various systems in the form of services.
    3. In addition, I learned about Common Data Model. You can implement User with Common Data Model, extract it as a microservice, and let the other three services calls. But once this User changes, the other three services will be affected.

    Best Regards,

    YihuiSun

    Friday, August 28, 2020 10:12 AM