Клиенту была нужна масштабируемая серверная часть для мобильного и web-приложения, которое объединяет тренировки, программы, прогресс пользователей, подписки, платежи и взаимодействие тренеров с учениками.
Цель — построить надёжный backend уровня продукта, рассчитанного на рост аудитории и высокую нагрузку.
Я разработал backend полностью с нуля, выбрав микросервисную архитектуру, и выделил ключевые модули: авторизация, пользователи, тренировки, программы, активности, подписки, платежи, уведомления и бот-интеграции.
Технологический стек:
Go (актуальная версия);
PostgreSQL (основная БД);
Redis (кэш и ускорение горячих операций);
gRPC и REST API;
Docker Compose для локальных и прод-сред;
CI/CD на GitHub Actions;
миграции через Goose;
Nginx как шлюз;
Cron-сервис для автоматических бэкапов;
собственная система логирования и мониторинга.
Некоторые инженерные задачи, которые я решал:
проектирование гибкой схемы БД с множеством типов тренировок;
контроль состояния активностей (IN_PROGRESS, PAUSED, COMPLETED);
динамический конструктор SQL-фильтров;
использование транзакций для сложных связок сущностей;
оптимизация запросов + кэширование Redis;
работа с очередями и отдельными сервисами;
высокая устойчивость API при большом числе параллельных операций.
Интеграции:
платёжные системы, email-рассылки, Telegram-бот.
Получился продакшен-готовый backend, который стабильно обслуживает мобильных и веб-пользователей, поддерживает высокий уровень отказоустойчивости и легко масштабируется.
Система стала основой всей платформы: от тренировок и программ до подписок, платежей и уведомлений. Архитектура позволяет быстро расширять функциональность без переработки базовых модулей.