media-service/README.md

103 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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:
```bash
# Инициализация модулей
go mod init github.com/yourusername/media-service
# Установка зависимостей
go mod tidy
```
> [!Важно]
> Перед запуском сервиса переименуйте файл .env.example в .env и заполните реальные значения для подключения к S3.
## Запуск сервиса
Для запуска media-service есть два варианта:
### Стандартный запуск через Go
```bash
# Запуск сервиса напрямую
go run cmd/main.go
# Или сборка бинарника и запуск
go build -o media-service cmd/main.go
./media-service
```
### Разработка с hot reload через Air
Сервис можно запускать в режиме разработки с авто-перезапуском при изменениях кода, используя скрипт `run_dev.sh`:
```bash
./scripts/run_dev.sh
```
Скрипт автоматически:
- загружает переменные окружения из .env;
- запускает media-service с hot reload через Air.
---
Media-service предоставляется **в учебных целях**.
Вы можете:
- изменить способ хранения файлов;
- адаптировать API под свои задачи.
Главная цель сервиса в рамках курса - показать **интеграцию и архитектурную роль**, а не конкретную реализацию.