From 700db476ecb1fe9bb7d8062993e8faca8ad76156 Mon Sep 17 00:00:00 2001 From: Alexey Ivanov Date: Sun, 12 Dec 2021 17:09:59 +0300 Subject: [PATCH] eighth task --- case-study.md | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++ img.png | Bin 0 -> 44483 bytes 2 files changed, 71 insertions(+) create mode 100644 case-study.md create mode 100644 img.png diff --git a/case-study.md b/case-study.md new file mode 100644 index 0000000..bcab596 --- /dev/null +++ b/case-study.md @@ -0,0 +1,71 @@ +# О проекте + +Проект -- админка + личный кабинет клиента. +В личном кабинете клиент может покупать лицензии на основной продукт, смотреть свои счета и платежи, заводить тикеты. +В админке построено управление клиентами, лицензиями, платежными системами и продажами. Традиционно в комплекте гора отчётиков. + +Проект разрабатывается с 2013 года и 3-их рельс, на момент моего прихода были 4 рельсы и руби 2.3, сейчас 6.1 и 2.7 соответственно. + +На данный момент у пользователей нет конкретных жалоб на перфоманс, отчет NewRelic для конечного юзера показывает Apdex 0.99 и среднее время полной загрузки 1.14с, среднее время ответа апп сервера 167мс. +В том же нью релике нет явно страдающих страниц, разве что несколько отчетов которые открываются раз в месяц. Ради интереса можно попробовать их попрофилировать, но пока на это времени выделить не получилось ибо конечного профита почти нет. + +Нагрузка на проект не очень большая, у нас примерно 50 человек активных пользователей админки и примерно 2000 живых клиентов. + +Для мониторинга у нас используются NewRelic а также Prometheus + Grafana, раньше еще была сборка перфоманса в Aitbrake но она явно проигрывает нью релику, да и от основной функциональности Эирбрейка отказались в пользу Sentry. + +На проекте два года, на момент прихода был единственным разработчиком, сейчас тимлид небольшой команды и 3 человек. + +# Оптимизации + +## Оптимизация DX + +### Оптимизация тестов +В рамках 7 дз оптимизировали тесты ускорив их в 3.5 раза, теперь гораздо удобнее прогонять их локально и быстрее проходит CI. + +### Оптимизация сборки ассетов + +Решил посмотреть что там с ассетами, обнаружил что у нас так и живет в скопившемся легаси фронта целых три Jquery -- один через гем, один через вебпак и один в папочке vendor. +Оставили только тот что через вебпак, ассеты собираются быстрее и в лк клиента объем подключаемого жс упал в два раза -- с 3 до 1.5 мб, так что тут оптимизация не только DX но и браузерная. + +Ещё одна "оптимизация" -- в проекте была небольшая часть на реакте, выкинули реакт целиком, испытали много радости. Ну и соответственно асеты собираются теперь быстрее. + +### Оптимизации Gitlab CI + +Немного оптимизировал CI удалив явно лишнее и добавив кеширование прекомпилированных ассетов, в слуае если фронт не менялся теперь экономим несколько минут. +Еще одна небольшая оптимизация -- удалял прогон последний стадии (деплой) для всех веток кроме мастера и стейджинга, там все равно ансибл ничего не делал потому что нет хостов а время на инициализацию таски тратилось. + +## Оптимизация приложения + +### Обновление руби/рельсов + +Мы регулярно обновляем руби/рельсы в своих проектах, если в начале это было настоящьей болью -- куча легаси-кода, тонны деприкейшенов, околонулевое покрытие тестами, то сейчас все обновления проходят достаточно гладко, как по мне это показатель качества кода и уровня техдолга в проекте. +К сожалению, конкретных замеров влияния на производительность между обновлениями не проводили. + +### Оптимизация бд + +Подключили pgadmin, коллега добавил индексов, ушло несколько медленных запросов + +### Снижение лишней нагрузки с помощью нью релика + +Нью релик показал что огномное количество нагрузки генирируется миддлваре которая собирает некоторые не особо нужные кастомные метрики в прометеус. +Выкинули их, график говорит сам за себя +![img.png](img.png) + +### Оптимизации внешних сервисов + +С помощью того же нью релика заметил что много времени уходит на внешние запросы, там где это возможно -- оптимизировали их с помощью асинхронных запросов и кеширование, для некоторых сервисов завел тикеты на ответственных за сервис с простбой ускорить его работу. + +# Запланированные оптимизации + +## Обновление линукса и пакетов +На проде 18 убунта с отключенными автообновлениями, запланировали поставить свежую + +## Обновление постгреса +У нас стоит очень старая версия (10), запланировали переезд на новую + +## Оптимзация фронтенда +Заметил в coverage что подключается очень жирная либа которая на первый взгляд нигде не нужна, поизучаем этот вопрос + +## Применение бест-практис +В курсе узнал немало нового (к слову, Алексей, большой Вам спасибо!), хочется чтобы в голове отложилось как можно больше, в частности всякие мелочи типо применения `.take` вместо `.first` и тд. +В целом один из главных результатов курса лично для меня -- я стал больше задумываться над кодом который пишу с точки зрения производительности, и теперь обладаю пониманием какие инструменты можно использовать для профилирования diff --git a/img.png b/img.png new file mode 100644 index 0000000000000000000000000000000000000000..3dce671d5e09dd31d9712aaf711bf05854f8e993 GIT binary patch literal 44483 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 z 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 G=YIgZdkXac literal 0 HcmV?d00001