Ответ
Нефункциональные требования (NFR) — зона ответственности всей команды, но ключевые роли распределены так:
- Product Owner / Бизнес-аналитик — формулирует NFR (например, нагрузка 1000 RPS, отказоустойчивость 99.9%).
- Архитектор / Tech Lead — проектирует решение под эти требования (выбор СУБД, кеширование, балансировка).
- Разработчики — реализуют (например, пишут код с ретраями для отказоустойчивости).
- DevOps / SRE — обеспечивают инфраструктуру (мониторинг, автоскейлинг).
- QA — проверяют NFR через нагрузочное тестирование.
Пример кода для NFR (отказоустойчивость):
import requests
from retrying import retry
@retry(stop_max_attempt_number=3, wait_fixed=2000)
def call_external_service():
response = requests.get("https://api.example.com")
response.raise_for_status()
return response.json()
PM координирует процесс, следит за соблюдением NFR в рамках сроков и бюджета.