Skip to content

[DM.Services] Сервисная архитектура #46

@quilin

Description

@quilin

Зачем?

Во-первых, это красиво.

Я, конечно, смотрю на проект в первую очередь как на песочницу, чтобы на ней изучать новые вещи. В принципе, мне доводилось распиливать монолит по микросервисам, но на ДМчике есть несколько интересных нюансов, которые и усложняют процесс, и позволяют изучить кое-что новое, и вдобавок должны сильно улучшить сам ДМчик.

Основные аргументы прежние - независимые сервисы сложнее монументально сломать, их проще независимо масштабировать, мониторить и изменять. Аргументы против - те же самые, их сложнее собирать, поддерживать их взаимодействие, рефакторить и прочая, но большинство этих аргументов применимы к ситуациям с плохим определением bounded context. Мне кажется, наша комбинация Gaming/Forum/Community ну очень хорошо покрывает текущие задачи и должна бодро масштабироваться. Подробнее про конкретные сервисы чуть ниже.

Какие сервисы?

Я предлагаю разбиение такое же, какое есть сейчас в нашем модульном монолите:

  1. Community - юзкейсы прямого взаимодействия между пользователями: личка, чат, опросы, отзывы о сайте. Очень сложный вопрос о IAM, но я ниже упомяну его отдельно.
  2. Gaming - все, что напрямую связано с играми.
  3. Forum - форум, новости проекта, админка форума.
  4. Search - абстрактный сервис поиска, который позволил бы проводить поиск по всему сайту, и играм, и коммунити, и форуму.
  5. Notifications - такой же абстрактный сервис уведомлений.

TBC

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions