Архитектура системы аналитики госзакупок DACA/AdalQarau

Комплексная система анализа государственных закупок, построенная на современных принципах архитектуры с разделением ответственности, type-safe контрактами и автоматизацией процессов.

Обзор архитектуры

Система построена по принципу модульной архитектуры с четким разделением слоев и использованием современного технологического стека.

Общая архитектура системы

graph TB
    Client[👥 Клиенты] --> CF[☁️ Cloudflare Edge]
    CF --> WARP[🔒 Cloudflare Warp]
    WARP --> SERVER[🖥️ Сервер в Казахстане<br/>Без белого IP]
    
    subgraph "🌍 Cloudflare Global Network"
        CF
        WARP
        CFLint[⚖️ Load Balancer]
        CF --> CFLint
        CFLint --> WARP
    end
    
    SERVER --> API[🚀 daca-api :7000]
    
    API --> DB[🗄️ PostgreSQL]
    API --> S3[📦 MinIO/S3]
    API --> Vault[🔐 HashiCorp Vault]
    
    Jobs[⚙️ Background Jobs] --> DB
    Jobs --> S3
    Jobs --> TG[🤖 Telegram Bot API]
    
    API --> TG
    TG --> Users[👨‍💼 Пользователи Telegram]
    
    subgraph "🇰🇿 Self-Hosted Infrastructure (Kazakhstan)"
        SERVER
        API
        Jobs
        DB
        S3
        Vault
    end
    
    style CF fill:#f39c12,stroke:#e67e22,stroke-width:3px,color:#fff
    style WARP fill:#e67e22,stroke:#d35400,stroke-width:3px,color:#fff
    style SERVER fill:#27ae60,stroke:#229954,stroke-width:3px,color:#fff
    style API fill:#3498db,stroke:#2980b9,stroke-width:3px,color:#fff
    style DB fill:#9b59b6,stroke:#8e44ad,stroke-width:3px,color:#fff
    style S3 fill:#e74c3c,stroke:#c0392b,stroke-width:3px,color:#fff
    style Jobs fill:#f39c12,stroke:#e67e22,stroke-width:3px,color:#fff
    style Vault fill:#34495e,stroke:#2c3e50,stroke-width:3px,color:#fff
    style TG fill:#0088cc,stroke:#006bb3,stroke-width:3px,color:#fff
    style CFLint fill:#9b59b6,stroke:#8e44ad,stroke-width:2px,color:#fff
    style Client fill:#2c3e50,stroke:#34495e,stroke-width:2px,color:#fff
    style Users fill:#16a085,stroke:#138d75,stroke-width:2px,color:#fff

Технологический стек

Backend (Go)

  • Язык: Go 1.24.4
  • API: gRPC + gRPC-Gateway (dual gRPC/REST)
  • База данных: PostgreSQL 15+ с pgx драйвером
  • Файловое хранилище: MinIO (S3-совместимое)
  • Аутентификация: JWT с ролевой моделью доступа
  • Генерация кода: Protocol Buffers + buf toolchain
  • Уведомления: Telegram Bot API
  • Управление секретами: HashiCorp Vault
  • Фоновые задачи: go-co-op/gocron v2

Архитектурные принципы

Clean Architecture и DDD (Domain‑Driven Design)

┌─ Interface Layer   ─┐  ┌─ Application Layer ─┐  ┌─ Domain Layer   ─┐  ┌─ Infrastructure  ─┐
│ • gRPC/HTTP         │  │ • Services          │  │ • Business Logic │  │ • PostgreSQL      │
│ • Protocol Buffers  │  │ • Use Cases         │  │ • Entities       │  │ • MinIO/S3        │
│ • REST Gateway      │  │ • Orchestration     │  │ • Value Objects  │  │ • Telegram API    │
└─────────────────────┘  └─────────────────────┘  └──────────────────┘  └───────────────────┘

Ключевые архитектурные решения:

  • Инверсия зависимостей (Dependency Inversion): Интерфейсы задают контракты, реализации инжектируются
  • Принцип единственной ответственности (Single Responsibility): У компонента одна причина для изменения
  • Разделение интерфейсов (Interface Segregation): Клиенты не зависят от лишних методов
  • Fail‑fast: Ошибки выявляются и сообщаются сразу

Архитектура Backend

Структура проекта

cmd/
├── api/              # Главный API сервер
└── cronjobs/         # Фоновые процессы
    ├── telegram_bot/      # Telegram бот
    └── process_*/         # Аналитические процессы

internal/
├── app/              # Бизнес-логика приложения
│   ├── auth/             # Аутентификация и авторизация
│   ├── contract_diff/    # Анализ различий контрактов
│   ├── dumping_contracts/ # Обнаружение демпинга
│   └── unload_excel/     # Генерация Excel отчетов
├── service/          # Сервисный слой
├── repository/       # Слой доступа к данным
├── model/            # Доменные модели
│   ├── auth/             # Модели аутентификации
│   ├── contract/         # Модели контрактов
│   └── company/          # Модели компаний
├── adapter/          # Адаптеры внешних сервисов
│   ├── s3/               # MinIO/S3 интеграция
│   ├── telegram/         # Telegram Bot API
│   └── vault/            # HashiCorp Vault
├── pb/               # Генерируемые Protocol Buffer типы
├── middleware/       # HTTP/gRPC middleware
└── tools/            # Вспомогательные утилиты

api/                  # Protocol Buffer определения
migrations/           # Миграции базы данных

Слои архитектуры (схема, backend)

graph LR
    subgraph "🌐 Interface Layer"
        GRPC[🔌 gRPC Services]
        HTTP[🌍 HTTP Gateway]
        PB[📋 Protocol Buffers]
    end
    
    subgraph "⚙️ Application Layer"
        APP[🏗️ App Services]
        MW[🛡️ Middleware]
    end
    
    subgraph "💼 Business Layer"
        SVC[🔧 Service Layer]
        MDL[📊 Domain Models]
    end
    
    subgraph "💾 Data Layer"
        REPO[🗃️ Repository]
        ADAPT[🔗 Adapters]
    end
    
    subgraph "🏗️ Infrastructure"
        PG[🗄️ PostgreSQL]
        MINIO[📦 MinIO/S3]
        VLT[🔐 Vault]
        TG_API[🤖 Telegram API]
    end
    
    GRPC --> APP
    HTTP --> APP
    PB --> GRPC
    
    APP --> SVC
    MW --> SVC
    
    SVC --> REPO
    SVC --> MDL
    
    REPO --> PG
    ADAPT --> MINIO
    ADAPT --> VLT
    ADAPT --> TG_API
    
    style GRPC fill:#3498db,stroke:#2980b9,stroke-width:3px,color:#fff
    style HTTP fill:#27ae60,stroke:#229954,stroke-width:3px,color:#fff
    style PB fill:#f39c12,stroke:#e67e22,stroke-width:3px,color:#fff
    style APP fill:#9b59b6,stroke:#8e44ad,stroke-width:3px,color:#fff
    style MW fill:#e74c3c,stroke:#c0392b,stroke-width:3px,color:#fff
    style SVC fill:#16a085,stroke:#138d75,stroke-width:3px,color:#fff
    style MDL fill:#f39c12,stroke:#e67e22,stroke-width:3px,color:#fff
    style REPO fill:#8e44ad,stroke:#7d3c98,stroke-width:3px,color:#fff
    style ADAPT fill:#d35400,stroke:#ba4a00,stroke-width:3px,color:#fff
    style PG fill:#2c3e50,stroke:#34495e,stroke-width:3px,color:#fff
    style MINIO fill:#e67e22,stroke:#d35400,stroke-width:3px,color:#fff
    style VLT fill:#34495e,stroke:#2c3e50,stroke-width:3px,color:#fff
    style TG_API fill:#0088cc,stroke:#006bb3,stroke-width:3px,color:#fff

API‑дизайн на базе Protocol Buffers

Контракт‑Design (contract‑first)

service AuthService {
  rpc Login(LoginRequest) returns (LoginResponse) {
    option (google.api.http) = {
      post: "/v1/auth/login"
      body: "*"
    };
  }
}

message User {
  string username = 1 [(google.api.field_behavior) = REQUIRED];
  string name = 2 [(google.api.field_behavior) = REQUIRED];
  repeated shared.v1.UserRole roles = 3;
  repeated shared.v1.Region regions = 4;
}

Преимущества подхода:

  • Типобезопасность: Автоматическая генерация строго типизированного кода
  • Обратная совместимость: Эволюция API без breaking‑changes
  • Мультиязычность: Один контракт для клиентов на разных языках
  • Самодокументируемость: Контракт служит спецификацией API
  • Валидация по схеме: Ограничения и аннотации на уровне protobuf

Слои архитектуры (описание)

Ниже короткое пояснение основных слоев системы и их ролей.

Domain Layer (Доменный слой)

  • Бизнес-логика независимая от внешних зависимостей
  • Доменные модели с инкапсулированным поведением
  • Бизнес-правила и ограничения
  • Value Objects для типобезопасности

Application Layer (Слой приложения)

  • Координация между доменными объектами
  • Use Cases и сценарии использования
  • Транзакционность и согласованность данных
  • Интеграция с внешними сервисами

Infrastructure Layer (Слой инфраструктуры)

  • Реализации репозиториев (PostgreSQL)
  • Внешние интеграции (Telegram, S3, Vault)
  • Техническая логика (логирование, метрики)
  • Конфигурация и окружение

Фоновые процессы и задачи

Архитектура cronjobs:

// Современный подход с go-co-op/gocron v2
scheduler := gocron.NewScheduler()

job := scheduler.NewJob(
    gocron.CronJob("0 */4 * * *", false), // Каждые 4 часа
    gocron.NewTask(processContracts),
    gocron.WithSingletonMode(gocron.LimitModeReschedule),
    gocron.WithEventListeners(
        gocron.AfterJobRuns(logJobCompletion),
        gocron.AfterJobRunsWithError(notifyError),
    ),
)

Принципы фоновой обработки:

  • Idempotency: Повторные запуски безопасны
  • Retry Logic: Экспоненциальная задержка при ошибках
  • Singleton Jobs: Предотвращение параллельного выполнения
  • Наблюдаемость: Логирование и мониторинг всех операций
  • Graceful Shutdown: Корректное завершение при остановке

Интеграции и внешние сервисы

Интеграция Telegram‑бота

Архитектура бота:

  • Polling Service: Отдельный процесс для получения сообщений
  • Command Handlers: Обработка команд (/start, /connect, /help)
  • Account Linking: Связывание через временные коды в Vault
  • Notifications: Уведомления о готовности выгрузок

Процесс связывания аккаунтов:

sequenceDiagram
    participant User as 👤 Пользователь
    participant TG as 🤖 Telegram Bot  
    participant API as 🚀 daca-api
    participant Vault as 🔐 HashiCorp Vault
    participant Web as 🌐 Web Interface
    
    User->>+TG: 📱 /connect
    TG->>+API: 🔑 Запрос на генерацию кода
    API->>API: 🎲 generateSecureCode(6)
    API->>+Vault: 💾 Сохранить код с TTL 5 мин
    Vault->>-API: ✅ OK
    API->>-TG: 📋 Возврат кода
    TG->>-User: 💬 "Ваш код: ABC123"
    
    User->>+Web: ⌨️ Ввод кода в веб-интерфейсе
    Web->>+API: 🔍 Валидация кода
    API->>+Vault: 📡 Получить данные по коду
    Vault->>-API: 📊 telegram_id + metadata
    API->>API: 🔗 Связывание аккаунтов
    API->>+Vault: 🗑️ Удалить использованный код
    Vault->>-API: ✅ Deleted
    API->>-Web: 🎉 Успешное связывание
    Web->>-User: 🎊 "Telegram подключен!"
    
    rect rgb(240, 248, 255)
        Note over Vault: ⏰ TTL автоматически<br/>🗑️ удаляет истекшие коды
    end

