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