Files
mostovik-backend/docs/adr/ADR-015: Configuration Source of Truth and Secret Management.md
Aleksandr Meshchriakov 3d298ce352
Some checks failed
CI/CD Pipeline / Run Tests (pull_request) Successful in 1m53s
CI/CD Pipeline / Telegram Notify Success (push) Has been cancelled
CI/CD Pipeline / Run Tests (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (pull_request) Failing after 2m54s
CI/CD Pipeline / Telegram Notify Success (pull_request) Has been skipped
feat: expand platform APIs, sources, and test coverage
2026-03-17 12:56:48 +01:00

88 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ADR-015: Configuration Source of Truth and Secret Management
## Status
Accepted
## Context
Система использует множество конфигураций:
- база данных
- Redis
- Celery
- внешние API (FNS, закупки и т.д.)
- Django settings
Ошибки конфигурации приводят к:
- невозможности запуска
- некорректной работе
- утечкам секретов
Также важно:
- разделение dev/prod
- воспроизводимость окружения
- безопасность секретов
## Decision
Используется environment-based configuration.
### Источники конфигурации
1. `.env.dev` — локальная разработка
2. `.env.prod` — production
3. `.env.prod.example` — контракт обязательных переменных
4. Docker Compose — точка применения конфигурации
5. `settings.*` — логика конфигурации
### Source of Truth
- обязательные переменные определяются через `.env.*`
- структура и использование переменных — в `settings`
- значения по умолчанию должны быть минимальны
### Secret policy
- секреты НЕ хранятся в репозитории
- `.env.*` файлы не коммитятся (кроме example)
- реальные значения задаются через:
- env-файлы
- секреты инфраструктуры
- CI/CD переменные
### Fail-fast policy
При старте приложения:
- проверяется доступность DB
- проверяется Redis
- проверяются критические переменные
При ошибке:
- приложение не стартует
### Configuration constraints
- запрещено хардкодить значения в коде
- запрещено использовать разные имена переменных для одного и того же
- запрещено использовать устаревшие пути (например config.settings.*)
## Consequences
### Positive
- воспроизводимость окружения
- безопасность
- предсказуемость запуска
### Negative
- необходимость поддерживать env-файлы
- риск рассинхронизации example и реальных env
## Alternatives considered
### 1. Конфигурация через код
Отклонено — небезопасно и негибко.
### 2. Хранение секретов в репозитории
Отклонено — нарушает требования безопасности.