@oop_ru

Страница 298 из 785
Sergey
23.07.2017
17:31:38
получается у тебя фронт 1->1 бэкэнд 1->N бэкэнд-> база
это нормальная схема, тут больше проблема с неймингом

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

Sergey
23.07.2017
17:31:56
нахера в этой цепочке 2 бэкенда и прослойка эта?
что у тебя "2 бэкэнда"? две хрени общающиеся по http ?

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
конкретную стори с новостями, комментариями и польльзователями привели
ну и сверху модуль API который просто дергает методы объектов из этих трех модулей.

и собирает из этого 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 таки медленнее джойнов в базе.

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
просто я понимаю в реальности от нас мало чего зависит
вспомнил замечательную аналогию, с clean code, про то, как мы должны защищать код и про врача которого пациент торопит не мыть руки, потому что пациент не знает о последствиях, а врач знает

Страница 298 из 785