Привет performance lovers!
Мы вместе с коллегой занимаемся Observability as code, и обнаружили что для хранения информации по сотне тысяч сервисов InfluxDB (v1) быстро и просто принимает метрики (если вставлять пачками по 10 000), но медленно потом отдает группировки, а вот Postgres позволяет и записать метрики и быстро показать
Думаю надо будет попозже сделать отчёт сравнение. Потому что такие возможности как LIMIT и SLIMIT мы не попробовали даже для InfluxQL:
https://docs.influxdata.com/influxdb/v2/query-data/influxql/explore-data/limit-and-slimit/
И сравнивали на запросе
SELECT * FROM …
Продолжение следует
Подписывайтесь на канал и жмите на 🛎️
Мы вместе с коллегой занимаемся Observability as code, и обнаружили что для хранения информации по сотне тысяч сервисов InfluxDB (v1) быстро и просто принимает метрики (если вставлять пачками по 10 000), но медленно потом отдает группировки, а вот Postgres позволяет и записать метрики и быстро показать
Думаю надо будет попозже сделать отчёт сравнение. Потому что такие возможности как LIMIT и SLIMIT мы не попробовали даже для InfluxQL:
https://docs.influxdata.com/influxdb/v2/query-data/influxql/explore-data/limit-and-slimit/
И сравнивали на запросе
SELECT * FROM …
Продолжение следует
Подписывайтесь на канал и жмите на 🛎️
Influxdata
LIMIT and SLIMIT clauses | InfluxDB OSS v2 Documentation
Use the LIMIT and SLIMIT clauses to limit the number of points and series returned in queries.
❤5
В инструменте FlameGraph Брендена Грегга есть возможность визуально показать на графе новые/другие части другим цветом. Делается за счет того, для каждой строки можно сохранить какой сейчас используется цвет, а потом переиспользовать его при формировании графа для нового профилирования, для которого будет задана другая расцветка
Описано это вот тут — как переиспользовать палитру
https://github.com/brendangregg/FlameGraph?tab=readme-ov-file#consistent-palette
Вот есть два примера
- https://github.com/brendangregg/FlameGraph/blob/master/demos/palette-example-broken.svg
- https://github.com/brendangregg/FlameGraph/blob/master/demos/palette-example-working.svg
А мне захотелось чтобы все вызовы методов работы с БД были одного цвета, все вызовы бизнес-логики другого, ...
Поэтому придумал категории, префиксы категорий и цвета категорий:
Вуаля, немного кода, несколько часов отладки, и получаются слои во FlameGraph разных цветов
Описано это вот тут — как переиспользовать палитру
https://github.com/brendangregg/FlameGraph?tab=readme-ov-file#consistent-palette
Вот есть два примера
- https://github.com/brendangregg/FlameGraph/blob/master/demos/palette-example-broken.svg
- https://github.com/brendangregg/FlameGraph/blob/master/demos/palette-example-working.svg
А мне захотелось чтобы все вызовы методов работы с БД были одного цвета, все вызовы бизнес-логики другого, ...
Поэтому придумал категории, префиксы категорий и цвета категорий:
# Jetty HTTP server
org.eclipse.jetty.=JETTY_BOILERPLATE
# Jersey JAX-RS (javax.ws.rs. must be before javax. for longest-prefix-wins)
org.glassfish.jersey.=JERSEY_BOILERPLATE
javax.ws.rs.=JERSEY_BOILERPLATE
# Kotlin standard library and coroutines
kotlin.=KOTLIN_STDLIB
kotlinx.coroutines.=KOTLIN_STDLIB
# JVM runtime
java.=JVM_RUNTIME
javax.=JVM_RUNTIME
jdk.=JVM_RUNTIME
sun.=JVM_RUNTIME
com.sun.=JVM_RUNTIME
Вуаля, немного кода, несколько часов отладки, и получаются слои во FlameGraph разных цветов
🔥3
Привет Performance lovers!
На фото интересный вариант визуализации данных семплирования приложения за 1 час
🤩 3600 точек по горизонтали (по количеству секунд и стек-трейсов)
🤩 500-800 точек по вертикали (по количеству потоков)
а цветами обозначено состояние потоков:
🤩 вот видно, в конце, справа, как произошла недолгая блокировка 🔴
🤩 а в середине, были активны Async-потоки, которые ждали ответов от внешних систем 🔵
🤩 еще видно как пул потоков jetty постепенно уменьшается, а потом jetty делает всплеск и запускает новую партию активных потоков
На фото интересный вариант визуализации данных семплирования приложения за 1 час
а цветами обозначено состояние потоков:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1
Привет Performance lovers!
Оценим отчет по тесту:
🤩 Запросы инструментом подаются ровно (верхний график)
🤩 А вот ответы в 09:13:10 и дальше нестабильны (нижний график)
Если бы запросы подавались нестабильно, то я бы подумал, что дело в периодической сборке мусора JVM на стороне инструмента нагрузки
Но тут ответы нестабильные, скорее всего дело в периодической сборке мусора JVM на стороне нагружаемого сервера
И действительно — данные телеметрии, которые собираются инструментом профилирования, показывают что это G1 OLD Generation сборка мусора именно в моменты этих всплесков (коллега у меня называет их "вздрыжнями" 😄)
Я пока не настроил полноценное Observability временных тестовых стендов, которые создаются во время работы pipeline. Использую только YourKit snapshot который записывается в каталог логов при остановке процесса и логи приложения. А build-агент потом создает zip-архив с файлами
В дальнейшем сделаю и отправку логов и отправку метрик. Для начала хватает YourKit-а и логов
Возможно, само профилирование потребляет много ресурсов. А может быть нагрузка очень высокая для такого малого тестового стенда. А может стоит добавить некоторые оптимизации
Оценим отчет по тесту:
Если бы запросы подавались нестабильно, то я бы подумал, что дело в периодической сборке мусора JVM на стороне инструмента нагрузки
Но тут ответы нестабильные, скорее всего дело в периодической сборке мусора JVM на стороне нагружаемого сервера
И действительно — данные телеметрии, которые собираются инструментом профилирования, показывают что это G1 OLD Generation сборка мусора именно в моменты этих всплесков (коллега у меня называет их "вздрыжнями" 😄)
Я пока не настроил полноценное Observability временных тестовых стендов, которые создаются во время работы pipeline. Использую только YourKit snapshot который записывается в каталог логов при остановке процесса и логи приложения. А build-агент потом создает zip-архив с файлами
В дальнейшем сделаю и отправку логов и отправку метрик. Для начала хватает YourKit-а и логов
Возможно, само профилирование потребляет много ресурсов. А может быть нагрузка очень высокая для такого малого тестового стенда. А может стоит добавить некоторые оптимизации
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Привет performance lovers!
Придумывал как анализировать данные профилирования в pipeline (автоматически)
И придумал схему с InfluxDB
Длительность
🤩 1 минута — через такое время после проблемы срабатывает алерт
🤩 15 минут — через такое время после запроса данных профилирования, формируется готовый к анализу файл
🤩 30 минут — столько времени занимает анализ файла профилирования и формирования отчета
🤩 60 минут — в файле профилирования хранятся данные за последние 60 минут с момента сохранения файла
Проблема
В общем, процесс не быстрый
🤩 за 1+15 минут успеет случится до 16 алертов
Отработать каждый из них отдельно неэффективно. Ведь у нас есть файл за 60 минут, все 16 алертов туда поместятся
Нужен накопитель
🤩 а что если накапливать информацию по необработанным алертам в InfluxDB и отрабатывать их группами
Выбрал тут InfluxDB потому что оказалось просто отправить по HTTP в это хранилище сообщение-метрику
И тот механизм который отправляет алерты через HTTP WebHook в мессенджер, также отправляет теперь и сообщение в базу данных
Нужно теперь обработать алерты
Вот это сложная часть. Пока есть только идеи, как можно это сделать. Дорабатываю инструменты, дроблю и уточняю алерты
Надеюсь, получится через год передать автоматике тот процесс, который сделал уже вручную сотню раз
Придумывал как анализировать данные профилирования в pipeline (автоматически)
И придумал схему с InfluxDB
Длительность
Проблема
В общем, процесс не быстрый
Отработать каждый из них отдельно неэффективно. Ведь у нас есть файл за 60 минут, все 16 алертов туда поместятся
Нужен накопитель
Выбрал тут InfluxDB потому что оказалось просто отправить по HTTP в это хранилище сообщение-метрику
И тот механизм который отправляет алерты через HTTP WebHook в мессенджер, также отправляет теперь и сообщение в базу данных
Нужно теперь обработать алерты
Вот это сложная часть. Пока есть только идеи, как можно это сделать. Дорабатываю инструменты, дроблю и уточняю алерты
Надеюсь, получится через год передать автоматике тот процесс, который сделал уже вручную сотню раз
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2
Привет performance lovers!
Наткнулся на статью
https://jbachorik.github.io/posts/stackprofile-jfr
Где Jaroslav Bachorik (https://www.linkedin.com/in/jbachorik/) рассказывает про jfr-shell и как это можно использовать и как консольную утилиту для работы с профилированием и как MCP-сервер (как основу для скиллов)
И понял что делаю тоже самое. Я тоже работаю над вопросом "When Did That Hotspot Happen?". Мои скрипты генерируют HTML вместо TUI, но идея та же — получение флейм-графа на основе конкретного временного диапазона, группы потоков и паттерна стектрейса:
🤩 Выделить блоки из стектрейсов (например,
🤩 Подготовить таймлайн с блоками (сверху)
🤩 Определить аномалии (outliers) — это необычно долгие блоки среди всех и среди таких же блоков
🤩 Выделить временной диапазон с аномалиями и группу потоков (у меня это в 99% случаев потоки qtp)
🤩 Агрегация всех блоков с выбранным именем из этого диапазона времени и группы потоков в итоговый флейм-граф
Я сейчас использую YourKit, но думал все что надо перейти на JFR тоже или сделать такой код чтобы и JFR и YourKit поддерживались. А вот получается для JFR уже есть инструменты. И это очень круто!!
Наткнулся на статью
https://jbachorik.github.io/posts/stackprofile-jfr
Где Jaroslav Bachorik (https://www.linkedin.com/in/jbachorik/) рассказывает про jfr-shell и как это можно использовать и как консольную утилиту для работы с профилированием и как MCP-сервер (как основу для скиллов)
И понял что делаю тоже самое. Я тоже работаю над вопросом "When Did That Hotspot Happen?". Мои скрипты генерируют HTML вместо TUI, но идея та же — получение флейм-графа на основе конкретного временного диапазона, группы потоков и паттерна стектрейса:
SearchSuggestions.getQueryFeatures)Я сейчас использую YourKit, но думал все что надо перейти на JFR тоже или сделать такой код чтобы и JFR и YourKit поддерживались. А вот получается для JFR уже есть инструменты. И это очень круто!!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
Привет любители Linkedin и производительности!
Я слышал про это, но думал, что это шутка. Но в Linkedin встроен детектор расширений браузера Chrome. Написан он коряво и просто перебирает все возможные расширения через HTTP-запросы. И вот сработал для меня сейчас. Проверяется 4278 расширений (на фото 1309 уже проверено) — сайт понятно не грузится и тормозит жестко
Кто-то на...кодил🤦♂️ знатно на главной странице
А расширений у меня в браузере нет. Вот незадача. Лишь тормоза и нагревание воздуха
Из крутого в Sources сейчас по умолчанию показывается сколько раз каждая строка кода выполнилась — профилирование включено по умолчанию
И раз уж этот пост про linkedin — https://www.linkedin.com/in/v8v/ — добавляйтесь в контакты 🤗
Я слышал про это, но думал, что это шутка. Но в Linkedin встроен детектор расширений браузера Chrome. Написан он коряво и просто перебирает все возможные расширения через HTTP-запросы. И вот сработал для меня сейчас. Проверяется 4278 расширений (на фото 1309 уже проверено) — сайт понятно не грузится и тормозит жестко
Кто-то на...кодил
А расширений у меня в браузере нет. Вот незадача. Лишь тормоза и нагревание воздуха
Из крутого в Sources сейчас по умолчанию показывается сколько раз каждая строка кода выполнилась — профилирование включено по умолчанию
И раз уж этот пост про linkedin — https://www.linkedin.com/in/v8v/ — добавляйтесь в контакты 🤗
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Привет любители производительности!
Появилась задача тестировать текстовый поиск, текстовый индекс и большие тексты. И подумал — а где мне взять внятный текст большого размера?
Выбор пал на книгу:
🤩 https://github.com/dendibakh/perf-book
🤩 Denis Bakhvalov - Performance Analysis and Tuning on Modern CPUs
под лицензией "Creative Commons Zero v1.0 Universal"
🤩 https://github.com/dendibakh/perf-book/blob/main/LICENSE
В формате MarkDown это 460 КБайт текста. Если сделать статью где будет две таких книги подряд — 920 КБайт, а если три — 1300 КБайт.
Сама книга отличная. И я сразу нашел узкие места, она оказалась еще и очень удачной !!!
Следующая версия YouTrack будет с оптимизациями касательно статей и более быстрой обработки крупных текстов
Появилась задача тестировать текстовый поиск, текстовый индекс и большие тексты. И подумал — а где мне взять внятный текст большого размера?
Выбор пал на книгу:
под лицензией "Creative Commons Zero v1.0 Universal"
В формате MarkDown это 460 КБайт текста. Если сделать статью где будет две таких книги подряд — 920 КБайт, а если три — 1300 КБайт.
Сама книга отличная. И я сразу нашел узкие места, она оказалась еще и очень удачной !!!
Следующая версия YouTrack будет с оптимизациями касательно статей и более быстрой обработки крупных текстов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍2
Привет любители производительности!
Согласно аналитике с levels, habr, … в нагрузке в 2026-м платить стали больше, особенно в GPU и AI-проектах
Если есть ускорение за счет AI, использование облаков, k6 и Rust, если уже не просто скрипты, а SRE-путь, …
И всем же интересно что качать, чтобы доходы росли? И здорово понимать, какие вообще сейчас доходы
Вот тут 4 анонимных опроса про локацию, доход, технологии и тренды:
🤩 https://t.me/qa_load/170588/170590
🤩 https://t.me/qa_load/170588/170593
🤩 https://t.me/qa_load/170588/170595
🤩 https://t.me/qa_load/170588/170596
Примите участие в них. Они закроются через месяц автоматически и обсудим результаты. Сравним тенденции и данные аналитиков с тем что видят любители нагрузки своими глазами
Согласно аналитике с levels, habr, … в нагрузке в 2026-м платить стали больше, особенно в GPU и AI-проектах
Если есть ускорение за счет AI, использование облаков, k6 и Rust, если уже не просто скрипты, а SRE-путь, …
И всем же интересно что качать, чтобы доходы росли? И здорово понимать, какие вообще сейчас доходы
Вот тут 4 анонимных опроса про локацию, доход, технологии и тренды:
Примите участие в них. Они закроются через месяц автоматически и обсудим результаты. Сравним тенденции и данные аналитиков с тем что видят любители нагрузки своими глазами
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Viacheslav Smirnov in QA — Load & Performance
Опрос 1: Локация и Грейд (Макрорегионы)
🇷🇺 🇧🇾 РФ и РБ (Middle+) / 🇷🇺 🇧🇾 РФ и РБ (Senior / Lead / Arch) / 🇺🇦 🇲🇩 Вост. Европа: Украина, Молдова (Middle+) / 🇺🇦 🇲🇩 Вост. Европа: Украина, Молдова (Senior+) / 🇰🇿 🇦🇲 Центр. Азия и Кавказ: КЗ, УЗ, АМ, ГЕ (Middle+)…
🇷🇺 🇧🇾 РФ и РБ (Middle+) / 🇷🇺 🇧🇾 РФ и РБ (Senior / Lead / Arch) / 🇺🇦 🇲🇩 Вост. Европа: Украина, Молдова (Middle+) / 🇺🇦 🇲🇩 Вост. Европа: Украина, Молдова (Senior+) / 🇰🇿 🇦🇲 Центр. Азия и Кавказ: КЗ, УЗ, АМ, ГЕ (Middle+)…
👍5😁2
Привет любители производительности!
Как подружить Gatling и JUnit 5
Вызов Java-метода
import io.gatling.app.Gatling
Думаю что вы уже знаете, как вызвать Gatling программно
но вот незадача — там в конце main-вызова есть
и этот код завершит текущий процесс, включая и Junit 5 процесс — все просто схлопнется, но нагрузка выполнится до конца, а вот сделать какой-то assert или обработку в Junit уже не получится
Вызов Scala-метода
import io.gatling.app.`Gatling$`
Можно запустить Scala-класс явно, без Java-обертки которая вызывает exit в конце
Тут все получится и тест не завершится. Но он не упадет если внутри Gatling сработали ассерты.
Добавить проверку статуса
import io.gatling.app.`Gatling$` + код возврата
Чтобы внутренние ассерты сработали надо еще добавить проверку кода:
Проверка на Kotlin может выглядеть вот так
Как подружить Gatling и JUnit 5
Вызов Java-метода
import io.gatling.app.Gatling
Думаю что вы уже знаете, как вызвать Gatling программно
Gatling.main(gatlingArgs);
но вот незадача — там в конце main-вызова есть
.MODULE$.exit(this.fromArgs(args));
и этот код завершит текущий процесс, включая и Junit 5 процесс — все просто схлопнется, но нагрузка выполнится до конца, а вот сделать какой-то assert или обработку в Junit уже не получится
Вызов Scala-метода
import io.gatling.app.`Gatling$`
Можно запустить Scala-класс явно, без Java-обертки которая вызывает exit в конце
`Gatling$`.`MODULE$`.fromArgs(gatlingArgs)
Тут все получится и тест не завершится. Но он не упадет если внутри Gatling сработали ассерты.
Добавить проверку статуса
import io.gatling.app.`Gatling$` + код возврата
Чтобы внутренние ассерты сработали надо еще добавить проверку кода:
┌─────────────────────────────┬───────────┬──────────────────────┐
│ Scala case object │ Exit code │ Значение │
├─────────────────────────────┼───────────┼──────────────────────┤
│ StatusCode.Success │ 0 │ Всё ок │
├─────────────────────────────┼───────────┼──────────────────────┤
│ StatusCode.InvalidArguments │ 1 │ Ошибка аргументов │
├─────────────────────────────┼───────────┼──────────────────────┤
│ StatusCode.AssertionsFailed │ 2 │ Assertions провалены │
└─────────────────────────────┴───────────┴──────────────────────┘
Проверка на Kotlin может выглядеть вот так
val exitCode = `Gatling$`.`MODULE$`.fromArgs(gatlingArgs)
if (exitCode != 0) {
throw AssertionError(
"Gatling simulation ${simulationClass.simpleName} failed with exit code $exitCode" +
if (exitCode == 2) " (assertion failures — check Gatling report for details)" else ""
)
}
🔥3
Привет любители производительности!
У меня уходило ~ $10 в день на токены для AI агентов при кодинге. А вчера я запустил тесты агентом, где агент анализировал результаты. Ушло $137, на примерно 11 запусков коротких тестов для разных версий, анализ логов и результатов и сравнительный анализ
Что-то дорого, в разы дороже. Все потому что логи анализировались и было ожидание завершения тестов
Сегодня переделал подход, где вместо чтения и анализа логов просто assert
🤩 один раз сгенерировал код, который делает тесты на логи и метрики по результатам запуска, это стоило $2-3
🤩 теперь JUnit сам дожидается и проверяет все что нужно
🤩 запустил все в CI для разных версий, а потом посмотрел на результаты (да вручную, но было недолго)
Теперь буду для исследовательских задач писать детерминированный код, функциональный тест. Код писать недорого, а вот на инструкциях естественным языком и использовании моделей внутри процесса можно сильно потратиться к
У меня уходило ~ $10 в день на токены для AI агентов при кодинге. А вчера я запустил тесты агентом, где агент анализировал результаты. Ушло $137, на примерно 11 запусков коротких тестов для разных версий, анализ логов и результатов и сравнительный анализ
Что-то дорого, в разы дороже. Все потому что логи анализировались и было ожидание завершения тестов
Сегодня переделал подход, где вместо чтения и анализа логов просто assert
Теперь буду для исследовательских задач писать детерминированный код, функциональный тест. Код писать недорого, а вот на инструкциях естественным языком и использовании моделей внутри процесса можно сильно потратиться к
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
Привет любители производительности!
Было ли такое что у вас есть какой-то важный лог в котором явно есть структура и поля в тексте сообщения. Но в Grafana вы можете показать лишь все сообщение целиком
🤩 Выделить только часть
🤩 Сгруппировать по подстроке
🤩 Сделать возможность клика и фильтрации по подстроке
... не получается
В Grafana теперь есть Extract Fields трансформация с поддержкой регулярных выражений
как для однострочных сообщений
Так и для многострочных сообщений (заканчивается на /s)
Теперь можно выделять и допаршивать тексты сообщений в браузере и делать невероятно крутые доски по алертам, по специальным классам исключений
Было ли такое что у вас есть какой-то важный лог в котором явно есть структура и поля в тексте сообщения. Но в Grafana вы можете показать лишь все сообщение целиком
... не получается
В Grafana теперь есть Extract Fields трансформация с поддержкой регулярных выражений
как для однострочных сообщений
/Failed to perform (?<Action>[^ ]+) with unexpected Exception\: Connect timeout has expired \[url=(?<url>[^,]*),/Так и для многострочных сообщений (заканчивается на /s)
/Failed to perform (?<Action>[^:]+): Status: (?<Status>[0-9]+). Message: Exception during request to (?<url>[^ ]*) with code (?<Code>[0-9]+)\: (?<Message>.*)\nGRAZIE traceID: (?<traceID>[0-9,a-f]+)\n(?<StackTrace>.*)/sТеперь можно выделять и допаршивать тексты сообщений в браузере и делать невероятно крутые доски по алертам, по специальным классам исключений
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Привет любители производительности!
Собрал промежуточные результаты наших опросов https://t.me/qa_load/170588. Картина получается интересная: местами предсказуемая, а местами заставляющая задуматься, куда мы идем. 🤩
1️⃣ Кто мы и где находимся
Большая часть нашего сообщества (более 85%) это специалисты из РФ и РБ. Рынок повзрослел: сеньоров и лидов у нас почти столько же, сколько мидлов, а вот джунов совсем мало, меньше 5%. Это подтверждает мысль: простые задачи уходят в AI, и порог входа становится выше
2️⃣ Про деньги и полярность
Медиана нашего рынка — $2 000-$3 500. Но разброс колоссальный:
👑 Верхушка айсберга: Всего 3 человека (около 1.5%) пробили планку в $15 000-$22 000+. Это почти 100% корреляция с рынком США и позициями Staff-уровня.
🦾 Эффект Overemployment: 19 человек работают на 2+ проектах одновременно. Скорее всего, это они сидят в вилке $7 500-$12 000, превращаясь в индивидуальное Performance-агентство за счет AI, экономящего им 40% времени.
📉 Зона турбулентности: 33 человека получают меньше $2 000. При этом работу ищут 27 человек. Рынок насыщен специалистами с опытом 2–3 года, которые конкурируют за все чеки и за низкие чеки тоже
#статистика_нт #карьера_2026
Собрал промежуточные результаты наших опросов https://t.me/qa_load/170588. Картина получается интересная: местами предсказуемая, а местами заставляющая задуматься, куда мы идем. 🤩
1️⃣ Кто мы и где находимся
Большая часть нашего сообщества (более 85%) это специалисты из РФ и РБ. Рынок повзрослел: сеньоров и лидов у нас почти столько же, сколько мидлов, а вот джунов совсем мало, меньше 5%. Это подтверждает мысль: простые задачи уходят в AI, и порог входа становится выше
2️⃣ Про деньги и полярность
Медиана нашего рынка — $2 000-$3 500. Но разброс колоссальный:
👑 Верхушка айсберга: Всего 3 человека (около 1.5%) пробили планку в $15 000-$22 000+. Это почти 100% корреляция с рынком США и позициями Staff-уровня.
🦾 Эффект Overemployment: 19 человек работают на 2+ проектах одновременно. Скорее всего, это они сидят в вилке $7 500-$12 000, превращаясь в индивидуальное Performance-агентство за счет AI, экономящего им 40% времени.
📉 Зона турбулентности: 33 человека получают меньше $2 000. При этом работу ищут 27 человек. Рынок насыщен специалистами с опытом 2–3 года, которые конкурируют за все чеки и за низкие чеки тоже
#статистика_нт #карьера_2026
❤1👍1🔥1
Media is too big
VIEW IN TELEGRAM
Сегодня хорошая погода. И выходной день. Речка в такой день один из лучших способов отдохнуть, чтобы завтра продолжить тесты писать
❤6
Media is too big
VIEW IN TELEGRAM
Привет performance lovers! Сегодня снова выходной, снова принес вам водицы. Это уже озеро в горах, холодное, чистое, красивое — чтобы вы отдохнули, подумали свои мысли и были готовы к любым алертам завтра, встречая их с улыбкой 🤗
Из нового — готовили с Мишей Жилиным доклад на Heisenbug и узнал из него как использовать git bisect с тестами производительности. Шел 40-й год жизни, я узнал про эту команду, которая была в git чуть ли не с начала времен🤦♂️
В рассказе Миши столько прикольных нагрузочный историй! Если вы будете на конференции завтра, то зайдите к нему, привет передайте
Из нового — готовили с Мишей Жилиным доклад на Heisenbug и узнал из него как использовать git bisect с тестами производительности. Шел 40-й год жизни, я узнал про эту команду, которая была в git чуть ли не с начала времен
# Вместо good/bad задаём свои слова: fast и slow
# Для поиска регрессий производительности
git bisect start --term-old fast --term-new slow
git bisect fast v5.17 # эта версия быстрая
git bisect slow v5.18 # эта — медленная
git bisect run ./bench.sh # exit 0 = fast, exit 1 = slow
# → 56a4d67c264e — коммит, замедливший систему
В рассказе Миши столько прикольных нагрузочный историй! Если вы будете на конференции завтра, то зайдите к нему, привет передайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
https://performance.shopify.com/pages/services
Интересная бизнес модель у отличной платформы создания интернет магазинов shopify — можно нанять их команду производительности или команду партнеров 💡
Обычно же это просто поддержка, люди пишут задачу, задача доходит до тебя и разбираешься в ней. А тут целый найм
Как они добились и как обосновывают?
https://www.shopify.com/enterprise/blog/store-speed-conversion
Посчитали, что 100 ms задержки к LCP снижают конверсию (вероятность покупки) на 3.5%
А 32 ms к INP также снижают эту вероятность на 1.5%
И чтобы это посчитать они сделали сервис аналитики производительности (встроенный в систему)
https://help.shopify.com/en/manual/online-store/web-performance/web-performance-reports
Отчёт небольшой, использует хранилище Google и просто показывает метрики из него, эти метрики Google и так собирает со всех Google-устройств и Chrome-ов
💰 Их фишка, что они смогли собрать ключевую метрику Conversion rate по сайтам клиентов и соотнести ее с performance метриками
Для этого им скорее всего пришлось постараться и сделать непростой механизм сбора бизнес метрик. Сохранить и обогатить CrUX метрики. Выстроить сеть партнеров с perf-компетенциями. И запустить все
Крутой проект, сколько рабочих мест создано! И как же это красиво подано 🔥
Интересная бизнес модель у отличной платформы создания интернет магазинов shopify — можно нанять их команду производительности или команду партнеров 💡
Обычно же это просто поддержка, люди пишут задачу, задача доходит до тебя и разбираешься в ней. А тут целый найм
Как они добились и как обосновывают?
https://www.shopify.com/enterprise/blog/store-speed-conversion
The trend is clear: for every 100 milliseconds slower a store loads, conversion tends to be about 3.5% lower.
Посчитали, что 100 ms задержки к LCP снижают конверсию (вероятность покупки) на 3.5%
For every 32 milliseconds slower a store responds to interactions, conversion tends to drop by about 1.5%.
А 32 ms к INP также снижают эту вероятность на 1.5%
И чтобы это посчитать они сделали сервис аналитики производительности (встроенный в систему)
https://help.shopify.com/en/manual/online-store/web-performance/web-performance-reports
Отчёт небольшой, использует хранилище Google и просто показывает метрики из него, эти метрики Google и так собирает со всех Google-устройств и Chrome-ов
💰 Их фишка, что они смогли собрать ключевую метрику Conversion rate по сайтам клиентов и соотнести ее с performance метриками
Для этого им скорее всего пришлось постараться и сделать непростой механизм сбора бизнес метрик. Сохранить и обогатить CrUX метрики. Выстроить сеть партнеров с perf-компетенциями. И запустить все
Крутой проект, сколько рабочих мест создано! И как же это красиво подано 🔥
🔥8
Привет performance lovers! Я начал забывать
Двадцать лет назад я зачитывался историями про ученых Греции, про физиков и математиков. Поражала их память и объёмы информации в их голове
Тогда я делал одно упражнение по вечерам — возвращаясь домой вспоминал весь свой день в деталях. Только один день, но очень детально
И это помогало быстро вспоминать что было вчера и неделю назад и месяц
Были и специальные заучивания. В университете у меня была специальная книжка куда я выписывал номера телефонов всех своих знакомых. Я фанат блокнотов и ручек и записей. А выписывание помогало запоминать их
Как-то работая в НПО я заучил и запомнил всех коллег по фото и имени. Не помню сколько человек это было, думаю пару недель учил просматривая карточки в SharePoint снова и снова. Там можно было делать что-то типа SQL запросов к данным и создавать отчёты — только с фото, только с именем, и с фото и с именем
А сегодня мне друг напомнил про поход к водопаду рядом с Иджеваном, а я не помню где это, где Иджеван? Какой из походов это был?
Буду снова ходить домой пешком и по пути вспоминать весь свой день в деталях. И записки надо будет вести активнее, рисунки и схемы рисовать, не полагаться на Google, который найдет.
Надеюсь, когда мы встретимся с вами и возникнет вопрос — а помнишь … — буду помнить
Двадцать лет назад я зачитывался историями про ученых Греции, про физиков и математиков. Поражала их память и объёмы информации в их голове
Тогда я делал одно упражнение по вечерам — возвращаясь домой вспоминал весь свой день в деталях. Только один день, но очень детально
И это помогало быстро вспоминать что было вчера и неделю назад и месяц
Были и специальные заучивания. В университете у меня была специальная книжка куда я выписывал номера телефонов всех своих знакомых. Я фанат блокнотов и ручек и записей. А выписывание помогало запоминать их
Как-то работая в НПО я заучил и запомнил всех коллег по фото и имени. Не помню сколько человек это было, думаю пару недель учил просматривая карточки в SharePoint снова и снова. Там можно было делать что-то типа SQL запросов к данным и создавать отчёты — только с фото, только с именем, и с фото и с именем
А сегодня мне друг напомнил про поход к водопаду рядом с Иджеваном, а я не помню где это, где Иджеван? Какой из походов это был?
Буду снова ходить домой пешком и по пути вспоминать весь свой день в деталях. И записки надо будет вести активнее, рисунки и схемы рисовать, не полагаться на Google, который найдет.
Надеюсь, когда мы встретимся с вами и возникнет вопрос — а помнишь … — буду помнить
❤7
Привет любители производительности! Участвую во взаимном продвижении IT-чатов и каналов — "IT в деле" В сборке есть разные тематики
Что внутри:
🧑💻 Каналы о программировании и разработке: Python, CSS, HTML, Java и Swift
👨💻 GameDev и каналы о QA тестироварии, создание игр и тестирование (мы туть)
🤖 Авторские каналы и вайбкодинг: IT & AI, простые заметки с проектов, работа с нейросетями
🤩 Информационная безопасность: многое узнаете о работе хакеров
Много интересного! Выберите интересные вам каналы или подпишитесь на всю сборку
Что внутри:
🧑💻 Каналы о программировании и разработке: Python, CSS, HTML, Java и Swift
Много интересного! Выберите интересные вам каналы или подпишитесь на всю сборку
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
IT в деле
You’ve been invited to add the folder “IT в деле”, which includes 42 chats.
🔥7