feat: expand platform APIs, sources, and test coverage
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
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
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
# 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. Хранение секретов в репозитории
|
||||
Отклонено — нарушает требования безопасности.
|
||||
Reference in New Issue
Block a user