Загружаем изображение…
✅ Решение | Архитектура · Запись к врачу
Краткий ответ:
Компоненты: Web/Mobile → API Gateway → Сервис записи → CRM (REST) + Брокер → Сервис уведомлений → Email/Push-провайдер. БД записи — у сервиса записи.
📖 Разбор:
1️⃣ Компоненты
▫️ API Gateway — единая точка входа для веба и мобилки
▫️ Сервис записи — бизнес-логика: проверка слота, создание записи, своя БД
▫️ CRM клиники — внешняя система с расписанием (REST)
▫️ Брокер сообщений — очередь событий «запись создана»
▫️ Сервис уведомлений — читает из брокера, шлёт email и push
2️⃣ Поток
Пользователь выбирает слот → Gateway → Сервис записи синхронно проверяет слот в CRM → создаёт запись у себя в БД → кладёт событие в брокер → сразу отвечает пользователю «Запись создана».
Сервис уведомлений асинхронно забирает событие и отправляет письмо и push. Если CRM упала после успешного создания записи — пользователь уже получил ответ, уведомление уйдёт позже из очереди.
3️⃣ Синхрон vs асинхрон
Синхронно (REST к CRM) — проверка и бронирование слота. Пользователь должен сразу узнать: слот свободен или занят.
Асинхронно (брокер) — уведомления. Не блокируем ответ пользователю, переживаем временные сбои email/push за счёт повторной обработки из очереди.
❌ Типичные ошибки:
▫️ Всё через синхронные вызовы — при падении push-сервиса пользователь не получит ответ о записи
▫️ CRM как единственная БД записей — потеря контроля над своими данными и зависимость от чужого SLA
▫️ Брокер для проверки слота — лишняя сложность, пользователь ждёт мгновенный результат
💡 На собеседовании важно: назвать почему граница между sync и async проходит именно здесь.