You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.1 KiB
4.1 KiB
ШАГ 004 — Выбор технологического стека
Дата: 2026-03-21 Контекст: Мастер-класс по разработке системы тестирования сотрудников клиники.
Запрос
да (переходим к обсуждению стека)
Контекст:
- Команда: джуниор-разработчики, знают Python
- Архитектура: отдельный API + SPA
- Деплой: Docker на своём сервере
- Frontend фреймворк: React
Ответ
Стек зафиксирован в DOC/СТЕК.md.
Принятые решения и обоснование
Backend: FastAPI
Почему не Django:
- Django — монолитный фреймворк, заточен под SSR, его DRF (Django REST Framework) добавляет сложность
- FastAPI чище для чистого API-сервиса, меньше магии, проще читать код
Почему не Flask:
- Flask слишком минималистичен, джуниор потратит время на сборку инфраструктуры вместо бизнес-логики
- FastAPI даёт валидацию, документацию и типизацию из коробки
База данных: PostgreSQL
- SQLite не подходит для многопользовательского доступа (блокировки при записи)
- PostgreSQL — проверенный выбор для продакшена, отличная поддержка в SQLAlchemy
ORM: SQLAlchemy 2.0 (async)
- Async-режим важен для FastAPI — приложение не блокируется на запросах к БД
- Alembic для миграций — джуниор учится правильно управлять схемой БД
Frontend: React 18 + TypeScript
- React — самый востребованный фреймворк на рынке труда
- TypeScript добавляет типизацию, ловит ошибки на этапе компиляции
- Vite — современный и быстрый сборщик (замена устаревшего CRA)
UI: Ant Design
- Готовые компоненты таблиц, форм, модалок, таймеров — сэкономим 1-2 спринта
- Хорошо подходит для admin-панелей и внутренних инструментов
- Встроенная русская локализация
Серверный стейт: TanStack Query
Обучающий момент для джуниора:
- Учит разделять серверное состояние (данные с API) и клиентское состояние (UI)
- Без него джуниоры обычно пишут useEffect + useState везде — это антипаттерн
- Автоматическое кэширование и перезапросы — меньше кода, больше надёжности
Инфраструктура: Docker Compose + Nginx
Nginx (80/443)
├── / → React SPA (статика из build)
└── /api/ → FastAPI backend (uvicorn)
Docker Compose сервисы:
├── db (PostgreSQL)
├── backend (FastAPI)
├── frontend (React build / Vite в dev)
└── nginx
- Один
docker compose upзапускает весь стек - Nginx в одном контейнере раздаёт фронтенд и проксирует запросы к API
- Для 50–200 пользователей этой архитектуры полностью достаточно
Итог
Документ DOC/СТЕК.md содержит полное описание стека с версиями и обоснованиями.
Следующие шаги
- Написать ТЗ
- Закрыть открытые вопросы ТЗ
- Выбрать технологический стек
- Составить план спринтов