172 похожих чатов

У тебя же не возникает вопросов, как мокать для тестирования

своего кода другой микросервис?

14 ответов

16 просмотров

Нет. Но как в хранимке делать и мокать потом в тесте обращение к другим сервисам - возникает

Dmitriy Sviridov
Нет. Но как в хранимке делать и мокать потом в тес...

А дай пример того как хранимка обращается к внешнему сервису. Конкретно у тебя.

Alexander- Автор вопроса
Dmitriy Sviridov
Нет. Но как в хранимке делать и мокать потом в тес...

А у тебя ещё и хранимка в другой сервис ходит, а не только в базу?

Alexander
А у тебя ещё и хранимка в другой сервис ходит, а н...

Вот хранимка, ходящая в другой сервис - это криминал уже...

Alexander
А у тебя ещё и хранимка в другой сервис ходит, а н...

У меня вообще хранимок нет. Но если бизнес-логику делать на хранимках, то это вполне себе реальный кейс

Dmitriy Sviridov
У меня вообще хранимок нет. Но если бизнес-логику ...

Ну тогда функция подключения к внешнему сервису в отдельный пакет и махинации с search_path. Чем тебе не мок?

Alexander- Автор вопроса
Dmitriy Sviridov
У меня вообще хранимок нет. Но если бизнес-логику ...

В хранимках надо делать ту бизнес-логику, которая, максимум, касается только данных в базе. Все остальное - это уже однозначно работа для бэкенда на нормальном языке

Alexander
В хранимках надо делать ту бизнес-логику, которая,...

Тогда какой смысл бизнес-логику так размазывать? Часть будет в коде, часть в базе...

Alexander- Автор вопроса
Dmitriy Sviridov
Тогда какой смысл бизнес-логику так размазывать? Ч...

Потому что в некоторых случаях имеет смысл представить БД другим микросервисам не кишками наружу, а в виде микросервиса-хранилища. Например, когда тебе надо, чтобы доступ к данным получали несколько сервисов. Можно оформить интерфейс к данным в виде сервиса-обертки на полноценном языке, а можно в виде хранимок, и пустить другие сервисы прям базе (разрешив работать только через интерфейс хранимок, разумеется).

Alexander
Потому что в некоторых случаях имеет смысл предста...

Если так, то да. Но, опять-таки, если учитывать, что в хранимке нельзя делать обращение к внешним сервисам, то это всё годится лишь для совсем каких-то простейших случаев, где запросы строго в одну БД и больше ничего нет.

Alexander- Автор вопроса
Dmitriy Sviridov
Если так, то да. Но, опять-таки, если учитывать, ч...

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

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта