3.9 KiB
Media Service
Этот репозиторий содержит media-service, используемый в проекте TeaCinema - сервис для хранения и раздачи медиа-файлов (постеры, баннеры фильмов и другие ассеты).
Сервис написан на Golang и используется в рамках курса по микросервисной архитектуре.
Контекст курса
В видео-курсе media-service не разрабатывается с нуля.
Вместо этого:
- показано, как сервис подключается к системе;
- как он интегрируется через gRPC contracts (proto);
- как его запускать и использовать в общей инфраструктуре.
Поэтому данный репозиторий предоставляется в готовом виде - как часть учебных материалов.
Proto-контракты
Media-service работает на основе gRPC proto-контрактов.
В рамках курса:
- proto-файлы пишутся и объясняются в видео;
- media-service просто подключается к этим контрактам.
Если вы хотите повторить проект самостоятельно, вам необходимо:
- Создать proto-контракты, ориентируясь на видео;
- Сгенерировать код для Go;
- Подключить их к media-service.
Таймкод в видео, где разбираются proto-контракты и их подключение: https://youtube.com/watch?v=EFXFVNDk2xM&t=83886s
Запуск
Media-service запускается как отдельный микросервис и предполагает:
- наличие gRPC-контрактов;
- корректные настройки окружения;
Подробная схема запуска всей системы разбирается в видеокурсе.
Установка зависимостей
Для установки зависимостей используйте стандартные команды Go:
# Инициализация модулей
go mod init github.com/yourusername/media-service
# Установка зависимостей
go mod tidy
[!Важно]
Перед запуском сервиса переименуйте файл .env.example в .env и заполните реальные значения для подключения к S3.
Запуск сервиса
Для запуска media-service есть два варианта:
Стандартный запуск через Go
# Запуск сервиса напрямую
go run cmd/main.go
# Или сборка бинарника и запуск
go build -o media-service cmd/main.go
./media-service
Разработка с hot reload через Air
Сервис можно запускать в режиме разработки с авто-перезапуском при изменениях кода, используя скрипт run_dev.sh:
./scripts/run_dev.sh
Скрипт автоматически:
- загружает переменные окружения из .env;
- запускает media-service с hot reload через Air.
Media-service предоставляется в учебных целях.
Вы можете:
- изменить способ хранения файлов;
- адаптировать API под свои задачи.
Главная цель сервиса в рамках курса - показать интеграцию и архитектурную роль, а не конкретную реализацию.