Безопасность связывания аккаунтов:

// Генерация временного кода
code := generateSecureCode(6)
err := vaultClient.StoreWithTTL(ctx, 
    fmt.Sprintf("telegram/codes/%s", code),
    map[string]interface{}{
        "telegram_id": telegramID,
        "username":    username,
    },
    5*time.Minute, // TTL 5 минут
)

HashiCorp Vault

Управление секретами:

  • Временные коды: Автоматическое истечение через TTL
  • API ключи: Централизованное хранение секретов
  • Database Credentials: Динамические базы данных
  • Health Monitoring: Мониторинг доступности Vault

Хранилище MinIO/S3

Файловое хранилище:

  • Excel Exports: Генерация отчетов в фоне
  • Presigned URLs: Безопасная загрузка файлов
  • Bucket Policies: Управление доступом к файлам
  • Lifecycle Management: Автоматическая очистка старых файлов

Бизнес-логика и аналитика

Риск‑индикаторы

Система анализа рисков:

  • Contract Diff Analysis: Сравнение контрактов и выявление аномалий
  • Dumping Detection: Обнаружение демпинговых предложений
  • Supplier-Customer Networks: Анализ связей между участниками
  • Problematic Patterns: Выявление проблемных паттернов закупок

Алгоритмические подходы:

  • Statistical Analysis: Статистические методы выявления аномалий
  • Graph Analysis: Анализ графов связей между организациями
  • Pattern Matching: Сопоставление с известными схемами нарушений
  • Machine Learning: Обучение моделей на исторических данных

Индикаторы риска государственных закупок

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

1. Сверхдемпинговые контракты

Цель: Выявление контрактов с аномально низкой стоимостью по сравнению с плановой суммой.

Параметры:

  • P — плановая сумма контракта
  • C — фактическая сумма контракта
  • T — пороговый коэффициент демпинга

Формула расчета:

Процент снижения = (P - C) × 100 / P

Условие срабатывания: Процент снижения превышает установленный порог

2. Контракты с минимальным демпингом

Цель: Выявление контрактов с незначительным, но подозрительно точным снижением цены.

Логика: Контракт почти равен плановой сумме, но с небольшим снижением, что может указывать на предварительный сговор.

Формула расчета:

Процент снижения = (P - C) × 100 / P

Условие: Фактическая сумма близка к плановой с небольшим отклонением в пределах установленного порога

3. Ускоренное согласование оплаты

Цель: Обнаружение подозрительно быстрых платежей после заключения контракта.

Параметры:

  • Dcontract — дата создания контракта
  • Dpayment — дата платежа

Условие срабатывания:

Dpayment - Dcontract < установленного_порога_дней

Дополнительные фильтры: Учитываются только годовые государственные контракты с определенными статусами.

4. Увеличение суммы контракта

Цель: Выявление контрактов с существенным увеличением суммы в процессе исполнения.

Параметры:

  • Sfirst — сумма первоначального контракта
  • Slast — сумма финального контракта
  • Ffirst — фактическая сумма первого этапа
  • Flast — фактическая сумма последнего этапа

Формулы расчета:

Рост суммы = (Slast - Sfirst) × 100 / Sfirst
Рост факта = (Flast - Ffirst) × 100 / Ffirst

Условие срабатывания: Любой из показателей роста превышает установленный порог

5. Анализ партнерства заказчик–поставщик

Цель: Выявление подозрительно тесных связей между заказчиками и поставщиками.

