Кейсы

Docker Docker Compose Node.JS Redis MySQL MongoDB RabbitMQ Nginx Certbot Git CI/CD

Похожие кейсы:

Другие
2024 год

PET-проект

Тренировочный PET-проект с микросервисной архитектурой на Node.js. Docker Compose, Redis, MySQL, MongoDB, RabbitMQ и NGINX для масштабируемости, изоляции сервисов и CI/CD автоматизации.

Это микросервисная архитектура для управления абстрактным проектом, взаимодействия с пользователями через Telegram-бота и веб-интерфейсы (SPA и Web Client). Проект состоит из пяти специализированных Node.js сервисов (TGBOT, DWH, PRODUCT, USER, CRON), развернутых в Docker Compose, которые взаимодействуют через API Gateway (NGINX Server в режиме reverse proxy) и брокера сообщений RabbitMQ. Используют различные базы данных (Redis, MySQL, MongoDB) для хранения данных. Система включает полный CI/CD pipeline с автоматической сборкой через GitHub Actions/Runner, деплоем на VPS и уведомлениями о статусе развертывания.

Требовалось обеспечить независимость сервисов друг от друга для возможности их раздельного развертывания и масштабирования, организовать централизованную точку входа для API-запросов, интегрировать различные типы хранилищ данных под специфические задачи каждого сервиса, а также автоматизировать процесс доставки кода от разработки до продакшена с минимальным участием человека.

Задача решена через применение микросервисной архитектуры с контейнеризацией всех компонентов в Docker Compose для упрощения развертывания и изоляции окружений. API Gateway на базе NGINX выполняет роль reverse proxy, маршрутизируя запросы от клиентов к соответствующим сервисам и обеспечивая единую точку входа. Каждый сервис подключен к специализированному хранилищу: Redis для кеширования и очередей, MySQL для структурированных данных, MongoDB для документо-ориентированных данных, RabbitMQ для асинхронной коммуникации между сервисами. CI/CD реализован через GitHub Actions с автоматическими проверками кода, сборкой образов, деплоем на VPS через SSH и уведомлениями в процессе развертывания, а CRON Service исключен из очереди сообщений для выполнения изолированных периодических задач.

Основные возможности

  • Микросервисная архитектура
  • Множественные клиенты
  • Брокер сообщений RabbitMQ
  • Docker контейнеризация
  • Статический контент
  • API Gateway (NGINX)
  • Redis, MySQL, MongoDB
  • CRON Service
  • CI/CD автоматизация
  • SSL/HTTPS поддержка