Skip to content
@QBDevelopment

QBDevelopment

Раздел I. Русская версия (RU)

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

0. Оглавление

  1. Введение
  2. Цели и задачи
  3. Термины и определения (Глоссарий)
  4. Область применения и границы системы
  5. Требования к функциональности
  6. Нефункциональные требования (SLA, SLO/SLI, производительность)
  7. Архитектура и ограничения
  8. Модель данных и совместимость
  9. API и контракты
  10. Конфигурация, фичефлаги, миграции
  11. Безопасность и соответствие
  12. Наблюдаемость и эксплуатация
  13. Тестирование и качество
  14. CI/CD и выпуск релизов
  15. План производительности и емкости
  16. Управление изменениями
  17. Риски и допущения
  18. Процедуры инцидентов и DR/BCP
  19. Требования к документации
  20. График поставки
  21. Критерии приемки
  22. Приложения

1. Введение

Important

Цель документа — зафиксировать полный набор требований к системе, критерии приемки и эксплуатационные нормы.

Текущая версия: v1.0 (2025-08-09) Ответственные: Архитектор, Тимлид, Представитель заказчика


2. Цели и задачи

  • Обработать не менее 50 000 событий/с со средней задержкой не более 200 мс на партию.
  • Обеспечить горизонтальное масштабирование и отказоустойчивость.
  • Предоставить наблюдаемость уровня продакшн (метрики, трассировка, логи).

3. Термины и определения (Глоссарий)

  • Событие: атомарная запись о действии/факте во внешней системе.
  • Пакет: набор событий, обрабатываемых транзакционно в рамках одной операции.
  • Идемпотентность: повторный прием одного и того же события не меняет итоговый результат.
  • Exactly-once semantics: семантика, исключающая дубликаты и пропуски.

4. Область применения и границы системы

  • Взаимодействует с внешними источниками событий через HTTP/gRPC и очередь сообщений.
  • Не отвечает за восстановление исторических данных, если это не предусмотрено отдельным модулем реплея.
  • Защита от злоупотреблений: rate limiting и квоты на вход.

5. Требования к функциональности

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

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

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

  • Вход: JSON-массив событий
  • Выход: JSON-отчет (обработано, ошибки, длительность)
  • Ошибки: неверный формат; превышен лимит; ошибка записи в БД

5.3 Идемпотентность и дедупликация

  • Требуется детерминированный ключ идемпотентности
  • Обязателен дедуп по ключу в пределах временного окна

5.4 Порядок и консистентность

  • Гарантии порядка в пределах ключа партиционирования
  • Консистентность записей в БД и в очереди подтверждений

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

Категория Требование
Производительность ≥ 50 000 событий/с
Задержка p50 ≤ 200 мс; p95 ≤ 400 мс; p99 ≤ 750 мс
SLA 99.9% ежемесячно
Доступность API 99.95% для /status, 99.9% для /events
Безопасность TLS 1.3, JWT (RS256/ES256), mTLS для межсервисного
Масштабируемость Горизонтальная (N экземпляров)
Совместимость Rust ≥ 1.75; Linux x86_64; PostgreSQL ≥ 14
Хранилище P99 latency БД ≤ 20 мс на запись

SLO/SLI фиксируются в панели Grafana и ежедневно валидируются.


7. Архитектура и ограничения

  • Язык: Rust

  • Async runtime: Tokio

  • SQL: PostgreSQL с SQLx (async)

  • Очередь: Kafka/NATS (конкретизация по проекту)

  • Логи: JSON-структурированные

  • Ограничения:

    • Не использовать unwrap()/expect()/panic! в продакшн-коде
    • Минимизировать глобальное состояние
    • Не использовать mod.rs
    • :: только в use-импортах

Высокоуровневая схема (описательная):

  • Ingress: HTTP /events (REST) и Consumer очереди
  • Processor: партиционированные воркеры; транзакционные операции
  • Storage: PostgreSQL (основные данные), Redis (кэш/токены)
  • Egress: отчеты/вебхуки/аудит
  • Observability: Prometheus, OTLP, централизованные логи

