Эксперимент по внедрению антипаттерна Anemic Domain Model при создании микросервисного приложения с целью исследования последствий.
Frontend (Vue 3 SPA)
- Порт: 3000
- Адаптивный дизайн с поддержкой light/dark тем
- Многоязычность (русский/английский)
- Личный кабинет, проекты, комментарии
API Gateway
- Порт: 50055
- Единая точка входа с кэшированием в Redis
- Rate limiting и агрегация запросов
- Инвалидация кэша через Kafka
Микросервисы (gRPC)
- Auth Service (50052) - аутентификация, JWT, восстановление пароля
- Content Service (50051) - управление контентом (проекты, технологии, публикации)
- Comments Service (50054) - иерархические комментарии в PostgreSQL
- Notification Service (50053) - email-уведомления через SMTP
Admin компоненты
- Admin Service (8000) - универсальный бекенд для управления
- Admin GUI (9500) - SPA панель на Quasar Framework
MongoDB ×3
content_db- контент сайтаauth_db- пользователи и токеныnotification_db- история уведомлений
PostgreSQL
comments_db- система комментариев
Дополнительные сервисы
- Redis - кэширование и rate limiting
- MinIO - объектное хранилище для файлов
- Kafka (3 брокера) - асинхронная коммуникация
- Elastic Stack - сбор и анализ логов
Бекенд
- FastAPI (REST API) + gRPC (микросервисы)
- SQLAlchemy 2.0 + AsyncPG
- Pydantic для валидации
- JWT + bcrypt для безопасности
Фронтенд
- Vue 3 + Composition API
- Pinia для состояния, Vue Router
- Vue I18n для локализации
- Vite для сборки
Инфраструктура
- Docker + Docker Compose
- Kubernetes (Minikube) для продакшена
- Nginx для раздачи статики
ВАЖНО: для комфортной работы требуется 24 ГБ оперативной памяти (DDR4) и 8-миядерный процессор
git clone https://github.com/IvanZaycev0717/microservices-fastapi-vue-mongodb.git
docker-compose up -dДоступные сервисы:
- Frontend: http://localhost:3000
- API Gateway: http://localhost:50055
- Admin GUI: http://localhost:9500
- MinIO Console: http://localhost:9001
- Kibana: http://localhost:5601
minikube start --memory=24g --cpus=7 --driver=docker --disk-size=50g
kubectl apply -f k8s/
minikube service -n microservices-app frontend- Просмотр портфолио проектов и технологий
- Система комментирования с ответами
- Личный кабинет с управлением комментариями
- Многоязычный интерфейс
- Полное управление контентом через Admin GUI
- Модерация комментариев и пользователей
- Загрузка медиа в MinIO
- Просмотр логов через Kibana
- Асинхронная архитектура на всех уровнях
- Кэширование для высокой производительности
- Централизованное логирование через Filebeat → Elasticsearch
- Health-check эндпоинты для мониторинга
- Graceful shutdown всех сервисов
Основные настройки в .env файле:
- Безопасность: JWT секреты, пароли БД
- Базы данных: подключения к MongoDB и PostgreSQL
- Внешние сервисы: SMTP, MinIO, Kafka
- Лимиты: размеры полей, время жизни токенов
├── frontend/ # Vue 3 SPA
├── backend/
│ ├── api_gateway/ # Единая точка входа
│ ├── auth_service/ # Аутентификация
│ ├── content_service/ # Управление контентом
│ ├── comments_service/ # Система комментариев
│ ├── notification_service/# Email уведомления
│ └── admin_service/ # Админка (бекенд + фронтенд)
├── k8s/ # Kubernetes манифесты
├── mongo-init-scripts/ # Инициализация MongoDB
├── postgres-init-scripts/ # Инициализация PostgreSQL
├── filebeat/ # Конфигурация Elastic Stack
└── docker-compose.yaml # Development окружение
Система предоставляет полный цикл управления персональным сайтом - от публикации контента до взаимодействия с пользователями через комментарии и уведомления, с возможностью масштабирования как в development, так и в production среде.
Иван Зайцев,
FullStack Developer
© Novemebr, 2025


