Данный проект 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
- Пермяков Александр (Team Lead)
- Денис Димитриев (Backend-разработчик)
- Алексей Шаповалов (Backend-разработчик)