Skip to content

KseniiaKarpova/Auth_sprint_2

Repository files navigation

Проектная работа 7 спринта

Техническое задание:

  1. Создайте интеграцию Auth-сервиса с сервисом выдачи контента и панелью администратора Django, используя контракт, который вы сделали в прошлом задании.

    При создании интеграции не забудьте учесть изящную деградацию Auth-сервиса. Как вы уже выяснили ранее, Auth сервис один из самых нагруженных, потому что в него ходят большинство сервисов сайта. И если он откажет, сайт отказать не должен. Обязательно учтите этот сценарий в интеграциях с Auth-сервисом.

  2. Добавьте в Auth трасировку и подключите к Jaeger. Для этого вам нужно добавить работу с заголовком x-request-id и отправку трасировок в Jaeger.

  3. Добавьте в сервис механизм ограничения количества запросов к серверу.

  4. Партицируйте таблицу с пользователями. Подумайте, по каким критериям вы бы разделили её. Важно посмотреть на таблицу не только в текущем времени, но и заглядывая в некое будущее, когда в ней будут миллионы записей. Пользователи могут быть из одной страны, но из разных регионов. А ещё пользователи могут использовать разные устройства для входа и иметь разные возрастные ограничения.

  5. Упростите регистрацию и аутентификацию пользователей в Auth-сервисе, добавив вход через социальные сервисы. Список сервисов выбирайте исходя из целевой аудитории онлайн-кинотеатра — подумайте, какими социальными сервисами они пользуются. Например, использовать OAuth от Github — не самая удачная идея. Ваши пользователи не разработчики и вряд ли имеют аккаунт на Github. А вот добавить VK, Google, Yandex или Mail будет хорошей идеей.

    Вам не нужно делать фронтенд в этой задаче и реализовывать собственный сервер OAuth. Нужно реализовать протокол со стороны потребителя.

    Информация по OAuth у разных поставщиков данных:

Дополнительное задание Реализуйте возможность открепить аккаунт в соцсети от личного кабинета.

Запуск проекта

1 step

create .env file based on .env.example

cp env_example .env

Edit .env file.

2 step

Сборка проекта

docker-compose up -d --build

3 step

Провести миграции для postgres_file_api сервиса docker-compose run file_api alembic revision --autogenerate -m "{название миграции}" docker-compose run file_api alembic upgrade "{название миграции}"

4 step

Заполнение базы данных из sqlite в Postgres

curl -XGET http://0.0.0.0:8888/migrate

5 step

Посмотреть результат загрузки данных через Админку

curl -XGET http://127.0.0.1:80/api/v1/movies/

6 step

Пример:

curl -X 'GET' \
  'http://127.0.0.1:8080/api/v1/persons/6dd77305-18ee-4d2e-9215-fd1a496ccfdf/film' \
  -H 'accept: application/json'

Links

1.Django admin panel
2.Swagger для CinemaApi
3.Minio S3
4.Swagger для FileApi
5.Swagger для AuthAPI

Tests

docker-compose -f docker-compose-tests.yml up --build

unit-тесты для сервиса FileAPI:

docker exec file_api pytest /app/test.py

Jaeger

URL : http://localhost:16686/search