From 345de81b8d8e95b3be6fc5fde2cee2fe3e8b6936 Mon Sep 17 00:00:00 2001 From: Dzmitry Monich Date: Sun, 7 May 2023 17:20:27 +0400 Subject: [PATCH] Add task 8 --- case-study-template.md | 73 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 case-study-template.md diff --git a/case-study-template.md b/case-study-template.md new file mode 100644 index 0000000..f5993bf --- /dev/null +++ b/case-study-template.md @@ -0,0 +1,73 @@ +# Case-study рабочего проекта + +## Проект + +Рабочий проект - мобильное приложение по сопровождению игры в гольф: https://www.leaderboardgolf.co/. +Начиналось как замена карточек по введению актуального счета, потом разрослось то поддержки статистики +(синхронизирутеся с iGolf, USGA), аналитики, социальной активности (посты, +чаты через Sendbird (отдельный гемор), в процессе - Discord, Chat-GPT, etc. + +- Работаю в компании JetRockets, был нанят 1.5 года назад и это мой первый проект и в компании +и как программиста (переквалифицировался из научной сферы гуманитарного профиля). Первый месяц мне помогал тимлид, дальше - сам. +- Я делаю только бэкенд, фронт - полностью на стороне Заказчика, поэтому сразу исключил соответствующие оптимизации, а также +использование мониторинговых приложений вроде PG_hero, New Relic ибо нет фронта. Также исключил серверные оптимизации поскольку +деплоится на Heroku. +- Проекту 1.5 года, после запуска в Appstore я был перемещен на другой проект, потом вернули. +- Перформанс в принципе в порядке (от Заказчика жалоб не было) и я начал заниматся оптимизацией в большой степени для понимания +и прокачки скиллов. +- мониторинг - через Appsignal (перешел с Rollbar) +- Проект небольшой и несложный, что позволяет делать даже какие-то глобальные рефакторинги / оптимизации без особых проблем, если +есть время. + +## CPU / Memory + +Проект не тяжелый и проблема с CPU/Memory была только один раз когда я забыл поставить в rake-task find_each и он выполнялся +несколько дольше обычного:) - периодически выжиралась вся память. Обычный сервер лег бы наверно, но Heroku мучительно дотерпел +до конца таска). + +Взял на вооружение сайты https://github.com/fastruby/fast-ruby, https://github.com/DamirSvrtan/fasterer +Поскольку стоит гем rubocop-performance и я всегда внимателен к таким вещам, особых проблем по части выбора не оптимальных методов нет. +Выделил отдельным таском обовление Ruby и гемов и запланировал несколько итераций для этого (обновляю постепенно). +К данному моменту осталась последня итерация - апдейт нескольких гемов на мажорные версии. Гем bundler-audit взят на вооружение. + +## DB + +N+1 / preloads: +Используется Gem bullet, но уже редко, я постепенно разобрался как работать с N+1, а сам гем начал меня раздражать. + +Indexes: +Сделал отдельным таском проверку базы данных - удалил несколько лишних индексов и добавил новых, особенно учитывающих +порядок. Подключил gem 'strong-migrations' - отличная штука. + +Denormalization: +Определенную работу в плане замены уж очень тыжелых preloads денормализацией я проделал еще до начала этого Курса. +Тогда же я получил возможно главную похвалу на новой работе, когда Заказчик сказал на созвоне: 'А что-то я заметил, что приложение +на этом ендпойнте стало быстрее - это нормально?' + +## BackEnd + +Пересмотрел работу с воркерами на проекте - вынес пару сервисов в фоновые задачи и в одном месте планирую разукрупнить jobs. +Также в планах для мониторинга Better Uptime (на Heroku он в тестовом режиме бесплатный) + +## DX + +Поскольку познакомился с гемом test-prof еще до Курса, большая часть работы в этом плане уже была сделана. Но не все. +Добавлен parallel_tests. + +## Servers / Plans + +(пересмотреть лекцию Servers) + +Запланировано рабочим таском на следущий Sprint добавить в Github CI Проекта: +- gem parallel_test +- гем bundler-leak +- гем bundler-audit +(brakeman уже используется) + +Запланировано на субботник: +- gem oink +- работа c Gemfile: + - gem derailed + - require: false +- посмотреть идею (из крайней лекции) работы с DateTime при поиске / калькуляциях как с timestamp +- изучить возможности Better Uptime для подключения как addon на Heroku