Что такое нефункциональные требования (NFR)?
Нефункциональные требования (Non-Functional Requirements, NFR) – требования, описывающие как система должна работать (качество), а не что она должна делать (функции). NFR определяют архитектуру не меньше, чем бизнес-требования.
Основные категории NFR
1. Производительность (Performance)
- Время отклика (Response Time): “API-метод должен отвечать за < 200 мс (P95)”.
- Пропускная способность (Throughput): “Система должна обрабатывать 1000 платежей в секунду”.
- Задержка (Latency): “End-to-end задержка < 500 мс”.
2. Доступность (Availability)
- SLA: “99.95% uptime = не более 4.38 часов простоя в год”.
- RTO (Recovery Time Objective): максимальное время восстановления после сбоя.
- RPO (Recovery Point Objective): максимально допустимый объём потерянных данных (измеряется во времени).
3. Масштабируемость (Scalability)
- “Система должна выдерживать 10-кратный рост нагрузки за 6 месяцев”.
- Горизонтальное масштабирование без архитектурных изменений.
4. Безопасность (Security)
- Аутентификация и авторизация (OAuth2, JWT).
- Шифрование данных at rest и in transit (TLS).
- Соответствие стандартам (PCI DSS для карточных данных, GDPR для персональных данных).
- Журналирование всех критичных операций (audit log).
5. Надёжность (Reliability)
- Отказоустойчивость – работа при сбое отдельных компонентов.
- Консистентность данных – отсутствие потерь транзакций.
6. Наблюдаемость (Observability)
- Логирование (ELK stack).
- Метрики (Prometheus + Grafana).
- Трассировка (Jaeger, Zipkin).
7. Сопровождаемость (Maintainability)
- Читаемость кода, покрытие тестами.
- Документация API и архитектурных решений.
Как фиксировать NFR
Каждое нефункциональное требование должно быть измеримым. Расплывчатое “система должна быть быстрой” бесполезно. Вместо этого:
Пример
Требование: Время отклика API создания платежа
Метрика: P95 < 300 мс при нагрузке 500 RPS
Измерение: JMeter / Gatling нагрузочные тесты
Мониторинг: Prometheus histogram + Grafana dashboard
Итог
NFR определяют архитектурные решения. Требование “99.99% uptime” диктует резервирование, мультизональный деплой, автоматический failover. Требование “обработка 10 000 RPS” диктует горизонтальное масштабирование и асинхронную обработку. Без явно зафиксированных NFR архитектура строится на догадках.
На собеседовании: Интервьюер ожидает, что вы назовёте конкретные измеримые примеры NFR (P95 latency, SLA в процентах), а не абстрактные “быстро и надёжно”. Частая ошибка – забывать про наблюдаемость и сопровождаемость, сосредотачиваясь только на производительности.