Size: a a a

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

2021 July 04

АД

Александр Духновский... in NestJS — русскоязычное сообщество
Я потерял нить. С фронта он передает бинарник на один мс, потом пересылает его другому по сети. Выход в том, чтобы передавать с фронта файл сразу в нужный мс. Причем тут кеши? Или вы уже о чем-то другом говорите?
источник

ЕД

Евгений Данилов... in NestJS — русскоязычное сообщество
Первый микросервис может быть nestjs, второй - s3 который требует секретные ключи для загрузки файла. Мы не можем загрузить прямо в сервис с s3 поскольку на клиенте будем светить ключи в запросе, которые обычно одни для всех. Тут надо тогда на микросервисе  s3 придумывать еще какую-то клиентскую авторизацию jwt. Ну а если это готовый sdk, развернут как сервис, то там уж точно это будет как костыль.

Если взять докер контейнеры то это общение друг с другом (сервисов) внутри контейнеров - обычное дело и безопаснее даже, ведь все внутри происходит, не принимая внешних запросов. Это необходимость,  а не лишняя нагрузка в этом случае.
источник

АД

Александр Духновский... in NestJS — русскоязычное сообщество
Если мс, которому нужны клиентские файлы требует ключи чтобы их загрузить, то это некая архитектурная ошибка, так быть не должно. Максимум, что я мог бы допустить - это когда есть нений внешний сервис, который требует эти файла. Так работают авторизаторы KYC, фронт сперва шлет на свой бэк сканы документов, а бэк их передает внешнему авторизатору на верификацию. Хотя есть авторизаторы с апи, куда можно слать доки напрямую, чтобы не заморачиваться с политиками хранения персональных данных. Но не суть, сейчас ведь речь идет о том, что один мс должен кинуть файл другому мс в рамках одного и того же приложения.

По докер-контейнерам тоже не все так просто - это общение необходимо дискаверить. Ну не по одной ноде каждого мс ведь крутится в проде, верно? Да и кто сейчас на голых докерах проды строит - обычно все сильно сложнее. Вот пример, запросы между мс в локальном докере занимают по 30-40 млс, а в кубах эти же запросы длятся уже 1-2 секунды. Умножаем эти числа на миллиард, для наглядности
источник

ЕД

Евгений Данилов... in NestJS — русскоязычное сообщество
единственное что скажу - загружать клиентские файлы надо позволять только клиенту (сайту) а не всему интернету. Без ключей тут никуда, это не ошибка, это и безопасность и трафик. А если соединить АПИ (бэкенд сайта который загружает файлы) и агрегатор этих файлов - s3, то тут уже не будет микросервисности.
источник

АД

Александр Духновский... in NestJS — русскоязычное сообщество
да это либо сессиями, либо жвт решается
источник

АД

Александр Духновский... in NestJS — русскоязычное сообщество
Причем верифицировать это можно на проксе
источник

I

Ilya in NestJS — русскоязычное сообщество
А как реализовать?

Если можно просто сходить в апишку для клиента и получить ссылку
источник

А

Аntosha in NestJS — русскоязычное сообщество
Мы так и  делаем. Фронт отправляет запрос на pre sign url с метаданными файла, получает нужную информацию для загрузки на s3, и, после успешной загрузки  файла на облако, сообщает об этом бекенду
источник

N

Nikita in NestJS — русскоязычное сообщество
Что мешает слушать событие об загрузке с S3 не от FE, а от самого S3?
источник

I

Ilya in NestJS — русскоязычное сообщество
Ну я к тому что можно подписанный урл получать через апишку курлом и грузить что угодно
источник

А

Аntosha in NestJS — русскоязычное сообщество
Объясните,что вы имеете ввиду. Можно как-то заставить S3 оповещать сервис А про загрузку файла из сервиса Б?
источник

N

Nikita in NestJS — русскоязычное сообщество
Сервис Б тут не причем. S3 может отправлять сообщение об событиях создание, удаление файла и так далее.
На них можно подписаться как в лямде, так и в сервисе который слушает PubSub. Детали зависят от конкретного облака
источник

А

Аntosha in NestJS — русскоязычное сообщество
Для прослушивания событий нужно устанавливать веб-сокетное соединение. А взаимодействие нашего бекенда с S3 ограничивается двумя http запросами, так что не думаю,что это хорошее решение.
источник

N

Nikita in NestJS — русскоязычное сообщество
Мы с вами говорим на разных уровнях. Посему я просто закончу свою часть дискусии
источник

N

Nikita in NestJS — русскоязычное сообщество
Stream-oriented Architecture with Nest
#worth_seeing #nestjs

Докладчик – Kamil Myśliwiec, создатель Nest.js. В докладе идет речь не об #nodejs Streams, а об архитектуре реактивного приложения. Для людей ранее не работавших с реактивностью рекомендую посмотреть обзор RxJS.

В ходе доклада Камиль на пример игры сравнивает layered и stream-oriented архитектуры. Это позволяет лучше понять концепт.

Слайды
источник

KW

Kyril Wadzinski in NestJS — русскоязычное сообщество
Подскажите, пожалуйста, кто пользовался nestjs-telegraf что нужно передать в интерфейс поскольку без этого интерфейса не вызываются методы у ctx
https://nestjs-telegraf.vercel.app/docs/telegraf-methods
источник

А

Аntosha in NestJS — русскоязычное сообщество
Можешь заменить на дефолтный контекст телеграфа
import {Context} from 'telegraf'
источник

KW

Kyril Wadzinski in NestJS — русскоязычное сообщество
без типизации после вызова пишет что метод не является функцией. с типизацией ctx: Context методы не вызываются. Как быть?
источник

ИГ

Иван Готка in NestJS — русскоязычное сообщество
Всем привет, ребят, подскажите пожлст что я делаю не так... пытаюсь postgres подключить и выдаёт 2 ошибки с типами, уже менял версии sequilize и sequilise-typescript... не помогает... Вроде всё по доке сделал а на типы ругается((
источник

ИГ

Иван Готка in NestJS — русскоязычное сообщество
источник