- Название проекта: Сервис асинхронной обработки событий
- Версия ТЗ:
v1.0
(2025-08-09) - Ответственные лица:
- Заказчик: Иван Иванов — [email protected]
- Архитектор: Пётр Петров — [email protected]
- Тимлид: Сергей Сергеев — [email protected]
Цель: Разработать высокопроизводительный сервис, который будет обрабатывать не менее
50 000
событий в секунду
с задержкой не более200 мс
, обеспечивая масштабируемость и отказоустойчивость.
Сервис используется в инфраструктуре микросервисов для обработки событий из внешних систем.
Целевая аудитория: DevOps-инженеры, backend-разработчики, администраторы.
- Вход: путь к файлу (строка UTF-8, абсолютный или относительный путь)
- Выход: структура
AppConfig
- Ошибки:
- ❌ Файл отсутствует
- ❌ Неверный формат YAML
- ❌ Нет прав на чтение файла
- Вход: JSON-массив событий (см. пример ниже)
- Выход: JSON-отчёт с результатами
- Ошибки:
- ❌ Неверный формат входных данных
- ❌ Превышение лимита размера запроса
- ❌ Ошибка записи в базу данных
- Производительность: ≥
50 000
событий/с - Надёжность: SLA
99.9%
- Безопасность: шифрование (TLS 1.3), JWT-аутентификация
- Масштабируемость: горизонтальное масштабирование
- Совместимость: Rust ≥
1.75
, Linux x86_64, PostgreSQL ≥14
- Язык: Rust
- Async runtime: Tokio
- ORM: SQLx (async)
- Формат логов: JSON-structured logs
- Запреты:
- 🚫 Не использовать
unwrap()
иexpect()
в production-коде - 🚫 Не использовать глобальное состояние
- 🚫 Не использовать
mod.rs
- 🚫 Не использовать
```json [ { "event_id": 1, "type": "click", "timestamp": "2025-08-09T12:00:00Z" }, { "event_id": 2, "type": "view", "timestamp": "2025-08-09T12:00:05Z" } ] ```
```json { "processed": 2, "errors": 0, "duration_ms": 150 } ```
```bash app process --input ./events.json --output ./report.json app config --set max_threads=8 ```
POST /events
— загрузка и обработка событийGET /status
— получение статуса сервиса
- Unit-тесты: ≥ 80% покрытия
- Интеграционные тесты: API + работа с БД
- Нагрузочные тесты: ≥ 50 000 событий/с
- Граничные кейсы:
- Пустой входной массив
- Максимально допустимый размер запроса
- Некорректный JSON
Система готова, если:
- Обрабатывает
50 000
событий/с с задержкой< 200 мс
- Все тесты проходят успешно
- API соответствует спецификации
- Логи — в формате JSON
- В production-режиме нет паник
Этап | Описание | Дата завершения |
---|---|---|
1 | Архитектура | 2025-08-20 |
2 | Импорт конфигурации | 2025-08-30 |
3 | Обработка событий | 2025-09-15 |
4 | Тестирование | 2025-09-25 |
- Схема архитектуры
- ER-диаграмма БД
- Глоссарий терминов
ℹ️ Примечание: Любые изменения в ТЗ фиксируются в новой версии с датой изменения.