https://github.com/nekishdev/notifications_sprint_1
Просим прощения, в этом спринте в связи с работой и другими обстоятельствами, не успели до конца качественно подготовить проект. Хочу заранее написать какие замечания мы сами видим и как бы мы их решили, если бы было больше времени.
- Сейчас шедулер отправляет только единичные письма. Не успели дописать, чтобы он брал рассылки и по каждому адресу пулял в апи запрос send.
- Воркер, который отправляет письма, жёстко завязан на mail. Вместо этого нужно внедрить абстракцию типа Sender, и сделать MailSender::Sender , и прокидывать нужный класс через DI, чтобы код был завязан только на абстракцию.
- Не внедрены рассылки по шаблону. Мы бы сделали так. В админке хранятся шаблоны. И тут 2 варианта: либо в шаблоне только данные юзера, либо другие какие-то данные (чеки, бонусы и тд). И скорее всего первый вариант это не из реальной жизни. Ориентируясь на второй вариант, у нас в админке будут лежать шаблоны. Если нужный сервис хочет отправить письмо по шаблону , он закидывает в отдельную очередь сообщение с кодом шаблона и данными для рендера. Воркер из этой очередь вычитывает это сообщение, из админки достает тело шаблона, рендерит его с данными и результат отправляет в апи нотификации, где оно закинется уже в очередь для отправки. Если сервису нужно быстро отдавать ответ, но при этом нужно отправить письмо с кучей разных данных, то это можно сделать через другую очередь, которая рядом с этим сервисом будет лежать и собирать данные для шаблона
- Создать общую сеть чтобы сервисы могли достучаться друг до друга:
docker network create backend-external(сетьbackend-externalуже прописана в env всех сервисов)