Size: a a a

NestJS — русскоязычное сообщество

2020 March 06

И

Илья | 😶 in NestJS — русскоязычное сообщество
Andrey Melikhov
Всю бизнес-логику переносить в бэкенды :)
Не дублировать валидации, не считать комиссии на клиенте (в браузере)
Всегда должен быть только один источник правды
Спасибо, записал себе
Как смотрите на идею чтобы спустя время собрать команду разработчиков и переносить какие-то фичи на другой язык ? А ноду затем юзать просто как "прослойку", ведь данные она всё равно отдаст, а где они калькулироваться будут уже не дело клиента
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
Dilame Bowzee
А как общаетесь с бэкендом?
RPC-like API с ответом в JSON (и иногда в XML, наследие CORBA)
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
Илья | 😶
Спасибо, записал себе
Как смотрите на идею чтобы спустя время собрать команду разработчиков и переносить какие-то фичи на другой язык ? А ноду затем юзать просто как "прослойку", ведь данные она всё равно отдаст, а где они калькулироваться будут уже не дело клиента
Я же не знаю твою систему и твои задачи. Да, так можно делать, если нужно.
источник

OR

Oleg R. in NestJS — русскоязычное сообщество
Andrey Melikhov
Тогда фактически у тебя бд превращается в микросервис.
Это нормально, гугли database IS THE service pattern. БД выступает в роли микросервиса со своим публичным апи в виде хранимок. Знаю одного там архитектора компании с прибылью в миллионы долларов в наносекнду, который даже прямо пропагандировал такой подход в отдельно взятых случаях
источник

OR

Oleg R. in NestJS — русскоязычное сообщество
Dilame Bowzee
Да, так и есть. Уместность такого подхода сильно зависит от того, насколько приложение датацентрично. Если это OLTP - то нужна транзакционная БД как ни крути. Если брать БД, то брать крутую. А если взял крутую - так надо брать всё, что она даёт, и очень велика вероятность, что, оказывается, ничего другого и не нужно.
Внезапно выясняется, что ты можешь производить там точные вычисления с запредельным кол-вом знаков после запятой. Идеально для подсчёта денег. Собственно, много банков это и используют.
Дальше выясняется, что всё, что происходит в хранимке - транзакция. Так что можно сделать таблицу истории пополнений, инсерт в которую провоцирует реферальное начисление, изменение закэшированного баланса, автоматическое подключениие услуги. Во внешнем клиенте это всё выглядело бы дико убого - надо стартануть транзакцию, посылать по одному запросу, закрывать транзакцию. А тут просто три запроса подряд.
Потом выясняется, что постгрес умеет и в реалтайм - LISTEN/NOTIFY.
А ещё у него есть вьюхи - и на апдейт/инсерт/делит во вьюху можно повесить триггер!
А ещё у него есть материализованные вьюхи... а ещё, а ещё... и в итоге ты обмазываешься всеми этими фичами, и прилипаешь к нему намертво. Перейти потом сложно. Но на построениие всего этого у тебя ушло раз в 5-10 меньше времени и сил,  работает это всё намного стабильнее и быстрее.
Брат, плюсую дико тебе. Относительно недавно приходилось писать детский процессинг, описал всю доменную область в бд, накинул хранимки, вьюхи, материализованные вьюхи, слушатели. Поставил на чтение перед постгресом хасуру со всякими политиками на чтение и второй сервак аполло для вызова мутаций через готовые хранимки. По ощущениям это был один из самых эффективных проектов с точки зрения трудозатратности. Не надо открывать никаких транзакций, описывать в коде, чтобы вместе с переводом списывалась комиссия, все уже решается на уровне базы, вызывай хранимку и все. Красота

Бэк выступает в качестве тонкого клиента к бд, где уже хрянятся все знания и правила работы предметной области
источник

АН

Алибек Наурызбаев in NestJS — русскоязычное сообщество
Всем доброе время  суток ! Вопрос
Я сам разрабатывал на nodejs backend использовали express
Сейчас стоит задача разработки микросервисной архитектуры передомной выбор express js  и nest ts что посоветуете на транспорте планируем использовать kafka
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
Oleg R.
Это нормально, гугли database IS THE service pattern. БД выступает в роли микросервиса со своим публичным апи в виде хранимок. Знаю одного там архитектора компании с прибылью в миллионы долларов в наносекнду, который даже прямо пропагандировал такой подход в отдельно взятых случаях
Так я не спорю. Я против хранимок только как способа частично размазать бизнес-логику, если мы рассматриваем бд как сервис с API это годный паттерн
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
Алибек Наурызбаев
Всем доброе время  суток ! Вопрос
Я сам разрабатывал на nodejs backend использовали express
Сейчас стоит задача разработки микросервисной архитектуры передомной выбор express js  и nest ts что посоветуете на транспорте планируем использовать kafka
Как думаешь, что тебе посоветуют в чате про nest? :)
источник

И

Илья | 😶 in NestJS — русскоязычное сообщество
Andrey Melikhov
Как думаешь, что тебе посоветуют в чате про nest? :)
пхп
источник

АН

Алибек Наурызбаев in NestJS — русскоязычное сообщество
😂 ну в силу того что мои компетенции равны 0 в nest и ts хотел узнать сильные стороны
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
А как фреймворк влияет на твою разработку микросервисной архитектуры? Всё, что можно сделать на nest можно сделать и в express. Если тебе нужен ts и ioc-контейнер их коробки, то бери nest — больше вероятность, что приложение будет легче поддерживать и развивать.
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
Andrey Melikhov
Так я не спорю. Я против хранимок только как способа частично размазать бизнес-логику, если мы рассматриваем бд как сервис с API это годный паттерн
Опять же с большим но — если скорость важнее поддерживаемости.
источник

OR

Oleg R. in NestJS — русскоязычное сообщество
Andrey Melikhov
Так я не спорю. Я против хранимок только как способа частично размазать бизнес-логику, если мы рассматриваем бд как сервис с API это годный паттерн
Ну вот да, чаще бд это ток хранилище а бизнес правила реализованы в коде сервера, эдакая анемичная модель. А тут и данные и бизнес правила вместе и не размазаны на сервер/бд. Про поддерживаемость - да, часть работы перекладывается на спеца по бд, хотя сложность описания бизнес правил в бд зависит от проекта
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
источник

OR

Oleg R. in NestJS — русскоязычное сообщество
Мой опыт говорит об обратном)
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
Ну это DBA Avito
источник

OR

Oleg R. in NestJS — русскоязычное сообщество
Andrey Melikhov
Ну это DBA Avito
Ну и у меня проект был не авито)) где-то зашло, где-то – нет
источник

DZ

Dmitry Zakharov in NestJS — русскоязычное сообщество
Все DBA хотят логику у себя хранить
источник

DZ

Dmitry Zakharov in NestJS — русскоязычное сообщество
В то время как разрабы считают бд тока исключительно помойкой куда данные поступают и никакой логики там не надо)
источник

DZ

Dmitry Zakharov in NestJS — русскоязычное сообщество
источник