Advertisement
Guest User

The РЕЧЬ

a guest
Jun 19th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.46 KB | None | 0 0
  1. - Рассказ про рефакторинг в ключе "Раньше код повторялся, теперь - нет. Инкапсулировано всё что можно и что нельзя." (минут 4-5).
  2. Не забыть сделать вид, что выбор был сделан осознанно. (...)
  3.  
  4. - Показать интеграционные тесты (2-3 минуты)
  5. Если спросят про фикстуры, затереть за conftest.py и предварительно погуглить это
  6.  
  7. - Демонстрация фронт-енда (локально) (1-2 минуты)
  8. Растянуть минут на 5-7, рассказав кратенько про компоненты и сервисы
  9.  
  10. - Рассказать и показать про multithreading (4-5 минут включая вопросы)
  11. Быть готовым к вопросу про обработку ошибок внутри потока
  12.  
  13. - Suggar.Meta (штука, берущая всё с last_fm на aiohttp) (5-6 минут)
  14. Нафиг что-то отдельное: просто пощупать, как работать с aiohttp. С точки зрения логики эти данные нужны
  15. только в момент запроса от юзера и они очень часто изменяются. Поэтому имеет смысл сделать отдельный сервис,
  16. умеющий быстро обрабатывать кучу маленьких запросов
  17. Рассказать о том, что я понимаю, что вызов таки блокируется и надо это перепилить с pylast на asyncio
  18.  
  19. ---ДЕВОПС---
  20. - Показать новые gitlab-ci (там параллельно запускаются тесты и flake8) (3 минуты)
  21.  
  22. *ЩЁЛК*
  23.  
  24. Окей, для начала я кратенько напомню о сервисе.
  25. Он нужен для централизованного управления музыкой в различных стриминговых сервисах.
  26. Это включает в себя генерацию плейлистов, редактирование их и синхронизация с внешними сервисами. (конкретно - с моим любимым спотифаем)
  27.  
  28. *щёлк*
  29.  
  30. В этом месяце планировали
  31. - избавиться от дублирования кода в веб-сервисе и в фоновых задачах;
  32. - реализовать несколько новых фичей как на бэке, так и на фронт-енде
  33. - увеличить быстродействие лямбд за счёт распаралеливания запросов
  34. - продолжить плавное погружение в тестирование и реализовать несколько интеграционных тестов
  35.  
  36. *щёлк*
  37. Перед вами схема сервиса. На всякий случай кратенько напомню, что есть что.
  38. Сам веб-сервис развёрнут на elasticbeanstalk
  39. фоновые задачи переписаны с Celery на AWS Lambda
  40. база данных расположена на Amazon Relational Database Service
  41. В качестве некоего scheduler'a используется AWS CloudWatch.
  42.  
  43. Т. к. лямбды и веб-сервис используют одну и ту же логику, решили вынести её в отдельный пакет.
  44. Ну и тут понеслось. Получилось 5 пакетов:
  45. - это Core, в котором содержится основная логика приложения
  46. - пакет Web, который предоставляет RESTful API для этой логики
  47. - пакет Lambda, содержащий фоновые задачи
  48. и пакеты Database и Auth, в них инкапсулирован соответствующий функционал
  49.  
  50. Для этих пакетов созданы отдельные репозитории и вписаны соответствующие зависимости в setup.py и requirements.txt
  51. Был выбор между тем, чтобы использовать PyPI или репозитории gitlab'a, в итоге остановились на втором варианте из-за
  52. возможности в дальнейшем использовать приватные репозитории.
  53.  
  54. В итоге компоненты проекта стали более независимыми, упростился процесс тестирования.
  55. Собственно, раз уж упомянуты тесты, стоит рассказать про это чуть подробнее.
  56. Был интерес пощупать и попробовать реализовать интеграционные тесты используя ещё один экземпляр базы
  57. Для этого реализована фикстура, которая подготавливает соединение с тестовой бд. Сами тесты проверяют
  58. процесс получения информации о треке. Соответственно, первый пробует получить существующий трек, второй - несуществующий.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement