Перейти к содержимому
Эксплуатация
Эксплуатация

Среды, наблюдаемость и восстановление

Требования к будущему production-контуру. Пороговые значения и дежурства не выдумываются: они должны быть согласованы. Портал не изображает работающий мониторинг.

Среды

Development

Локальная разработка, общее состояние, быстрые проверки.

Локальные тестовые значения.

Test

Симуляторы CSMS/платежей/кассы, интеграционные тесты.

Отдельные тестовые ключи.

Pilot

Физическая станция, ограниченная группа пользователей, приёмка.

Пилотные ключи и отдельный доступ.

Production

Рабочий сервис после решения D01–D11 и юридической проверки.

Секреты в защищённом хранилище, ротация.

Наблюдаемость

МетрикаЕдиницаИсточникПорог / реакция
Доступность backend% / минутыМониторингПорог и дежурство — открытая договорённость
Возраст последней телеметриисекундыMeterSample / CSMSПо порту и станции
Успешные Start/Stopдоля и длительностьCommandРост тайм-аутов
Тайм-ауты CSMSшт/минАдаптер CSMSПорог не утверждён
Платежи в промежуточном статусешт и суммаPaymentОчередь сверки
Повторные webhooksштWebhook-журналРост ошибок подписи
Зависшие holds и резервыштSlotHold / WalletHoldИстечение и освобождение
Сессии без финальных показанийштChargingSessionСверка
Очередь чеков и ошибкиштReceiptПовтор и разбор
Расхождения журналаштWalletEntry / операцииФинансовая сверка
Конфликты календаряштReservationРасследование
Обращения без ответаштSupportTicketSLA поддержки

Для каждой метрики нужно определить владельца, порог, окно и действие. Численные пороги, кроме явно приведённых в исходных ориентирах, — открытая эксплуатационная договорённость.

Структурированные логи

Обязательные поля
level, timestamp, service, environment, correlation ID, entity ID, event, safe error code.
Не логировать
OTP, токены, пароли, полные платёжные реквизиты и лишние персональные данные.
Корреляция
Один путь связывает пользователя, платёж, backend и CSMS.
Аудит ≠ лог
Аудит хранит изменения и причины; лог — техническое событие.
Пример безопасной записи (вымышленная)
{
  "level": "warn",
  "timestamp": "2026-10-24T09:14:03.120Z",
  "service": "charging-api",
  "environment": "test",
  "correlationId": "corr-2409-sess-3001",
  "entity": "ChargingSession",
  "entityId": "SESS-3001",
  "event": "command.timeout",
  "code": "COMMAND_PENDING",
  "durationMs": 15000
}
Значения демонстрационные. В записи нет секретов, OTP и платёжных реквизитов.

Резервное копирование

Резервная копия
Регулярная копия PostgreSQL и конфигураций без секретов в незащищённом виде.
Восстановление
Проверяется на отдельной среде, а не только по наличию файла.
RPO/RTO
Требуют решения заказчика; портал не выдаёт их за утверждённые.
Проверка
Протокол восстановления и список обнаруженных ограничений.

Публикация и контент

Production build
Сборка Next.js, проверка прямых маршрутов и отсутствия утечки stack trace.
Кэширование
Статические документы и диаграммы могут кэшироваться; деньги и календарь — нет.
Индексация
Портал сейчас помечен noindex; для публичного размещения правило меняется осознанно.
Обновление контента
Правки в content-модулях, затем lint, typecheck, test и build.

Что остаётся открытым

Пороги и дежурства. Нужен владелец, окно реакции и процесс эскалации.
RPO/RTO. Нужен ответ заказчика и проверка восстановления.
SLA провайдеров. Комиссии, лимиты и доступность внешних сервисов.
Ответственные за публикацию. Apple/Google аккаунты, метаданные и модерация.
Какие метрики нужно собирать в реальной системе
Метрики и пороги на портале — проектное описание, а не живые показатели. В рабочей системе предстоит согласовать набор метрик: доступность API, время запуска и остановки зарядки, доля неуспешных оплат, задержка телеметрии, длина очереди чеков и возраст незакрытых инцидентов.