Параметры:

  • Npair — количество контрактов в анализируемой паре
  • Nsupplier — общее количество контрактов поставщика
  • Ncustomer — общее количество контрактов заказчика

Формулы расчета:

Доля поставщика = Npair / Nsupplier
Доля заказчика = Npair / Ncustomer

Условия фильтрации: Пара попадает в отчет только если:

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

6. Общие фильтры и ограничения

Типы контрактов: Анализируются только годовые и стандартные контракты

Требования к данным:

  • Обязательное наличие БИН заказчика и поставщика
  • Суммы контрактов должны быть больше нуля
  • Для большинства расчетов используются только корневые контракты

Статусы контрактов: Учитываются контракты с определенными статусами, исключающие черновики и отмененные контракты

Конвейер генерации Excel

Архитектура генерации отчетов:

  1. Обработка запроса: Асинхронное принятие и постановка в очередь
  2. Агрегация данных: Сбор из нескольких источников
  3. Генерация Excel: Создание файла на базе excelize v2
  4. Загрузка в S3: Отправка в объектное хранилище
  5. Уведомление в Telegram: Сообщение пользователю о готовности
sequenceDiagram
    participant User as 👤 Пользователь
    participant API as 🚀 daca-api
    participant Queue as 📋 Job Queue
    participant BG as ⚙️ Background Job
    participant DB as 🗄️ PostgreSQL
    participant S3 as 📦 MinIO/S3
    participant TG as 🤖 Telegram Bot
    
    User->>+API: 📊 Запрос на генерацию Excel
    API->>+Queue: ➕ Добавить задачу в очередь
    API->>-User: ✅ 202 Accepted (async)
    
    Queue->>+BG: 🔄 Выполнить задачу
    BG->>+DB: 📡 Получить данные
    DB->>-BG: 📈 Возврат данных
    
    BG->>BG: 📝 Генерация Excel файла
    BG->>+S3: ⬆️ Загрузка файла
    S3->>-BG: ✅ Подтверждение загрузки
    
    BG->>+TG: 📤 Отправка уведомления
    TG->>-User: 📱 Telegram уведомление с ссылкой
    
    rect rgb(255, 243, 224)
        Note over BG: ⚠️ Обработка ошибок:<br/>🔄 Retry с экспоненциальной задержкой<br/>📢 Telegram уведомления об ошибках
    end
// Пример архитектуры обработки
type ExcelProcessor struct {
    repo      Repository
    storage   S3Client
    telegram  TelegramClient
    templates ExcelTemplates
}

func (p *ExcelProcessor) ProcessRequest(ctx context.Context, req ExportRequest) error {
    // 1. Валидация запроса
    // 2. Извлечение данных
    // 3. Генерация Excel
    // 4. Загрузка в S3
    // 5. Отправка уведомления
}

DevOps и развертывание

CI/CD Pipeline

GitHub Actions Workflows:

# CI Pipeline - основной поток
name: CI Pipeline
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  validate:    # Линтинг и проверки качества
  publish:     # Сборка и публикация Docker образов  
  deploy:      # Автоматическое развертывание

Workflow файлы:

  • ci-pipeline.yaml: Основной CI/CD поток
  • auto-deploy.yaml: Развертывание на self-hosted runner
  • lint.yaml: Комплексные проверки (Go, protobuf, SQL)
  • publish.yaml: Сборка и публикация образов

CI/CD Flow

flowchart TD
    A[📝 git push to main] --> B[🚀 GitHub Actions Trigger]
    B --> C{🔄 CI Pipeline}
    
    C --> D[✅ validate Job]
    C --> E[📦 publish Job]
    
    D --> F[🧹 Go Linting]
    D --> G[📋 Protobuf Validation]
    D --> H[🗄️ SQL Migration Check]
    
    E --> I[🐳 Build Docker Image]
    E --> J[⬆️ Push to GHCR]
    
    F --> K{🤔 All Checks Pass?}
    G --> K
    H --> K
    I --> K
    J --> K
    
    K -->|✅ Yes| L[🚀 deploy Job]
    K -->|❌ No| M[💥 Pipeline Failed]
    
    L --> N[🖥️ Self-Hosted Runner KZ]
    N --> O[⬇️ Git Pull Latest]
    N --> P[🔑 Docker Login GHCR]
    N --> Q[⚙️ make deploy]
    
    Q --> R[🐳 Docker Compose Up]
    R --> S[🔍 Verify Containers]
    S --> T[🎉 Deployment Success]
    
    style A fill:#3498db,stroke:#2980b9,stroke-width:3px,color:#fff
    style T fill:#27ae60,stroke:#229954,stroke-width:3px,color:#fff
    style M fill:#e74c3c,stroke:#c0392b,stroke-width:3px,color:#fff
    style K fill:#f39c12,stroke:#e67e22,stroke-width:3px,color:#fff
    style N fill:#9b59b6,stroke:#8e44ad,stroke-width:3px,color:#fff
    style D fill:#16a085,stroke:#138d75,stroke-width:2px,color:#fff
    style E fill:#8e44ad,stroke:#7d3c98,stroke-width:2px,color:#fff
    style F fill:#27ae60,stroke:#229954,stroke-width:2px,color:#fff
    style G fill:#e67e22,stroke:#d35400,stroke-width:2px,color:#fff
    style H fill:#34495e,stroke:#2c3e50,stroke-width:2px,color:#fff
    style I fill:#3498db,stroke:#2980b9,stroke-width:2px,color:#fff
    style J fill:#e74c3c,stroke:#c0392b,stroke-width:2px,color:#fff

Deployment Strategy

Гибридная инфраструктура с Cloudflare:

Cloudflare Edge Layer:

  • CDN и защита: Глобальная сеть Cloudflare для кеширования и DDoS защиты
  • Load Balancer: Встроенный балансировщик нагрузки с health checks
  • SSL Termination: Автоматические SSL сертификаты и TLS encryption
  • Geographic Routing: Оптимизация маршрутизации для пользователей из СНГ

Cloudflare Warp Integration:

graph LR
    Internet[🌐 Интернет] --> CF[☁️ Cloudflare Edge]
    CF --> Warp[🔒 Cloudflare Warp Tunnel]
    
    subgraph "🛡️ Cloudflare Services"
        CF
        CDN[📦 CDN Cache]
        WAF[🛡️ Web Application Firewall]  
        LB[⚖️ Load Balancer]
        CF --> CDN
        CF --> WAF
        CF --> LB
        LB --> Warp
    end
    
    Warp -.->|🔐 Encrypted Tunnel| Server[🖥️ Сервер в Казахстане]
    Server --> Docker[🐳 Docker Compose Stack]
    
    style CF fill:#f39c12,stroke:#e67e22,stroke-width:3px,color:#fff
    style Warp fill:#e67e22,stroke:#d35400,stroke-width:3px,color:#fff
    style Server fill:#27ae60,stroke:#229954,stroke-width:3px,color:#fff
    style CDN fill:#3498db,stroke:#2980b9,stroke-width:2px,color:#fff
    style WAF fill:#e74c3c,stroke:#c0392b,stroke-width:2px,color:#fff
    style LB fill:#9b59b6,stroke:#8e44ad,stroke-width:2px,color:#fff
    style Docker fill:#0073ec,stroke:#005cbf,stroke-width:3px,color:#fff

Решение проблемы серого IP:

  • Cloudflare Warp Tunnel: Безопасный туннель между Edge и origin сервером
  • Zero Trust Architecture: Нет необходимости в белом IP адресе
  • Automatic Failover: Автоматическое переключение при сбоях
  • End-to-End Encryption: Шифрование трафика от клиента до сервера

Self-Hosted Infrastructure (Казахстан):

  • Location: Астана, Казахстан - близость к основной аудитории
  • Network: Серый IP с Warp tunnel для публичного доступа
  • Self-hosted runner: GitHub Actions runner для автоматизации
  • Docker Compose: Управление контейнерами через compose файлы
  • Multi-stage deployment: Раздельные файлы для apps, databases, swagger

Deployment Process:

# Основной процесс развертывания
1. Git pull latest code
2. Docker login to GitHub Container Registry  
3. make deploy - запуск через Makefile
4. Verification - проверка running containers

Docker Compose Architecture:

# docker-compose.apps.yaml - основные сервисы
# docker-compose.databases.yaml - базы данных
# docker-compose.swagger.yaml - документация API

Наблюдаемость

Мониторинг и логирование:

  • Structured Logging: Структурированные логи с контекстом
  • Health Checks: Проверки состояния всех компонентов
  • Performance Metrics: Метрики производительности
  • Error Tracking: Отслеживание и уведомления об ошибках
// Пример структурированного логирования
logger.Info(ctx, "Processing export request",
    logger.WithString("export_type", exportType),
    logger.WithInt("user_id", userID),
    logger.WithString("request_id", requestID),
)

Масштабируемость и производительность

Проектирование базы данных

PostgreSQL оптимизация:

  • Индексирование: Составные индексы для аналитических запросов
  • Партиционирование: Разделение больших таблиц по датам
  • Connection Pooling: Пул соединений с pgx
  • Query Optimization: Анализ и оптимизация медленных запросов

Стратегия кэширования

Многоуровневое кэширование:

  • Application Cache: In‑memory кэш в приложении
  • Database Cache: Кэширование результатов запросов
  • CDN Cache: Кэширование статических ресурсов
  • Browser Cache: Клиентское кэширование через HTTP‑заголовки

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

Фоновая обработка:

  • Job Queues: Очереди задач для тяжелых операций
  • Batch Processing: Пакетная обработка больших объемов данных
  • Stream Processing: Потоковая обработка в реальном времени
  • Rate Limiting: Ограничение нагрузки на внешние API

Безопасность

Аутентификация и авторизация

Многоуровневая безопасность:

  • JWT Tokens: Stateless аутентификация с коротким TTL
  • Role-Based Access: Ролевая модель с региональными ограничениями
  • Token Refresh: Обновление токенов без повторной аутентификации
  • Session Management: Управление сессиями пользователей

Защита данных

Защита данных:

  • Input Validation: Валидация на всех уровнях
  • SQL Injection Prevention: Параметризованные запросы
  • XSS Protection: Санитизация пользовательского ввода
  • CORS Configuration: Настройка политик CORS

Безопасность инфраструктуры

Безопасность инфраструктуры:

  • Secrets Management: Централизованное управление через Vault
  • Network Security: Изоляция сервисов через Docker networks
  • SSL/TLS: Шифрование всех соединений
  • Regular Updates: Регулярные обновления зависимостей

Выводы

Архитектура DACA представляет собой современный подход к построению enterprise-приложений с акцентом на:

Качество архитектуры:

  • Clean Architecture для сопровождаемости
  • Типобезопасность на всех уровнях
  • Contract‑first дизайн API
  • Комплексная стратегия тестирования

Developer Experience:

  • Автоматическая генерация кода
  • Горячая перезагрузка в разработке
  • Полная документация
  • Современные инструменты

Operational Excellence:

  • Полный мониторинг
  • Автоматизированное тестирование
  • План восстановления после сбоев

Эта архитектура демонстрирует, как современные паттерны и технологии применяются для создания надежных, масштабируемых и хорошо поддерживаемых систем в домене государственных закупок.

Технические детали

Полная документация API доступна через Swagger UI, исходный код следует принципам Clean Code, а развертывание автоматизировано через CI/CD пайплайны. Система успешно обрабатывает миллионы записей контрактов и обеспечивает аналитические инсайты для принятия решений в сфере государственных закупок.