Как стать автором
Обновить
241.52
Postgres Professional
Разработчик СУБД Postgres Pro

Профессия performance инженер: детектив с лицензией на производительность

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.5K

Представьте картину: критически важный для бизнеса SQL-запрос ползет... 15 часов. Пятнадцать! Целый рабочий день, пока система мучительно перемалывает данные. Бизнес теряет деньги, пользователи на грани нервного срыва. А потом появляется он — перфоманс-инженер. Несколько часов напряженного анализа, пара точных правок в коде запроса — и вуаля! Тот же самый запрос выполняется за... 2 минуты. Фантастика? Нет, суровая и увлекательная реальность перфоманс-инжиниринга.

Эта история — не выдумка, а реальный кейс из практики инженера Postgres Professional Вадима Лактюшина. Именно такие моменты, когда ты превращаешь часы ожидания в минуты, заставляют чувствовать, что «деньги платят не зря». 

Кто такие перформанс-инженеры?

Если коротко, перфоманс инженер (Performance Engineer, PE) — это тот, кто заставляет IT-системы работать лучше: быстрее, надежнее, эффективнее. 

«Мы пытаемся сделать так, чтобы система работала лучше, надёжней, производительней», — часто говорит Вадим. Но за этими общими словами скрывается сложная и многогранная работа.

Это не просто подкручивание настроек (хотя и это тоже). Часто разработчики не предусматривают всех сценариев нагрузки, и тогда PE превращается в настоящего детектива. Его задача — найти «узкое место». Оно может скрываться где угодно: в коде приложения, в конфигурации СУБД (например, PostgreSQL), в настройках операционной системы Linux, в сетевом взаимодействии или даже в аппаратном обеспечении.

Найдя причину, перфоманс инженер должен понять ее суть и предложить решение. Иногда достаточно изменить параметр конфигурации. Иногда — переписать часть кода. А порой приходится предлагать серьезные архитектурные изменения. Это работа на стыке разработки, тестирования нагрузки, администрирования и глубокого системного анализа.

Путь Вадима в performance engineering начался совершенно случайно — однажды ему, простому разработчику, пришлось помочь выбрать, какую СУБД использовать в важном проекте: ClickHouse или Postgres.

Это решение затянуло его в водоворот вопросов и исследований. Что и как замерить? На физическом или виртуальном сервере запускать? Как правильно настроить систему? Один вопрос порождал десять других, открывая раз от раза новые уровни задач. «Эти вопросы выявляют столь глубокие проблемы, из которых я до сих пор чисто физически выбраться не могу», — шутит Вадим.

Вскоре он оказался в команде профессионалов из Postgres Professional. А затем, практически незаметно для себя, неожиданно перешел от мидла-разработчика к одному из ведущих специалистов по производительности.

В поисках неочевидного

Думаете, все проблемы производительности решаются по учебнику? Команда перфоманс инженеров развенчивает этот миф. «Было бы хорошо, если бы мы написали инструкции: проблема вот в этом, сделай вот это... К сожалению, такое написать или невозможно, или крайне трудно».

Каждая задача уникальна. И порой решение лежит там, где его никто не искал. Вот свежий пример из практики:

Клиент мигрировал данные из Oracle в Postgres. Массовая загрузка данных шла полным ходом, но уперлась в неожиданное препятствие — долгая запись WAL (Write-Ahead Log). Это специальные журналы транзакций в Postgres: прежде чем записать данные в таблицу, СУБД должна зафиксировать операцию в WAL. По сути, данные пишутся в два места, и WAL стал бутылочным горлышком.

Разработчики предложили патч, который должен был ускорить запись в WAL. Но... он не помог. Клиент, обладающий собственной экспертизой, тоже не смог найти ответ на IT-загадку. Казалось, ситуация зашла в тупик.

И тут команда performance engineering начала «копать». Они не просто приняли предложенный патч на веру, а стали экспериментировать, погружаясь в недра Postgres. «Наша работа больше похожа на работу детектива или врача, который по симптомам пытается поставить диагноз и назначить лечение», — рассказывает Вадим Лактюшин.

В итоге они обнаружили возможность, о которой все забыли — и клиент, и даже сами разработчики Postgres. Оказалось, можно увеличить «окно», с которым пишутся WALы — писать их реже, но большими порциями. Эта «давно забытая настроечка», простой «крыжик», кардинально изменила ситуацию. Загрузка данных ускорилась в разы.

«Такие забытые настройки порой всплывают. Когда смотришь, изучаешь, они не сразу очевидны, но они есть».

Что такое WAL и почему он становится «узким горлышком»

WAL (Write-Ahead Log) — это фундаментальный механизм Postgres для надёжности хранения данных. Его суть проста: прежде чем изменить данные в таблицах, СУБД обязательно сначала записывает описание этого изменения в специальный журнал (WAL). Именно эти записи позволяют системе восстановиться после сбоя (например, отключения питания), «доделав» все незавершённые операции и гарантируя, что подтверждённые транзакции не потеряются.

Однако при очень интенсивных операциях записи, таких как массовая загрузка данных, генерируется огромный поток WAL-записей. Поскольку запись на диск физически ограничена его скоростью, а система должна дождаться сохранения этих записей, процесс может не успевать за потоком изменений. В результате вся система начинает «тормозить», ожидая завершения записи в журнал — так WAL становится «бутылочным горлышком», сдерживающим общую производительность.

