Вебторика
Главная/Журнал/Архитектура

Автоматический выключатель в B2B-порталах

Как сохранить 100% доступность при падении 1С — разбор практической реализации на Node.js с примерами кода.

Архитектура5 минутКоманда ВебторикаОпубликовано 21 августа 2026 г.· Обновлено 28 августа 2026 г.
высокая нагрузкаавтоматический выключательB2B

Если 1С недоступна 2 часа ночью, а портал должен работать 24/7 — что делать? Разбираем паттерн автоматического выключателя на примерах из B2B.

Суть паттерна

Три состояния. Закрыто — всё работает. Открыто — сервис недоступен, все запросы получают резервный ответ. Полуоткрыто — пробуем один запрос, если прошёл — возвращаемся в Закрыто.

Зачем в B2B

Сайт показывает остатки из 1С. 1С недоступна ночью — сайт отдаёт ошибки или нулевые остатки. С автоматическим выключателем: 3 ошибки подряд → система переключается на кэш последних данных и добавляет пометку «данные могут быть неактуальны». Пользователь продолжает работать.

Реализация на Node.js

Библиотека opossum. Настройки: timeout 5 секунд, errorThresholdPercentage 50, resetTimeout 30 секунд. Резервный ответ: данные из Redis-кэша, обновляемого при каждом успешном ответе 1С. Если кэш пуст (первый запуск) — структура с пустыми полями и флагом stale: true, интерфейс показывает предупреждение.

Заказы

Никогда не идут напрямую в 1С. Схема: заказ → очередь PostgreSQL → «Принят в обработку» → обработчики создают документ в 1С при восстановлении. Если 1С недоступна 2 часа — заказы догоняются за 10 секунд.

Мониторинг

Три уровня оповещений. Информационный: автоматический выключатель в Полуоткрытом состоянии — запись в журнал. Предупреждение: выключатель открыт больше 5 минут — оповещение в Telegram. Критичный: открыт больше 30 минут или очередь заказов > 100 — звонок дежурному.

Метрики реального проекта

Логистический B2B-портал. Время отклика при недоступности 1С: 40 мс (было — превышение времени ожидания в 5 секунд). Потерянные заказы за ночную обработку: 0 (было 3–5). Годовая доступность — на уровне договорного SLA, без инцидентов, приведших к простоям.

Чек-лист внедрения

  1. Определите критичные внешние зависимости.
  2. Для каждой — свой автоматический выключатель с индивидуальными порогами.
  3. Резервный ответ должен возвращать корректные данные (не undefined).
  4. Все изменения — через очередь, не через синхронный вызов.
  5. Мониторинг состояния выключателя обязателен.
  6. Chaos Monkey: принудительно гасите 1С в тестовой среде.

Выводы

Автоматический выключатель обязателен для систем с внешними зависимостями. В B2B это разница между «сайт упал» и «сайт работает с задержкой». При правильной реализации пользователь не замечает сбоя.

Читать дальше

Оценка за 1 рабочий день

Стоимость и план реализации — по заявке.