Перейти к содержанию

Ограничение ресурсов backend-приложений

Требования применяются к ресурсам процесса. Уровни обязательности определены в корневом README.md.

BE-RSRC-001. Конечные лимиты

Уровень: MUST

Применяется к: пулам, очередям, буферам, соединениям и конкурентным операциям

Каждый ресурс должен иметь конечный конфигурируемый предел, согласованный с лимитами процесса и зависимостей. Значение по умолчанию не должно означать неограниченный рост.

Обоснование

Неограниченный ресурс превращает перегрузку в отказ процесса.

Проверка

  • review конфигурации всех ресурсов;
  • нагрузочный тест достижения каждого лимита;
  • сопоставление с CPU, memory и connection limits.

Исключения

Не допускаются для ресурсов, растущих от входящей нагрузки.

BE-RSRC-002. Поведение при насыщении

Уровень: MUST

Применяется к: достижению лимита ресурса

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

Обоснование

Явная перегрузка безопаснее неконтролируемой деградации.

Проверка

  • нагрузочный тест выше ёмкости;
  • проверка статуса, времени ответа и памяти;
  • тест отсутствия вторичной очереди и retry storm.

Исключения

Не допускаются.

BE-RSRC-003. Наблюдаемость насыщения

Уровень: MUST

Применяется к: каждому ограниченному ресурсу

Должны быть доступны наблюдаемые сигналы текущего использования, предела, ожидания или отказов. Если проект выбрал метрики приложения, они должны соответствовать OBS-MET-004; допустимы также эквивалентные метрики runtime, оркестратора или платформенного компонента. Alert должен обнаруживать устойчивое насыщение до исчерпания ресурса, если оно способно нарушить SLI.

Обоснование

Лимит без измерения не позволяет отличить штатное ограничение от инцидента.

Проверка

  • запрос выбранных сигналов при нагрузочном тесте;
  • тест alert;
  • сопоставление значения метрики с фактическим ресурсом.

Исключения

Не допускаются для критичного ресурса.