300 000
Туризм и отдых
Январь 2026
Разработать backend-основу сервиса бронирования для хостела: с управлением комнатами, пользователями, бронированиями, фотографиями, ролями и административными сценариями.
Цель проекта — не просто собрать CRUD-приложение, а спроектировать систему в production-style подходе: с разделением ответственности между сервисами, отдельными базами данных, API Gateway, внутренним gRPC-взаимодействием, миграциями, Docker-окружением и возможностью дальнейшего развития.
Отдельной задачей было реализовать понятную бизнес-логику бронирований: статусы, создание и просмотр заявок, работу с комнатами, фильтрацию, хранение фотографий и подготовку системы к дальнейшему расширению.
Проект был реализован как микросервисная backend-система на Go.
Архитектура включает API Gateway для внешнего REST API и внутренние сервисы для пользователей, комнат и бронирований. Взаимодействие между сервисами построено через gRPC, данные хранятся в отдельных PostgreSQL-базах по сервисам. Для локального запуска и инфраструктуры используется Docker Compose.
В системе реализованы:
- сервис пользователей с базовой ролевой моделью;
- сервис комнат с хранением параметров, цен и статусов публикации;
- сервис бронирований с бизнес-логикой заявок;
- API Gateway для клиентского и административного интерфейса;
- хранение фотографий комнат через S3-совместимое хранилище;
- миграции баз данных;
- observability-инфраструктура через Prometheus/Grafana и трассировку.
Frontend-часть использовалась для демонстрации клиентских и административных сценариев: просмотр комнат, работа с фотографиями, создание бронирований и управление данными через API.
На первом этапе была спроектирована структура микросервисов, выделены основные доменные сущности и границы ответственности: пользователи, комнаты, бронирования, фотографии и административные сценарии.
Были определены API-контракты, схема взаимодействия через API Gateway и gRPC, структура баз данных и подход к миграциям.
На втором этапе были реализованы основные backend-сервисы на Go: user-service, rooms-service, booking-service и API Gateway.
Каждый сервис получил собственную ответственность, конфигурацию, слой доступа к данным и миграции. Gateway объединил внутренние gRPC-сервисы в единый внешний REST API для клиентской и административной части.
На финальном этапе была собрана локальная инфраструктура через Docker Compose: базы данных, S3-совместимое хранилище для фотографий, сервисы приложения и инструменты наблюдаемости.
Также была добавлена работа с фотографиями комнат, базовая интеграция с frontend-частью и подготовка проекта к дальнейшему развитию: расширению ролей, улучшению авторизации, добавлению оплат и деплою во внешнее окружение.
Этот проект стал для меня практической демонстрацией production-style подхода к backend-разработке на Go: от доменной модели и API-контрактов до микросервисного взаимодействия, Docker-инфраструктуры и подготовки системы к дальнейшему развитию.
Главный фокус был на архитектуре, чистом разделении ответственности, работе с бизнес-сущностями и создании основы, которую можно расширять без полной переделки.