media-service/README.md

3.9 KiB
Raw Permalink Blame History

Media Service

Этот репозиторий содержит media-service, используемый в проекте TeaCinema - сервис для хранения и раздачи медиа-файлов (постеры, баннеры фильмов и другие ассеты).

Сервис написан на Golang и используется в рамках курса по микросервисной архитектуре.


Контекст курса

В видео-курсе media-service не разрабатывается с нуля.
Вместо этого:

  • показано, как сервис подключается к системе;
  • как он интегрируется через gRPC contracts (proto);
  • как его запускать и использовать в общей инфраструктуре.

Поэтому данный репозиторий предоставляется в готовом виде - как часть учебных материалов.


Proto-контракты

Media-service работает на основе gRPC proto-контрактов.

В рамках курса:

  • proto-файлы пишутся и объясняются в видео;
  • media-service просто подключается к этим контрактам.

Если вы хотите повторить проект самостоятельно, вам необходимо:

  1. Создать proto-контракты, ориентируясь на видео;
  2. Сгенерировать код для Go;
  3. Подключить их к 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 под свои задачи.

Главная цель сервиса в рамках курса - показать интеграцию и архитектурную роль, а не конкретную реализацию.