Size: a a a

2020 October 06

ПГ

Павел Г. in symfony
В целом под вычисляемыми свойствами я имел ввиду результат вычислений, который нужен и врайт и рид. Т.е. это даже не поле в сущности.
источник

D

Dmitry in symfony
Павел Г.
Понял, "вычисляемых свойств" вообще не должно быть, тот же active должно быть записано в хранилище в конечном итоге.
Но тогда не совсем понимаю, как хранить какие то вещи, которые зависят от даты или других динамических показателей? Например добавляем 3 условие активности: статья активна только 10 дней со дня создания. Всю базу ежедневно перебирирать кроном чтобы устанавливать прошло 10 дней или нет?
да, потому что в противном случае у вас рид модель будет решать активна ли статья, но записать это решение не в состоянии
получается рассинхронизация данных - врайт знает что статья неактивна (после подгрузки данных из хранилища и выполнения операций над данными (прошло 10 дней)), рид модель знает что статья активна (аналогичные операции выполнит), а в хранилище это не зафиксировано
в целом вы конечно можете поставить логику isActive и туда и туда, но лично я предпочитаю рид модель использовать в тупую, без особой логики, чтобы сохранять единую точку правды для изменения данных
источник

ВУ

Валентин Удальцов... in symfony
Dmitry
я все еще не понимаю вашу идею. LAX действует на браузер, слать или не слать куку
каким образом это распределит траффик на нужный сервис за хапрокси ?
Ты же про csrf токены говорил. Они про безопасность, причём тут балансировка вообще?
источник

SZ

Sergey Zolotov in symfony
Dmitry
я все еще не понимаю вашу идею. LAX действует на браузер, слать или не слать куку
каким образом это распределит траффик на нужный сервис за хапрокси ?
никак) но sticky session довольно хреновая затея
источник

D

Dmitry in symfony
Валентин Удальцов
Ты же про csrf токены говорил. Они про безопасность, причём тут балансировка вообще?
еще раз, в симфони есть поддержка csrf токенов, они хранятся в сессии, сессия хранится на сервере1
есть балансировщик, запрос может пойти на любой сервер за ним, а их 2+
получим что токен верный, запрос пришел на другой сервер, там сессии этого пользователя нет - запрос обломается
sticky session это решают, не хочу их использовать
единое хранилище сессий тоже так себе вариант ибо создает единую точку отказа и нагрузка и масштабирование

вопрос был в том что может я где-то недочитал документацию и встроенный cqrs симфы поддерживает масштабирование на разные сервера и тп
источник

ВУ

Валентин Удальцов... in symfony
Dmitry
еще раз, в симфони есть поддержка csrf токенов, они хранятся в сессии, сессия хранится на сервере1
есть балансировщик, запрос может пойти на любой сервер за ним, а их 2+
получим что токен верный, запрос пришел на другой сервер, там сессии этого пользователя нет - запрос обломается
sticky session это решают, не хочу их использовать
единое хранилище сессий тоже так себе вариант ибо создает единую точку отказа и нагрузка и масштабирование

вопрос был в том что может я где-то недочитал документацию и встроенный cqrs симфы поддерживает масштабирование на разные сервера и тп
Ну а я тебе говорю: csrf токены могут быть не нужны вообще, если юзаешь samesite грамотно.
источник

D

Dmitry in symfony
Валентин Удальцов
Ну а я тебе говорю: csrf токены могут быть не нужны вообще, если юзаешь samesite грамотно.
вы видели поддержку этой фичи по браузерам ?
источник

D

Dmitry in symfony
мне всех остальных юзеров обречь на страдания ?:)
источник

ВУ

Валентин Удальцов... in symfony
Если тебе так нужно горизонтальное масштабирование, смотри в сторону jwt токенов и stateless модели.
источник

AD

Andrey Dembitskyi in symfony
Dmitry
еще раз, в симфони есть поддержка csrf токенов, они хранятся в сессии, сессия хранится на сервере1
есть балансировщик, запрос может пойти на любой сервер за ним, а их 2+
получим что токен верный, запрос пришел на другой сервер, там сессии этого пользователя нет - запрос обломается
sticky session это решают, не хочу их использовать
единое хранилище сессий тоже так себе вариант ибо создает единую точку отказа и нагрузка и масштабирование

вопрос был в том что может я где-то недочитал документацию и встроенный cqrs симфы поддерживает масштабирование на разные сервера и тп
источник

D

Dmitry in symfony
Sergey Zolotov
никак) но sticky session довольно хреновая затея
и это я понимаю, плюсы и минусы тоже знаю
судя по всему придется генерировать токен при авторизации, добавлять его в httponly cookie, слать клиентом этот токен в хедере
и на сервере сравнивать данные из куки и хедера

пока другого адекватного ничего не придумал, без использования хранилищ и тп
источник

D

Dmitry in symfony
спасибо, гляну
источник

D

Dmitry in symfony
Валентин Удальцов
Если тебе так нужно горизонтальное масштабирование, смотри в сторону jwt токенов и stateless модели.
jwt токены хранятся в httponly куке, они не спасут от csrf атаки
источник

SZ

Sergey Zolotov in symfony
Dmitry
вы видели поддержку этой фичи по браузерам ?
довольно большая поддержка. и хром ругается сильно, если куки без нее
источник

D

Dmitry in symfony
Sergey Zolotov
довольно большая поддержка. и хром ругается сильно, если куки без нее
да, хром держит с 80-й версии лакс, но требования проекта пишут что нужно поддерживать всех
поэтому и вот этот геморрой
источник

SZ

Sergey Zolotov in symfony
источник

AD

Andrey Dembitskyi in symfony
Dmitry
спасибо, гляну
Там как-то сильно заморочено, и похоже выбрали вариант с хранением на диске.

Моё мнение такое - реализация sticky sessions имеет сравнимую стоимость и хрупкость по отношению к распределённому хранилищу сессий.

Плюс давно есть возможность строить HA хранилища, где всё не упадёт от одного недоступного сервера.
источник

D

Dmitry in symfony
Andrey Dembitskyi
Там как-то сильно заморочено, и похоже выбрали вариант с хранением на диске.

Моё мнение такое - реализация sticky sessions имеет сравнимую стоимость и хрупкость по отношению к распределённому хранилищу сессий.

Плюс давно есть возможность строить HA хранилища, где всё не упадёт от одного недоступного сервера.
заморочиться можно, техники есть, я не спорю
но не хотелось бы дабы не усложнять систему преждевременно
источник

AD

Andrey Dembitskyi in symfony
Andrey Dembitskyi
Там как-то сильно заморочено, и похоже выбрали вариант с хранением на диске.

Моё мнение такое - реализация sticky sessions имеет сравнимую стоимость и хрупкость по отношению к распределённому хранилищу сессий.

Плюс давно есть возможность строить HA хранилища, где всё не упадёт от одного недоступного сервера.
И sticky session имеет дополнительные сайд-эффекты, что могут ухудшать возможности к масштабированию, что может быть важнее, чем CSRF
источник

D

Dmitry in symfony
Andrey Dembitskyi
И sticky session имеет дополнительные сайд-эффекты, что могут ухудшать возможности к масштабированию, что может быть важнее, чем CSRF
как я и сказал выше, знаю о недостатках и плюсах
изначальный вопрос был - умеет ли симфони из коробки масштабировать cqrs токены свои? (презентацию еще не изучил)
источник