Схема сервисов:
For Production:
For Develop (in root folder):
For Run with Tests:
Как запустить:
Запустить в виртуальном окружении (requirements.txt внутри папки):
Документация по Fast Api: http://localhost:8080/api/openapi
docker-compose-auth - сервис авторизации (Flask + Postgres + Redis)
Документация по Flask API (мы используем spectree): http://localhost:5001/apidoc/swagger/ http://localhost:5001/apidoc/redoc/
В качестве сервиса для авторизации через OAuth2 был выбран Яндекс (https://yandex.ru/dev/id/doc/dg/api-id/concepts/adoption.html)
После регистрации своего приложения был получен CliendID, Client Secret, а также назначен Redirect URl (На этот адрес будет перенаправлен пользователь после авторизации)
Для авторизации на FilmService необходимо в браузере перейти на эндпоинт /oauth-login (v1/auth/oauth.py), далее пользователь будет перенаправлен в Яндекс.OAuth, где ему нужно будет дать разрешение на предоставление данных в FilmService
Далее Яндекс.OAuth выдает временный код (code) и перенаправляет пользователя на Redirect URl (code в параметрах запроса)
В качестве Redirect URl задан тот же эндпоинт /oauth-login, но в случаи, если задан code, тогда идет запрос на Яндекс.OAuth для получения токенов доступа
С помощью access_token у Яндекс.OAuth мы будем иметь доступ к данным пользователя
Для запуска воспользуемся командой: docker-compose -f docker-compose-auth.yml --env-file=flask_app/.env up -d
После запуска контейнеров необходимо:
1) осуществить миграции: docker exec -it auth_server alembic upgrade head 2) сгенерировать основные роли: docker exec -it auth_server python create_roles.py
Для старта сервисов: docker-compose -f docker-compose-ugc.yaml --env-file .ugc.env --build up -d
Основные моменты в ETL:
Docker Compose файл для продакшн среды находится в ./prod_env
Было решено объединить backend сервис из прошлого спринта и сервис ugc_backend (ugc_backend/)
Для старта сервисов: docker-compose -f docker-compose-ugc.yaml --env-file .ugc.env --build up -d
Сравнение производительности mongo и postgres
В проект было добавлено логгирование (docker-compose-elk.yml) для сервиса ugc_backend и nginx
Сервис нотификации, функциональность:
Папка notification: