Giter Club home page Giter Club logo

ugc_sprint_2's Introduction

UGC

Сервис UGC. Ссылка на репозиторий для ревью.
https://github.com/Neoduss/ugc_sprint_2

По замечанию №3

https://github.com/Neoduss/ugc_sprint_2/tree/main/ugc/src/api/app - сервис отвечающий за прием времени остановки просмотра фильма для аналитиков
https://github.com/Neoduss/ugc_sprint_2/user_data_api/src/app/ - сервис для работы с лайками, ревью и закладками

Комманды для запуска проекта

make ugc_build_up

  • Поднимает все контейнеры

make ugc_destroy

  • Убивает все контейнеры
  • Чистит вольюмы

Все комманды make

  • make help

Инфрастуктура

Clickhouse доступен по адресу http://localhost:8123/play
Kibana достуна по адресу http://127.0.0.1:5601/

  • Для создания доступно 3 индекса apm etl nginx
  • apm полная информация по сервису API
  • etl лог сервиса etl
  • nginx лог запросов

Документация достуна по адресу http://127.0.0.1/api/openapi
API http://127.0.0.1/api/v1/view_film/

CI/CD

Добавлены notifications в telegram при pull_request. Используется https://github.com/marketplace/actions/telegram-message-notify

Добавлена проверка линтерами wemake-python-styleguide и проверка типов mypy

При создании pull_request срабатывает CI на версиях python 3.7, 3.8 и 3.9

Репорты по codestyle и проверки типов сохраняются в artifacts в html

Для того, чтобы скачать отчет, переходим в actions, заходим в последний Linter check

Внизу страницы видим отчет.

ugc_sprint_2's People

Contributors

neoduss avatar bisumei avatar evdrug avatar

Watchers

 avatar

Forkers

evdrug

ugc_sprint_2's Issues

01_Исследование по выбору хранилища

Вам нужно провести исследование по выбору хранилища. Предлагаем идти по этому чек-листу:

Выбрать хранилище для задачи.
Написать скрипт, который генерирует в хранилище данные.
Измерить скорость добавления и чтения данных:
Тестирование чтения уже загруженных данных. Тестирование нужно проводить на реальных кейсах (2–3 из набора):
список понравившихся пользователю фильмов (список лайков пользователя);
количество лайков или дизлайков у определённого фильма;
список закладок;
средняя пользовательская оценка фильма.
Тестирование чтения данных, поступающих в реальном времени:
добавление лайка или дизлайка и время появления лайка или дизлайка в сценариях, описанных выше.
Выбрать и описать причины выбора:
разработать отдельный сервис;
добавить в уже существующий сервис.

Итоги

В результате вашего исследования должны появиться чёткие ответы и понятия:
Хранилище с описанием причин его выбора. Опишите ваш вариант хранения данных.
Результаты тестирования скорости работы с хранилищем в формате .md файла (README.md).
Файлы для воспроизведения исследования:
docker-compose.yml для запуска кластера с хранилищем;
конфигурационные файлы для хранилища (если такие есть);
скрипт генерации данных в хранилище;
скрипт тестирования чтения данных из хранилища;
README.md, в котором описано, как запустить хранилище и скрипты.
Описание реализации сервиса:
разработка отдельного сервиса (Почему именно так? Какие могут быть проблемы?);
добавление в уже существующий сервис (Почему именно так? Какие могут быть проблемы?).
Все результаты исследования оформите для ревью и отправьте вашему ментору по выбору хранилища.

Подсказка 1

Для этой задачи скорость записи не так важна, как скорость чтения. Скорость чтения должна быть главным критерием выбора хранилища.

Подсказка 2

При выборе хранилища учитывайте его сильные и слабые стороны, а также движок базы данных. Например, запись в LSM-Tree происходит быстрее, чем чтение, но LSM-Tree всё же используется в некоторых БД.

02 CI/CD

Исправить проверку линтерами.
flake8 желательно заменить на wemake-python-styleguide
Сделать вывод в красивый html-файл. В настройках линтеров есть такая опция.
Добавить проверку типов с помощью mypy.
Сделать проверку работоспособности кода на версиях python 3.7, 3.8 и 3.9. В этом поможет использование strategy.
Добавить отправку сообщения об успешности прохождения CI в телеграм.
Сделать срабатывание CI-процесса на новые pull request в master-ветку.
Исправить все недочёты, найденные линтерами и статическими анализаторами.

Code review

Привет! Молодцы! Ниже несколько рекомендаций:

  1. Давайте сделаем так, чтобы sentry можно было отключать через конфиг, например, в тестах
  2. Прочитайте более внимательно для чего нужен этот параметр: https://docs.sentry.io/platforms/python/performance/#configure-the-sample-rate. Это рейт не по ошибкам, а по транзакциям, по факту это что-то вроде мониторинга, но есть проблема, что sentry в это не особо умеет (умирает под не очень большой нагрузкой), рекомендую не выставлять этот параметр или явно прописывать 0
  3. Не понял зачем вы здесь код дублируете
  4. Не рекомендую под main писать такой объем кода, давайте вынесем его в функцию и немного декомпозируем

03 Логирование(ELK, Sentry)

Настройте Sentry и наладьте в отправку json-логов в ELK для всех сервисов.
Перед сдачей кода на ревью убедитесь:
что вы можете просмотреть логи каждого приложения;
в логах корректно указан X-Request-Id;
информация разделена по уровням важности;
по записям в логах можно воссоздать происходившее в сервисах;
в логах нет приватной информации;
логи собираются из файла или с stdout.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.