Негласный кодекс перфоманс инженера

В профессии перфоманс инженера есть неписаные законы.

  1. Проактивность — лучшее лекарство. Настоящий PE не ждет, пока система упадет. Он думает наперед. Анализирует архитектуру нового продукта, предсказывает возможные проблемы при росте нагрузки, ищет потенциальные узкие места до того, как они станут реальной болью. «Хороший перфоманс инженер — тот, кто не ждет проблему, а начинает думать еще до ее появления».

  2. Долой интуицию — только цифры. Болезнь новичков (а иногда и не только) — «оптимизация на глаз». «Я что-то поправил, вроде стало запускаться быстрее... секунды на 3-5». Нет! В перфоманс инжиниринге чувствам не место. Нужны голые цифры: метрики до и после. TPS (транзакций в секунду), latency (задержки), утилизация CPU, дисков, памяти, длины очередей. Только сравнивая конкретные показатели, можно доказать, что стало действительно лучше, а не «вроде бы».

  3. Осторожно, быстрые решения. Иногда нужно потушить пожар здесь и сейчас. Самый классический пример — параметр MaxConnection в Postgres (максимальное число одновременных подключений). Когда система тормозит под нагрузкой, то для некоторых разработчиков простой ответ — увеличить MaxConnection. Это может сработать на короткой дистанции, но часто ведет к катастрофе. Резкий всплеск подключений порождает конкуренцию за внутренние ресурсы СУБД, например, за LockManager. Система встает колом из-за блокировок. Быстрое решение обернулось еще большей проблемой. PE всегда предупредит о таких рисках и предложит более системный подход.

Как стать перфоманс инженером?

Многие думают, что перфоманс инженеров готовят в специальных вузах или на секретных курсах. «Это заблуждение, — говорит Вадим. — Прямо готовых PE никто не выпускает».

Как и DevOps-инженеры или системные администраторы высокого класса, PE — это специалист, «вызревший» из смежных областей, чаще всего из разработки или администрирования. Что же нужно, чтобы встать на этот путь?

  1. Программирование и Linux. Нужно понимать, как пишут код, как мыслят разработчики, какие у них «боли». Ведь часто PE работает с продуктом, созданным для других программистов. Не менее важны глубокие знания Linux: как работает ядро, пространство пользователя, управление процессами, какие метрики можно снять с ОС. «Знания Linux — это обязательно».

  2. Алгоритмы и математика. Понимание алгоритмов, их сложности — ключ к предложению эффективных решений. Но есть еще один секретный ингредиент, которого часто не хватает — математическая статистика. Когда улучшение составляет не 15 часов, а 1–2%, как доказать его значимость? Как отсеять шум и погрешности тестов? Тут на помощь приходят квантили, процентили, распределения, модальность данных. «Матстатистика для нашей профессии очень важна».

  3. Коммуникация и внимательность. PE должен уметь доносить свои находки до разработчиков, тестировщиков, бизнеса. Четко, терпеливо и... деликатно. Сказать разработчику «в твоем коде проблема» — все равно что ходить по минному полю. Нужно уметь объяснить суть, не задевая эго. Кроме того, важна внимательность к деталям: заметить аномальный всплеск на графике, странное повторяющееся поведение системы — это может быть ключом к разгадке. И, конечно, упорство. Иногда проблема не поддается, тесты скачут из-за температуры в комнате, и нужно много терпения, чтобы докопаться до истины.

Будущее профессии и тень ИИ

Что ждет перфоманс инжиниринг? Системы усложняются. Один человек уже не может быть экспертом во всем. Вадим видит тренд на специализацию: появятся PE уровня приложения, уровня ОС, уровня «железа» (какой процессор лучше для конкретной задачи, как настроить его тактовые частоты).

А что насчет ИИ? Пока реальных инструментов, способных заменить PE, нет. ИИ помогает быстрее находить информацию (хотя ее нужно перепроверять), но не решает сложных задач анализа и оптимизации. «Я очень жду, что ИИ поможет хотя бы автоматизировать рутинные задачи», — говорит Вадим, видя в ИИ скорее помощника, чем угрозу. Системы автоматической подстройки тоже пока не выглядят реальной заменой человеческой экспертизе.

Охота продолжается

Работа перфоманс инженера — это постоянный вызов, интеллектуальная головоломка с высокими ставками. Это поиск скрытых закономерностей, неочевидных связей и элегантных решений там, где другие видят лишь хаос или непреодолимую стену. И когда удается превратить часы мучительного ожидания системы в считанные минуты ее работы — это то самое чувство, ради которого стоит идти в эту сложную, но невероятно увлекательную профессию. Охота за тиками процессора и миллисекундами отклика продолжается

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Чем вы занимаетесь?
20.59% Администратор баз данных7
11.76% Архитектор4
2.94% Инженер техподдержки1
35.29% Разработчик ПО12
0% Тестировщик0
8.82% Руководитель отдела/направления3
2.94% ИТ-директор/CTO1
0% Преподаватель/студент0
2.94% Маркетолог/PR-менеджер/менеджер по развитию бизнеса или продажам1
14.71% Другое5
Проголосовали 34 пользователя. Воздержались 2 пользователя.
Теги:
Хабы:
+9
Комментарии9

Публикации

Информация

Сайт
www.postgrespro.ru
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия
Представитель
Иван Панченко