Dev Notes [RU]
10 subscribers
10 links
Добро пожаловать на мой канал! 🌟
Здесь я делюсь своими мыслями, идеями, хаками и захватывающими открытиями.

EN версия здесь: @thedevnotes
Download Telegram
Сервис отправки уведомлений

Добрый день, друзья!

Сегодня я расскажу о своем опыте в разработке сервиса для отправки уведомлений. Однажды ко мне обратился клиент из Канады с просьбой разработать удобный сервис уведомлений с API для медицинского приложения. Его интересовали 3 способа коммуникации: SMS, Email и Push.

Проект заинтересовал меня, и я решил взять его в работу, несмотря на отсутствие четкого ТЗ. После выяснения всех деталей с клиентом, я приступил к написанию ТЗ, проектированию архитектуры и последующей разработке. Было решено использовать Node.js и микросервисы. Каждый способ коммуникации был реализован в виде отдельного сервиса.

Структура микросервисов:
Микросервисная архитектура была выбрана для обеспечения гибкости и масштабируемости системы. Каждый из микросервисов отвечал за один способ коммуникации (SMS, Email или Push), что позволило эффективно управлять каждым из них и масштабировать их по мере необходимости. Микросервисы взаимодействовали друг с другом с использованием RabbitMQ, что обеспечивало надежную передачу сообщений между ними.

Безопасность:
Безопасность данных и обработки уведомлений была одним из приоритетов. Я использовал JWT для аутентификации и авторизации запросов к API. Это позволило обеспечить доступ только авторизованным пользователям и предотвратить несанкционированный доступ к сервису.

Сложности и решения:
В ходе разработки возникали различные сложности, включая оптимизацию расходов на отправку SMS в разных странах. Было проведено тщательное сравнение различных вариантов и выбрано оптимальное решение, которое позволило клиенту сэкономить средства.
Отправку Email осуществляли через SMTP, за Push-уведомления отвечал Google Cloud Messaging (GCM), а для SMS мы использовали Twilio, как самый оптимальный.

Перспективы и будущее:
Сервис, который был разработан, стал гибким и масштабируемым, с удобным API, документацией, шаблонами сообщений и отправкой по расписанию. В будущем есть возможность расширять его функциональность и добавлять новые функции и способы отправки. Можно сказать, что получился некий аналог OneSignal, с которым тоже пришлось работать позднее.

Проект получился со следующим стеком:
NestJS, TypeScript, RabbitMQ, Mongoose, Redis, JWT

Также хочу добавить, что строить микросервисы на NestJS очень приятно. Да и в целом, я обожаю Nest. Я сделал на него ставку несколько лет назад, постепенно изучая его возможности, следя за развитием и всегда оставаясь в курсе последних новостей. Сейчас я считаю, что это один из самых перспективных фреймворков для бекенда.

#опыт #проект #nodejs #nestjs #микросервисы
🔥1