Skip to content

Production-ready FastAPI starter for Yandex Cloud Deploy a scalable backend with Kubernetes (Helm), infrastructure as code (Terraform), database migrations via K8s Job. Designed to grow from monolith to microservices.

License

Notifications You must be signed in to change notification settings

gdenis82/yc-fastapi-starter

Repository files navigation

FastAPI Kubernetes Project

FastAPI Next.js Kubernetes Yandex_Cloud PostgreSQL Redis Docker GitLab CI/CD

Мини-сервис разработан для демонстрации развертывания масштабируемого приложения в 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               # Подробная инструкция по развертыванию

Схема работы

  1. Ingress (Nginx): Принимает внешний трафик и маршрутизирует его между Frontend и Backend сервисами.
  2. Frontend (Next.js): Выполняет отрисовку интерфейса (SSR/Static) и взаимодействует с API.
  3. Backend (FastAPI): Обрабатывает бизнес-логику, выполняет аутентификацию и предоставляет REST API.
  4. PostgreSQL: Хранит основные данные приложения (пользователи, настройки и т.д.).
  5. Redis (Valkey): Используется для ограничения частоты запросов (Rate Limiting) и ускорения работы приложения.

Развертывание

  1. Локальное развертывание (Terraform + PowerShell): Инструкция в файле DEPLOY.md.
  2. Автоматизация через GitLab CI/CD: Инструкция в файле GITLAB_CI_SETUP.md.

About

Production-ready FastAPI starter for Yandex Cloud Deploy a scalable backend with Kubernetes (Helm), infrastructure as code (Terraform), database migrations via K8s Job. Designed to grow from monolith to microservices.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors