Auth — это gRPC микросервис для аутентификации и авторизации пользователей на основе JWT, разработанный на Golang.
Сервис полностью контейнеризован, поддерживает мониторинг, логирование и CI/CD.
- CRUD для пользователей — стандартные операции создания, чтения, обновления и удаления.
- JWT аутентификация — выдача
refreshиaccessтокенов. - Автоматические миграции БД — с использованием
goose. - gRPC interceptors — для валидации запросов, логирования (на основе
zap) и метрик. - Dependency Injection контейнер — гибкая организация зависимостей.
- CI/CD pipeline — автоматическая проверка и сборка при Pull Request в GitHub.
- Мониторинг и метрики — интеграция с
PrometheusиGrafana. - Централизованное логирование — стек
Promtail + Loki + Grafana. - Полная контейнеризация — все компоненты запускаются в Docker.
- Многоуровневая структура — четкое разделение слоев, реализация паттерта DI container.
| Компонент | Используется для |
|---|---|
| Golang | Основной язык реализации |
| gRPC | Коммуникация между сервисами |
| PostgreSQL | Хранение данных пользователей |
| JWT | Авторизация и аутентификация |
| Docker | Контейнеризация |
| Goose | Миграции базы данных |
| Zap | Логирование |
| Prometheus | Метрики и мониторинг |
| Grafana | Визуализация метрик и логов |
| Promtail + Loki | Сбор и агрегация логов |
| GitHub Actions (CI/CD) | Автоматизация сборки и тестов |
Prometheus — сбор метрик.
Loki + Promtail — сбор и агрегация логов контейнеров.
Grafana — визуализация метрик и логов.