8. Модель данных и совместимость

  • Схема БД версионируется миграциями; обратная совместимость не менее двух минорных версий.
  • Ключ идемпотентности: строка до 128 символов, индексирован.

Пример DTO события:

{
  "event_id": "string",
  "type": "click",
  "timestamp": "2025-08-09T12:00:00Z",
  "attributes": { "key": "value" }
}

9. API и контракты

9.1 REST API

Метод Путь Описание Коды
POST /events Прием и обработка батча событий 202, 400, 413, 429, 500
GET /status Техническое состояние сервиса 200, 500

Модель ошибок:

{
  "error": {
    "code": "PAYLOAD_TOO_LARGE",
    "message": "Request size exceeds the configured limit",
    "trace_id": "b2f1c..."
  }
}

Требования:

  • Версионирование API: заголовок X-API-Version: 1.
  • Идемпотентность: заголовок Idempotency-Key.

10. Конфигурация, фичефлаги, миграции

  • Конфигурация через YAML и переменные окружения.
  • Фичефлаги: включение новых алгоритмов через флаги с обратной совместимостью.
  • Миграции БД: прямые и обратные; атомарность и откат.

11. Безопасность и соответствие

  • TLS 1.3, строгие ciphersuites.
  • JWT: RS256/ES256, минимальный набор клеймов, истечение ≤ 15 мин.
  • mTLS для внутреннего контура.
  • Регистрация аутентифицированного субъекта в логах.
  • Политики rate limiting и защита от дубликатов.

12. Наблюдаемость и эксплуатация

Метрики Prometheus (минимум):

  • events_processed_total с лейблами результата
  • processing_latency_ms (гистограмма)
  • db_write_latency_ms
  • ingress_rate

Трейсинг: OTLP, service.name=event-processor. Логи: JSON с timestamp, level, message, trace_id, span_id.

Runbooks:

  • Повышенная задержка p95
  • Утечки соединений БД
  • Рост 429/5xx на /events

13. Тестирование и качество

  • Unit: ≥ 80% по публичным функциям и веткам ошибок
  • Интеграционные: API, БД, очередь
  • Нагрузочные: профиль равномерный и burst
  • Функциональные: требования из раздела 5
  • Безопасностные: негативные кейсы аутентификации/авторизации
  • Doctest: обязательны для публичных примеров

Запрещено использовать unwrap()/expect() в тестах, влияющих на приемку.


14. CI/CD и выпуск релизов

Pre-commit:

cargo +nightly fmt --
cargo clippy -D warnings
cargo test --all

CI:

  • Проверка форматирования/линтинга/тестов
  • Отчеты покрытия
  • Сборка образа
  • Деплой в staging, затем в prod с ручным апрувалом

Стратегии релиза:

  • Blue/Green или Canary
  • Автооткат по SLO-сигналам

15. План производительности и емкости

  • Номинальная нагрузка: 50k событий/с
  • Пики: до 2× номинала в течение 15 минут
  • Исчерпываемость ресурсов: триггеры авто-скейлинга по CPU, latency, очередям

16. Управление изменениями

  • Версионирование документа: SemVer
  • Каждое изменение — PR с рецензией архитектора
  • История версий хранится в репозитории

17. Риски и допущения

  • Порядок событий не гарантирован вне ключа партиционирования
  • Латентность внешней БД увеличивается в пиковые окна
  • Зависимости очереди и сети

18. Инциденты и DR/BCP

  • RPO ≤ 5 минут, RTO ≤ 30 минут
  • Репликация БД на горячий стенд
  • Процедуры переключения и валидации целостности

19. Документация

  • Архитектурная схема
  • ER-диаграмма
  • Описание API (OpenAPI)
  • Руководства по запуску, обновлению, откату
  • Плейбуки эксплуатации

20. График поставки

Этап Описание Срок
1 Архитектура и обзор 2025-08-20
2 Модуль конфигурации 2025-08-30
3 Ядро обработки 2025-09-15
4 Тестирование и приемка 2025-09-25

