-
Создайте интеграцию Auth-сервиса с сервисом выдачи контента и панелью администратора Django, используя контракт, который вы сделали в прошлом задании.
При создании интеграции не забудьте учесть изящную деградацию Auth-сервиса. Как вы уже выяснили ранее, Auth сервис один из самых нагруженных, потому что в него ходят большинство сервисов сайта. И если он откажет, сайт отказать не должен. Обязательно учтите этот сценарий в интеграциях с Auth-сервисом.
-
Добавьте в Auth трасировку и подключите к Jaeger. Для этого вам нужно добавить работу с заголовком x-request-id и отправку трасировок в Jaeger.
-
Добавьте в сервис механизм ограничения количества запросов к серверу.
-
Партицируйте таблицу с пользователями. Подумайте, по каким критериям вы бы разделили её. Важно посмотреть на таблицу не только в текущем времени, но и заглядывая в некое будущее, когда в ней будут миллионы записей. Пользователи могут быть из одной страны, но из разных регионов. А ещё пользователи могут использовать разные устройства для входа и иметь разные возрастные ограничения.
-
Упростите регистрацию и аутентификацию пользователей в Auth-сервисе, добавив вход через социальные сервисы. Список сервисов выбирайте исходя из целевой аудитории онлайн-кинотеатра — подумайте, какими социальными сервисами они пользуются. Например, использовать OAuth от Github — не самая удачная идея. Ваши пользователи не разработчики и вряд ли имеют аккаунт на Github. А вот добавить VK, Google, Yandex или Mail будет хорошей идеей.
Вам не нужно делать фронтенд в этой задаче и реализовывать собственный сервер OAuth. Нужно реализовать протокол со стороны потребителя.
Информация по OAuth у разных поставщиков данных:
Дополнительное задание Реализуйте возможность открепить аккаунт в соцсети от личного кабинета.
create .env file based on .env.example
cp env_example .env
Edit .env file.
Сборка проекта
docker-compose up -d --build
Провести миграции для postgres_file_api сервиса docker-compose run file_api alembic revision --autogenerate -m "{название миграции}" docker-compose run file_api alembic upgrade "{название миграции}"
Заполнение базы данных из sqlite в Postgres
curl -XGET http://0.0.0.0:8888/migrate
Посмотреть результат загрузки данных через Админку
curl -XGET http://127.0.0.1:80/api/v1/movies/
Пример:
curl -X 'GET' \
'http://127.0.0.1:8080/api/v1/persons/6dd77305-18ee-4d2e-9215-fd1a496ccfdf/film' \
-H 'accept: application/json'
1.Django admin panel
2.Swagger для CinemaApi
3.Minio S3
4.Swagger для FileApi
5.Swagger для AuthAPI
docker-compose -f docker-compose-tests.yml up --build
unit-тесты для сервиса FileAPI:
docker exec file_api pytest /app/test.py