Skip to content
@QBDevelopment

QBDevelopment

Quartz

Blockchain

Development

DigitalOcean Referral Badge


Example

📄 Техническое задание (ТЗ)


1. 📌 Общая информация

  • Название проекта: Сервис асинхронной обработки событий
  • Версия ТЗ: v1.0 (2025-08-09)
  • Ответственные лица:

2. 🎯 Цели проекта

Цель: Разработать высокопроизводительный сервис, который будет обрабатывать не менее 50 000 событий в секунду
с задержкой не более 200 мс, обеспечивая масштабируемость и отказоустойчивость.


3. 🛠 Область применения

Сервис используется в инфраструктуре микросервисов для обработки событий из внешних систем.

Целевая аудитория: DevOps-инженеры, backend-разработчики, администраторы.


4. 🔧 Требования к функционалу

4.1 Основные функции

4.1.1 Импорт конфигурации из YAML

  • Вход: путь к файлу (строка UTF-8, абсолютный или относительный путь)
  • Выход: структура AppConfig
  • Ошибки:
    • ❌ Файл отсутствует
    • ❌ Неверный формат YAML
    • ❌ Нет прав на чтение файла

4.1.2 Асинхронная обработка событий

  • Вход: JSON-массив событий (см. пример ниже)
  • Выход: JSON-отчёт с результатами
  • Ошибки:
    • ❌ Неверный формат входных данных
    • ❌ Превышение лимита размера запроса
    • ❌ Ошибка записи в базу данных

5. 📈 Нефункциональные требования

  • Производительность:50 000 событий/с
  • Надёжность: SLA 99.9%
  • Безопасность: шифрование (TLS 1.3), JWT-аутентификация
  • Масштабируемость: горизонтальное масштабирование
  • Совместимость: Rust ≥ 1.75, Linux x86_64, PostgreSQL ≥ 14

6. 🏗 Архитектурные и технологические ограничения

  • Язык: Rust
  • Async runtime: Tokio
  • ORM: SQLx (async)
  • Формат логов: JSON-structured logs
  • Запреты:
    • 🚫 Не использовать unwrap() и expect() в production-коде
    • 🚫 Не использовать глобальное состояние
    • 🚫 Не использовать mod.rs

7. 📂 Примеры входных/выходных данных

7.1 Пример входных данных (JSON)

```json [ { "event_id": 1, "type": "click", "timestamp": "2025-08-09T12:00:00Z" }, { "event_id": 2, "type": "view", "timestamp": "2025-08-09T12:00:05Z" } ] ```

7.2 Пример выходных данных (JSON)

```json { "processed": 2, "errors": 0, "duration_ms": 150 } ```


8. 🔌 Интерфейсы

8.1 CLI команды

```bash app process --input ./events.json --output ./report.json app config --set max_threads=8 ```

8.2 REST API (OpenAPI спецификация)

  • POST /events — загрузка и обработка событий
  • GET /status — получение статуса сервиса

9. 🧪 Требования к тестированию

  • Unit-тесты: ≥ 80% покрытия
  • Интеграционные тесты: API + работа с БД
  • Нагрузочные тесты: ≥ 50 000 событий/с
  • Граничные кейсы:
    • Пустой входной массив
    • Максимально допустимый размер запроса
    • Некорректный JSON

10. ✅ Критерии приёмки

Система готова, если:

  1. Обрабатывает 50 000 событий/с с задержкой < 200 мс
  2. Все тесты проходят успешно
  3. API соответствует спецификации
  4. Логи — в формате JSON
  5. В production-режиме нет паник

11. 📅 Сроки и этапы

Этап Описание Дата завершения
1 Архитектура 2025-08-20
2 Импорт конфигурации 2025-08-30
3 Обработка событий 2025-09-15
4 Тестирование 2025-09-25

12. 📎 Приложения

  • Схема архитектуры
  • ER-диаграмма БД
  • Глоссарий терминов

ℹ️ Примечание: Любые изменения в ТЗ фиксируются в новой версии с датой изменения.

Popular repositories Loading

  1. .github .github Public

    1

Repositories

Showing 1 of 1 repositories

Top languages

Loading…

Most used topics

Loading…