
Sergey
23.07.2017
17:31:38

Evgeniy
23.07.2017
17:31:55
то что один из бэкэндов становится бд

Sergey
23.07.2017
17:31:56

Evgeniy
23.07.2017
17:32:03
и все работает по http со всем оверхедом

Google

Evgeniy
23.07.2017
17:32:06
это норм?

Sergey
23.07.2017
17:32:17
ну если ты хочешь так делать - то как хочешь) я такого не предлагал)

Evgeniy
23.07.2017
17:32:36
ну хорошо какие именно слова я твои не так понял?
про агрегатор?

Sergey
23.07.2017
17:32:42
я нигде не говорил ни о двух бэкэндах ни о чем-то таком еще

Evgeniy
23.07.2017
17:33:01
так то что ты бэкэнд назвал агрегатор сути это не поменяло

Sergey
23.07.2017
17:33:18
если у тебя приложение монолит с нормальной декомпозицией - у тебя будет модуль API, который будет агрегировать информацию из других модулей в те респонсы которые хочет клиент.

Evgeniy
23.07.2017
17:33:34
опять абстрактные кони

Sergey
23.07.2017
17:33:37
тут гибкость в том что мы можем менять то что нам надо отдать без каких-либо изменений в ниже лежащих модулях

Evgeniy
23.07.2017
17:33:54
конкретную стори с новостями, комментариями и польльзователями привели

Sergey
23.07.2017
17:34:12
и собирает из этого JSON

Google

Sergey
23.07.2017
17:34:37
если ты по микросервисам упарываешься - будет отдельный сервер api gateway
если нет - можно без подобных выкрутасов
профит - гибкость
минус - производительность не на максимуме

Evgeniy
23.07.2017
17:34:58
гибкость?
soa

Sergey
23.07.2017
17:35:14
повторюсь - это если ты микросервисами упарываешься

Evgeniy
23.07.2017
17:35:33
я не упарываюсь ими

Sergey
23.07.2017
17:35:38
если тебе не нужно распределенное приложение и ты делаешь монолит - у тебя вся коммуникация между модулями будет в рамках одного процесса

Evgeniy
23.07.2017
17:35:44
я говорю что здесь оно нафиг не нужно в 99% случаев

Sergey
23.07.2017
17:35:49
что "оно"?

Evgeniy
23.07.2017
17:35:57
микросервисы

Sergey
23.07.2017
17:35:58
короч, повторю еще раз для тебя

Evgeniy
23.07.2017
17:36:02
или soa

Sergey
23.07.2017
17:36:17
так ты сам начал про soa/микросервисы своими двумя бэкэндами)

Evgeniy
23.07.2017
17:36:32
я начал?

Sergey
23.07.2017
17:36:42
да, как всегда)
я предлагаю просто объект который будет представлять агрегацию данных для одного скрина. Ориентированнйы по требования клиента
объект, не отдельный сервер какой-то, просто еще один объект сверху этих трех модулей
4-ый модуль с 3-мя зависимостями

Google

Sergey
23.07.2017
17:37:31
так если тебе для этого скрина потом понадобятся еще какие-то данные - надо поправить в одном месте
и все рады и довольны, у нас и со связанностью все хорошо, и клиент получает то что ему надо
минусы - application level joins таки медленнее джойнов в базе.

Evgeniy
23.07.2017
17:38:43

Sergey
23.07.2017
17:38:47
альтернатива - делать отдельную read model со связанностью на уровне базы
но тогда выйдет неявно

Evgeniy
23.07.2017
17:38:59
но суть в том что от зависимостей между модулями не избавиться
потому что
есть модуль комментариев и модуль юзера

Sergey
23.07.2017
17:39:16

Evgeniy
23.07.2017
17:39:18
допустим мы делаем их независимыми
разными командами и людьми

Evgeniy
23.07.2017
17:39:35
которые не могут общаться между собой

Sergey
23.07.2017
17:39:53

Evgeniy
23.07.2017
17:39:56
тогда команда что делает модуль комментариев скажет, что это за хуйня в таблице коментариев с user_id
удаляем нахуй
и удалит и будет права

Sergey
23.07.2017
17:40:09
не будет

Evgeniy
23.07.2017
17:40:10
потому что оно нахуй не нужно
но тут юзеры прикурят

Google

Sergey
23.07.2017
17:40:25
нужно, им не важны детали профиля пользователя, но по бизнес логике у них могут быть разные авторы
просто у них автор будет представлен айдишкой, а не всем объектом

Evgeniy
23.07.2017
17:40:45
они сделают в итоге модуль common
и или relations

Sergey
23.07.2017
17:40:56

Evgeniy
23.07.2017
17:40:57
и там будут хранить данные по связям между модулям
это просто подход доведенный до абсолюта в виде фанатичности его следования

Sergey
23.07.2017
17:41:12
ну значит они не умеют в декомпозицию, что ж поделать

Evgeniy
23.07.2017
17:41:43
я понимаю что твой документ правильный

Admin
ERROR: S client not available

Evgeniy
23.07.2017
17:41:49
про модули и про разделение
ты правильно говоришь
и я согласен

Sergey
23.07.2017
17:42:03
"но всеравно все будут херачить как придется"?

Evgeniy
23.07.2017
17:42:19
не совсем, я на это недеюсь
просто идеального подхода не будет и всегда в команде будут других точек зрений
а представить что все станут сторонниками одного мнения
правильного или неправильного другой, вопрос
это не реально

Google

Evgeniy
23.07.2017
17:43:13
к сожалению
но я такой же идеалист который бы хотел то о чем ты говоришь
просто я понимаю в реальности от нас мало чего зависит
суть в том что если понадобился функционал в виде аггрегирования данных от разных сущностей
надо решить куда его поместить
или этим будет заниматься фронтенд
или будет монолитный бэкенд и этим заниматься сам
или микросервисы и один агрегатор (по сути такой же бэкенд)
все 3 этих способа ты уже говорил

Sergey
23.07.2017
17:45:42

Evgeniy
23.07.2017
17:45:48
а ну еще 4 способ модуль один
да

Sergey
23.07.2017
17:45:50

Evgeniy
23.07.2017
17:45:51
точно

Sergey
23.07.2017
17:46:01
короч
давай по порядку

Evgeniy
23.07.2017
17:46:12
все зависит от приложения
и надо делать так как подобные вопросы решались

Sergey
23.07.2017
17:46:22
универсальных методов нет - я их и не предлагаю, мой док слишком примитивный что бы давать что-то конкретное - там основная идея.

Evgeniy
23.07.2017
17:46:24
если эта ситуация впервые

Sergey
23.07.2017
17:46:33
давай я просто приведу тебе пример реальный

Evgeniy
23.07.2017
17:46:35
то разработчик делает research

f4rt~
23.07.2017
17:46:42