← Все статьи

Архитектура сервиса пересылки уведомлений: 5 решений, которые стоит обсудить

24 мая 2026

В этой статье я разберу несколько архитектурных решений, принятых при разработке Эхофона. Не «как мы сделали», а почему именно так — с альтернативами, компромиссами и выводами.

1. Hash-роутинг вместо Next.js/React Router

Что выбрали: чистый HTML/JS с hash-роутингом (#home, #echocam, #tariffs). Никаких фреймворков.

Почему не React/Vue/Next.js:

Почему именно hash-роутинг:

Где проиграли:

Вывод: для сервиса, где основной функционал — личный кабинет пользователя (авторизованная зона), hash-роутинг — отличное решение. Для публичных SEO-страниц — статические HTML.

2. PostgreSQL вместо MongoDB

Что выбрали: реляционная БД с жёсткой схемой, внешними ключами и транзакциями.

Почему не MongoDB:

Где проиграли:

Вывод: если у вас есть деньги пользователей — берите реляционную БД. ACID-транзакции спасают от багов, которые невозможно отладить.

3. Polling вместо WebSocket

Что выбрали: клиент опрашивает сервер каждые 30 секунд (setIntervalGET /sms-forwarder/messages).

Почему не WebSocket:

Оптимизация polling'а:

Где проиграли:

Вывод: для MVP polling — отличное решение. WebSocket стоит внедрять, когда задержка в 30 секунд станет критичной для пользователей.

4. API Key для Android вместо JWT

Что выбрали: для аутентификации Android-приложения используется статический API-ключ (32 случайных байта, hex). Для веб-клиента — JWT.

Почему не JWT для Android:

Почему JWT для веба:

Вывод: гибридная модель оправдана. Для доверенных устройств — долгоживущий ключ. Для браузера — короткоживущий токен.

5. Сквозное шифрование, а не TLS до сервера

Что выбрали: сообщения шифруются на телефоне ключом, производным от пароля пользователя. Сервер хранит зашифрованные данные и не может их прочитать.

Почему не просто HTTPS:

Где проиграли:

Вывод: сквозное шифрование — это не «фича для галочки», а архитектурное решение, которое влияет на поиск, восстановление пароля и отладку. Для сервиса, который передаёт коды подтверждения и банковские SMS, это обязательный стандарт.

Итог

Каждое из этих решений — компромисс. Hash-роутинг прост, но плох для SEO. PostgreSQL надёжен, но требует дисциплины. Polling легко реализовать, но даёт задержку. API-ключи удобны для устройств, но требуют дополнительной защиты. Сквозное шифрование — стандарт безопасности, но жертвует удобством.

При создании своего сервиса не копируйте решения вслепую. Понимайте, почему выбрано именно так, и какие альтернативы были отвергнуты.

Попробуйте сервис в действии

Первые 7 дней бесплатно. Все архитектурные решения можно пощупать руками.

Попробовать →