21. Критерии приемки

  1. Соответствие производительности и задержкам (раздел 6)
  2. Прохождение всех тестов и проверок качества
  3. Соответствие OpenAPI
  4. Полная наблюдаемость (метрики, трассинг, логи)
  5. Отсутствие паник и необработанных ошибок в проде
  6. Готовность runbooks и алертов

22. Приложения

  • Примеры полезной нагрузки
  • Политики rate limiting
  • Схемы развёртывания
  • Чек-листы релиза и отката

Section II. English version (EN)

Technical Specification (TS)

0. Table of Contents

  1. Introduction
  2. Objectives
  3. Glossary
  4. Scope and Boundaries
  5. Functional Requirements
  6. Non-Functional Requirements (SLA, SLO/SLI, Performance)
  7. Architecture and Constraints
  8. Data Model and Compatibility
  9. API and Contracts
  10. Configuration, Feature Flags, Migrations
  11. Security and Compliance
  12. Observability and Operations
  13. Testing and Quality
  14. CI/CD and Releases
  15. Capacity and Performance Plan
  16. Change Management
  17. Risks and Assumptions
  18. Incident Handling and DR/BCP
  19. Documentation Requirements
  20. Delivery Schedule
  21. Acceptance Criteria
  22. Appendices

1. Introduction

Important

The document defines the complete set of system requirements, acceptance criteria, and operational norms.

Current version: v1.0 (2025-08-09) Owners: Architect, Tech Lead, Customer Representative


2. Objectives

  • Process at least 50,000 events/sec with average batch latency below 200 ms.
  • Provide horizontal scalability and fault tolerance.
  • Deliver production-grade observability (metrics, tracing, logs).

3. Glossary

  • Event: an atomic record describing an action or fact from an external system.
  • Batch: a set of events processed transactionally as a single operation.
  • Idempotency: re-submitting the same event leaves the end state unchanged.
  • Exactly-once semantics: no duplicates and no omissions.

4. Scope and Boundaries

  • Interacts with external sources via HTTP/gRPC and a message queue.
  • Historical replay is out of scope unless a dedicated replay module is enabled.
  • Abuse protection via rate limiting and quotas.

5. Functional Requirements

5.1 YAML Configuration Import

  • Input: file path (UTF-8, absolute/relative)
  • Output: AppConfig structure
  • Failures: file missing; invalid YAML; insufficient permissions

5.2 Asynchronous Event Processing

  • Input: JSON array of events
  • Output: JSON report (processed, errors, duration)
  • Failures: invalid input; payload too large; database write error

5.3 Idempotency and Deduplication

  • Deterministic idempotency key required
  • Enforce dedup within time window

5.4 Ordering and Consistency

  • Ordering guarantees per partitioning key
  • Consistency across DB writes and acknowledgment pipeline

6. Non-Functional Requirements

Category Requirement
Throughput ≥ 50,000 events/s
Latency p50 ≤ 200 ms; p95 ≤ 400 ms; p99 ≤ 750 ms
SLA 99.9% monthly
API Availability 99.95% for /status, 99.9% for /events
Security TLS 1.3; JWT (RS256/ES256); mTLS intra-service
Scalability Horizontal scaling (N replicas)
Compatibility Rust ≥ 1.75; Linux x86_64; PostgreSQL ≥ 14
Storage DB write P99 ≤ 20 ms

SLO/SLI are exposed in Grafana and validated daily.


7. Architecture and Constraints

  • Language: Rust
  • Async runtime: Tokio
  • SQL: PostgreSQL with SQLx (async)
  • Queue: Kafka/NATS (project-specific)
  • Logs: JSON structured

Constraints:

  • No unwrap()/expect()/panic! in production code
  • Minimize global state
  • No mod.rs files
  • :: only in use imports

High-level layout:

  • Ingress: HTTP /events and queue consumer
  • Processor: partitioned workers; transactional flows
  • Storage: PostgreSQL (primary), Redis (cache/tokens)
  • Egress: reports/webhooks/audit
  • Observability: Prometheus, OTLP, centralized logs

