/ugc-service

Сервис по хранению пользовательского контента (история просмотров фильмов, комментарии, лайки)

Primary LanguagePython

ugc-service

Стек технологий

  • Frontend (Nginx) - маршрутизация запросов
  • Backend (Fastapi) - получение и обработка запросов пользователя

backend библиотеки

  • fastapi - основной backend фреймворк
  • pydantic - валидация входящих данных api
  • uvicorn - локальный запуск проекта, gunicorn - запуск в прод. окружении
  • pyjwt - библиотека для работы с jwt

Линтеры

  • flake8, mypy, bandit

Init development

  1. init poetry and pre-commit
poetry install --no-root
poetry run pre-commit install
  1. env
cp ./.env.template ./.env
cp ./src/.env.template ./src/.env
  1. build and up docker local
make build-local
make up-local
  1. go to http://localhost:8000/docs

Init kafka

  1. build and up docker local
make up-kafka
  1. go to http://localhost:8090

Perfomance tests

install dependencies

poetry install --only performance_testing   

Vertica

  1. run vertica
make up-vertica
  1. wait until vertica is running

  2. Run test script

poetry run python3 performance_tests/vertica.py 

Mongo

  1. run mongo
make up-mongo
  1. wait until mongo is running

  2. Run test script

poetry run python3 performance_tests/mongo.py 

ELK

  1. create .env file and change it if you want
cp ./infra/elk/.env.template ./infra/elk/.env
  1. run elk
make up-elk
  1. wait until elk is running

  2. go to http://localhost:5601

login - elastic password - ES_PASSWORD from .env

Filebeat

Description

Filebeat забирает логи из папки logs/nginx и logs/ugc_service по-умолчанию и передаёт их в logstash elk.

Launch

  1. run filebeat
make up-filebeat
  1. check logs in kibana