Мини-сервис разработан для демонстрации развертывания масштабируемого приложения в Yandex Cloud (YC). Проект использует управляемые сервисы (Managed Kubernetes, Managed PostgreSQL) и обеспечивает безопасность через Yandex Lockbox.
.
├── services/
│ ├── backend/ # Микросервис Backend (FastAPI)
│ │ ├── app/
│ │ │ ├── api/ # API эндпоинты
│ │ │ │ └── endpoints/ # Реализация конкретных роутов (auth, admin и др.)
│ │ │ ├── core/ # Конфигурация, безопасность, логирование
│ │ │ ├── models/ # Модели базы данных (SQLAlchemy)
│ │ │ ├── schemas/ # Pydantic схемы (валидация данных)
│ │ │ ├── db/ # Подключение к БД и сессии
│ │ │ └── main.py # Точка входа в приложение
│ │ ├── alembic/ # Миграции базы данных
│ │ ├── tests/ # Тесты (pytest)
│ │ └── Dockerfile # Образ для бэкенда
│ └── frontend/ # Frontend (Next.js)
│ ├── src/
│ │ ├── app/ # Роутинг и страницы (App Router)
│ │ ├── components/ # React компоненты (UI, Auth, Layout)
│ │ ├── store/ # Управление состоянием (Zustand)
│ │ ├── lib/ # Утилиты и конфигурация API (Axios)
│ │ └── proxy.ts # Конфигурация проксирования
│ └── Dockerfile # Образ для фронтенда
├── helm/ # Helm-чарты для деплоя в Kubernetes
├── terraform/ # Infrastructure as Code (Yandex Cloud)
├── deploy.ps1 # Скрипт автоматизированного деплоя
├── prepare-infra.ps1 # Скрипт подготовки инфраструктуры
├── cleanup.ps1 # Скрипт удаления ресурсов
├── Makefile # Команды для локальной разработки и сборки
└── DEPLOY.md # Подробная инструкция по развертыванию
- Ingress (Nginx): Принимает внешний трафик и маршрутизирует его между Frontend и Backend сервисами.
- Frontend (Next.js): Выполняет отрисовку интерфейса (SSR/Static) и взаимодействует с API.
- Backend (FastAPI): Обрабатывает бизнес-логику, выполняет аутентификацию и предоставляет REST API.
- PostgreSQL: Хранит основные данные приложения (пользователи, настройки и т.д.).
- Redis (Valkey): Используется для ограничения частоты запросов (Rate Limiting) и ускорения работы приложения.
- Локальное развертывание (Terraform + PowerShell): Инструкция в файле DEPLOY.md.
- Автоматизация через GitLab CI/CD: Инструкция в файле GITLAB_CI_SETUP.md.