Skip to content

Commit f2122f1

Browse files
committed
docs: обновить README под новые возможности
- добавить dashboard, readiness и кэш задач в описание проекта - зафиксировать новые Prometheus-метрики и параметры .env - добавить результаты нагрузочного замера для списка задач
1 parent 77e157e commit f2122f1

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

README.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,18 @@
3737
- безопасную auth-логику (JWT access + refresh, Argon2, rate limit)
3838
- чистую слоистую архитектуру (routes/services/repositories/models)
3939
- полноценную наблюдаемость (logs + metrics + tracing)
40+
- измеримую производительность (Locust, Redis cache, Prometheus, Grafana)
4041
- production-ready инфраструктуру (Docker, CI/CD, GHCR)
4142

4243
## Что реализовано
4344

4445
- Регистрация, логин, refresh, logout, endpoint `/me`
4546
- CRUD задач с валидацией дедлайна и ownership-check
47+
- Фильтрация, сортировка и пагинация списка задач
4648
- CRUD тегов и связь many-to-many `Task <-> Tag`
49+
- Dashboard endpoint с параллельной агрегацией задач, тегов и счётчиков по статусам
50+
- Readiness-check для БД и Redis (`/health/ready`)
51+
- Redis-кэш списка задач `/tasks` с TTL, hit/miss-метриками и инвалидацией при изменениях
4752
- Ограничение запросов по IP для auth-ручек через Redis Lua script
4853
- Корреляция запросов через `X-Request-ID`
4954
- Структурированные JSON-логи с `trace_id` и `span_id`
@@ -119,11 +124,16 @@
119124
- `PATCH /tags/{tag_id}`
120125
- `DELETE /tags/{tag_id}`
121126

127+
### Dashboard
128+
129+
- `GET /dashboard`
130+
122131
### Service endpoints
123132

124133
- `GET /metrics`
125134
- `GET /api/v1/health/db`
126135
- `GET /api/v1/health/redis`
136+
- `GET /api/v1/health/ready`
127137

128138
## Локальный запуск через Docker Compose
129139

@@ -148,6 +158,7 @@ SECRET_KEY=your_secret_key_min_32_chars
148158
```env
149159
ALGORITHM=HS256
150160
REDIS_URL=redis://localhost:6379/0
161+
TASKS_LIST_CACHE_TTL_SECONDS=60
151162
ACCESS_TOKEN_EXPIRE_MINUTES=10
152163
REFRESH_TOKEN_EXPIRE_DAYS=7
153164
GRAFANA_ADMIN_USER=admin
@@ -197,6 +208,28 @@ uv run uvicorn app.main:app --reload
197208
- базовые метрики:
198209
- `http_requests_total`
199210
- `http_request_duration_seconds`
211+
- метрики кэша списка задач:
212+
- `tasks_cache_hits_total`
213+
- `tasks_cache_misses_total`
214+
215+
## Производительность
216+
217+
Нагрузочный прогон для сравнения кэша списка задач `/api/v1/tasks`:
218+
219+
- профиль нагрузки: `Locust`, `100 users`, `ramp-up 10/s`, `5 минут`
220+
- сравнение режимов: `TASKS_LIST_CACHE_TTL_SECONDS=60` и `TASKS_LIST_CACHE_TTL_SECONDS=0`
221+
222+
Зафиксированный эффект:
223+
224+
- `GET /api/v1/tasks p95`: `120 ms -> 80 ms` (`-33.3%`)
225+
- `GET /api/v1/tasks avg`: `46.96 ms -> 31.76 ms` (`-32.4%`)
226+
- `GET /api/v1/tasks RPS`: `49.7 -> 53.9` (`+8.5%`)
227+
- `Aggregated p95`: `120 ms -> 84 ms` (`-30.0%`)
228+
- `Aggregated avg`: `45.14 ms -> 33.62 ms` (`-25.5%`)
229+
- `Cache hit ratio`: `42.9%`
230+
231+
Формулировка эффекта:
232+
- Redis-кэш ускоряет чтение списка задач и снижает задержку без деградации error rate под смешанной нагрузкой.
200233

201234
### Tracing
202235

0 commit comments

Comments
 (0)