8. Data Model and Compatibility

  • Schema versioned via migrations; backward compatibility for at least two minor versions.
  • Idempotency key: string up to 128 chars, indexed.

Example event DTO:

{
  "event_id": "string",
  "type": "click",
  "timestamp": "2025-08-09T12:00:00Z",
  "attributes": { "key": "value" }
}

9. API and Contracts

9.1 REST API

Method Path Description Codes
POST /events Accept and process event batch 202, 400, 413, 429, 500
GET /status Service health and readiness 200, 500

Error model:

{
  "error": {
    "code": "PAYLOAD_TOO_LARGE",
    "message": "Request size exceeds the configured limit",
    "trace_id": "b2f1c..."
  }
}

Requirements:

  • API versioning via X-API-Version: 1 header
  • Idempotency via Idempotency-Key header

10. Configuration, Feature Flags, Migrations

  • Configuration via YAML and environment variables.
  • Feature flags for new logic with backward-compatible toggles.
  • DB migrations: forward and backward; atomicity and rollback.

11. Security and Compliance

  • TLS 1.3 with strict ciphersuites.
  • JWT with RS256/ES256, minimal claims, max TTL 15 minutes.
  • mTLS for internal traffic.
  • Authenticated subject recorded in logs.
  • Rate limiting policies and duplicate protection.

12. Observability and Operations

Prometheus metrics (minimum):

  • events_processed_total with result labels
  • processing_latency_ms histogram
  • db_write_latency_ms
  • ingress_rate

Tracing: OTLP, service.name=event-processor. Logs: JSON with timestamp, level, message, trace_id, span_id.

Runbooks:

  • Elevated p95 latency
  • DB connection leaks
  • Rising 429/5xx on /events

13. Testing and Quality

  • Unit: ≥ 80% on public functions and error paths
  • Integration: API, DB, queue
  • Load: steady and burst profiles
  • Functional: per Section 5
  • Security: negative authn/authz cases
  • Doctests: required for public examples

No unwrap()/expect() in tests that affect acceptance.


14. CI/CD and Releases

Pre-commit:

cargo +nightly fmt --
cargo clippy -D warnings
cargo test --all

CI:

  • Enforce fmt/clippy/tests
  • Coverage reports
  • Image build
  • Staging then prod with manual approval

Release strategies:

  • Blue/Green or Canary
  • Auto-rollback driven by SLO signals

15. Capacity and Performance Plan

  • Nominal load: 50k events/s
  • Bursts: up to 2× for 15 minutes
  • Autoscaling on CPU, latency and queue depth

16. Change Management

  • Document versioning: SemVer
  • Each change via PR; architect review required
  • Changelog preserved in repo

17. Risks and Assumptions

  • Event order not guaranteed beyond partition key
  • External DB latency spikes during peak windows
  • Dependencies on queue and network stability

18. Incident Handling and DR/BCP

  • RPO ≤ 5 minutes, RTO ≤ 30 minutes
  • Hot-standby DB replication
  • Switchover procedures and integrity validation

19. Documentation Requirements

  • Architecture diagram
  • ER diagram
  • OpenAPI spec
  • Run/upgrade/rollback guides
  • Operational playbooks

20. Delivery Schedule

Stage Description Deadline
1 Architecture and review 2025-08-20
2 Configuration module 2025-08-30
3 Processing core 2025-09-15
4 Testing and acceptance 2025-09-25

21. Acceptance Criteria

  1. Meets throughput and latency targets (Section 6)
  2. All tests and quality gates pass
  3. Conforms to OpenAPI
  4. Full observability (metrics, tracing, logs)
  5. No panics or unhandled errors in production
  6. Runbooks and alerts are in place

22. Appendices

  • Payload examples
  • Rate limiting policies
  • Deployment diagrams
  • Release and rollback checklists

Popular repositories Loading

  1. .github .github Public

    1

Repositories

Showing 1 of 1 repositories

Top languages

Loading…

Most used topics

Loading…