Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- - Рассказ про рефакторинг в ключе "Раньше код повторялся, теперь - нет. Инкапсулировано всё что можно и что нельзя." (минут 4-5).
- Не забыть сделать вид, что выбор был сделан осознанно. (...)
- - Показать интеграционные тесты (2-3 минуты)
- Если спросят про фикстуры, затереть за conftest.py и предварительно погуглить это
- - Демонстрация фронт-енда (локально) (1-2 минуты)
- Растянуть минут на 5-7, рассказав кратенько про компоненты и сервисы
- - Рассказать и показать про multithreading (4-5 минут включая вопросы)
- Быть готовым к вопросу про обработку ошибок внутри потока
- - Suggar.Meta (штука, берущая всё с last_fm на aiohttp) (5-6 минут)
- Нафиг что-то отдельное: просто пощупать, как работать с aiohttp. С точки зрения логики эти данные нужны
- только в момент запроса от юзера и они очень часто изменяются. Поэтому имеет смысл сделать отдельный сервис,
- умеющий быстро обрабатывать кучу маленьких запросов
- Рассказать о том, что я понимаю, что вызов таки блокируется и надо это перепилить с pylast на asyncio
- ---ДЕВОПС---
- - Показать новые gitlab-ci (там параллельно запускаются тесты и flake8) (3 минуты)
- *ЩЁЛК*
- Окей, для начала я кратенько напомню о сервисе.
- Он нужен для централизованного управления музыкой в различных стриминговых сервисах.
- Это включает в себя генерацию плейлистов, редактирование их и синхронизация с внешними сервисами. (конкретно - с моим любимым спотифаем)
- *щёлк*
- В этом месяце планировали
- - избавиться от дублирования кода в веб-сервисе и в фоновых задачах;
- - реализовать несколько новых фичей как на бэке, так и на фронт-енде
- - увеличить быстродействие лямбд за счёт распаралеливания запросов
- - продолжить плавное погружение в тестирование и реализовать несколько интеграционных тестов
- *щёлк*
- Перед вами схема сервиса. На всякий случай кратенько напомню, что есть что.
- Сам веб-сервис развёрнут на elasticbeanstalk
- фоновые задачи переписаны с Celery на AWS Lambda
- база данных расположена на Amazon Relational Database Service
- В качестве некоего scheduler'a используется AWS CloudWatch.
- Т. к. лямбды и веб-сервис используют одну и ту же логику, решили вынести её в отдельный пакет.
- Ну и тут понеслось. Получилось 5 пакетов:
- - это Core, в котором содержится основная логика приложения
- - пакет Web, который предоставляет RESTful API для этой логики
- - пакет Lambda, содержащий фоновые задачи
- и пакеты Database и Auth, в них инкапсулирован соответствующий функционал
- Для этих пакетов созданы отдельные репозитории и вписаны соответствующие зависимости в setup.py и requirements.txt
- Был выбор между тем, чтобы использовать PyPI или репозитории gitlab'a, в итоге остановились на втором варианте из-за
- возможности в дальнейшем использовать приватные репозитории.
- В итоге компоненты проекта стали более независимыми, упростился процесс тестирования.
- Собственно, раз уж упомянуты тесты, стоит рассказать про это чуть подробнее.
- Был интерес пощупать и попробовать реализовать интеграционные тесты используя ещё один экземпляр базы
- Для этого реализована фикстура, которая подготавливает соединение с тестовой бд. Сами тесты проверяют
- процесс получения информации о треке. Соответственно, первый пробует получить существующий трек, второй - несуществующий.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement