/Cinema

Репозиторий для разработки проекта на Я.Практикуме

Primary LanguagePython

Онлайн-кинотеатр

linters closed_issues commits/month repo-size top-language

watchers forks start


Инструкция по запуску здесь

Данный проект Cinema разбит на микросервисы, которые в совокупности образуют полноценный онлайн-кинотеатр.

В проект входят такие сервисы как:

  • Авторизация пользователей (auth_api)
  • API для работы с фильмами, жанрами и персонами (films_api)
  • Три ETL процесса которые отдельно перегружают персон, жанры и фильмы из PostgreSQL в ElasticSearch для работы films_api с постоянно обновляющимися данными.
  • Сервис который отслеживает просмотр фильма пользователем и позволяет ему продолжить с места остановки (ugc)
  • ETL процесс который перегружает события просмотров фильмов пользователями из Kafka в ClickHouse, для дальнейшей работы аналитиков.
  • Сервис уведомлений который обрабатывает некоторые события из других микросервисов и события созданные администратором в админ-панели посылая письма пользователям с возможностью расширения на другие типы уведомлений.
    • В папке notifications вы можете увидеть архитектуру.

films_api и auth_api обрабатывают запросы через Nginx.


Технологии используемые в проекте

Фреймворки:

  • FastAPI, Flask, Django

Авторизация:

  • JWT, OAuth2.0

Хранилища:

  • SQLite, PostgreSQL, ElasticSearch, Redis, Kafka, ClickHouse, RabbitMQ

Контейнеренизация:

  • Docker, Docker-Compose

Веб-сервера\Прокси:

  • Gunicorn, Uvicorn, Nginx

Разработчики

  1. Пермяков Александр (Team Lead)
  2. Денис Димитриев (Backend-разработчик)
  3. Алексей Шаповалов (Backend-разработчик)