103 lines
3.9 KiB
Markdown
103 lines
3.9 KiB
Markdown
# 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 под свои задачи.
|
||
|
||
Главная цель сервиса в рамках курса - показать **интеграцию и архитектурную роль**, а не конкретную реализацию.
|