🚨⚡🚨 Біткоін по $100к. Час встановлювати Trustee Plus і безкоштовно випускати картку для розрахунків 👉
Тарас Козаков
1 жовтня 2021, 19:49
2021-10-01
Хто такий Performance Engineer, що робить, і які ще назви у цієї професії
Вадим Волков з EPAM розповідає про професію.
«Типові представники», які описують IT-спеціальності в продовженні циклу, досвідчені співробітники, які знають усі таємниці професії. Ці матеріали містять подробиці, які можуть допомогти школярам, студентам та іншим, хто зацікавлений у виборі IT-спеціальності. Цикл створений для можливості краще зрозуміти індустрію і особливості зсередини, а також допоможе зрозуміти перспективи. Коментарі допоможуть зробити матеріал корисніше, доповнюйте та обговорюйте.
У моєї професії кілька назв: аналітик продуктивності, Performance Engineer, Performance Tester. І всі вони досить рідко зустрічаються в інформаційному просторі. Тому слідом за питанням " ким ти працюєш?"зазвичай відразу запитують:» Що це? Чим ти займаєшся?»
Людям, які не занурені в IT-контекст, я пояснюю свою роль на реальних прикладах. Напевно, багато хто зустрічався з ситуацією, коли інтернет-магазин влаштував масштабний розпродаж, вийшло довгоочікуване оновлення улюбленої онлайн-гри або відкрилася реєстрація в посольстві на подачу документів для візи. Ви хочете купити, пограти або зареєструватися, але не можете, тому що Сайти «виснуть» або взагалі не працюють через велику кількість бажаючих. Користувача це дратує, а бізнес зазнає збитків і втрачає лояльність.
Суть моєї професії полягає в тому, щоб подібних збоїв не було.
Продуктивність-одна з ключових характеристик якісного софта: зручність і краса сайту, асортимент інтернет-магазину, графіка і сюжет гри не будуть оцінені по достоїнству, якщо продукт працює повільно або не працює зовсім.
Хочу визначитися з подальшою термінологією. Іноді тестування продуктивності та аналіз (оптимізацію) продуктивності розмежовують. У першому випадку професія передбачає тільки заміряти, як працює система, і віддати ці дані комусь, хто буде вивчати, чому працює не так, як хотілося б. У другому — не тільки заміряти, але і розібратися, чому працює повільно, або хоча б допомогти це зробити. Однак ми з колегами вважаємо, що навичок тільки тестування продуктивності буде достатньо для новачків в професії Performance Engineer.
Подальший розвиток аналітика продуктивності передбачає здатність самостійно знаходити проблемні місця в досліджуваній системі. Нижче я буду використовувати всі терміни (і аналітик, і тестувальник, і performance engineer), розуміючи під ними одну і ту ж роль.
Джерела професії
Про проблеми продуктивності думали в той час, коли комп’ютери тільки почали з’являтися. Вже в 1968 році була опублікована класична стаття про вплив швидкості роботи комп’ютерних систем на користувача –Response time in man-computer conversational transactions Роберта Міллера. Комп’ютери з тих пір стали іншими, але людина влаштована так само, тому вимоги, зібрані в цій статті, до сих пір застосовуються при оцінці продуктивності.
Які обов’язки у Рerformance Engineer
Мені здається, що це одна з найбільш різнопланових професій в IT. Найчастіше навіть на великому проекті аналітик продуктивності тільки один. З одного боку, у нього є свобода у виборі методів, технологій, інструментів. З іншого, це велика відповідальність: якщо вибрав якийсь підхід, а він не спрацював, то і відповідати за це тільки тобі. Крім того, на перформанс тестуванні лежить відповідальність відразу за багато напрямків, які він веде від моменту старту проекту і до кінця.
1. Робота інженера продуктивності починається на стадії збору бізнес-вимог. Так, зазвичай цим займаються бізнес-аналітики, але хороший інженер може поліпшити вимоги, розуміючи, як вони потім будуть перевірятися.
Уявімо собі клієнта, який хоче зробити сервіс продажу авіаквитків. З мого досвіду запит на продуктивність підсумкового продукту надходить наступний: «Ми хочемо, щоб сервіс швидко працював і не „падав“ під навантаженням». Такі вимоги погано визначають, які саме характеристики повинні бути у системи. Тому аналітик продуктивності ставить додаткові питання й уточнює нюанси: «Скільки користувачів одночасно ви хочете обслуговувати?», «Що вони можуть робити: просто шукати квитки, бронювати, проводити оплату (це все різне навантаження на систему)?», «Яка кількість ключових дій користувачів очікується в одиницю часу?», «За скільки секунд одна сторінка повинна завантажуватися?» і ін. Якщо у бізнесу немає розуміння, що таке «швидко», то Performance інженер допомагає визначити конкретні вимоги, ґрунтуючись на дослідженнях взаємодії людини та комп’ютера і стандартах індустрії.
2. Іноді аналітику продуктивності вдається взяти участь в обговоренні майбутньої архітектури рішення. Припустимо, проектується частина системи, яка повинна обробляти повідомлення від користувачів і віддавати їх кудись далі. Архітектор буде будувати дизайн-системи, грунтуючись, в тому числі, і на вимогах у сфері продуктивності. Але точно не завадить, якщо поруч буде Performance Engineer, який запитає: «яку інтенсивність повідомлень ви очікуєте? Ваша Архітектура враховує її?» А дуже скіловий PE зможе оцінити архітектуру системи й запропонувати необхідні зміни.
3. Основна мета perfomance-тестів — зрозуміти та виправити причини повільної роботи системи. Для цього проводиться моніторинг показників «заліза» і софта. Налаштування моніторингу інфраструктури часто робить performance engineer, хоча можуть і DevOps-інженери.
4. Далі йде процес розробки й перевірка готових частин продукту. Завдяки ітеративним підходам, вивчати продуктивність (швидкість, стабільність і масштабованість продукту) можна вже на стадії, коли готовий якийсь мінімальний код. І це дуже хороший варіант розвитку подій. «Заходити» з perfomance-тестами тільки перед релізом — погана практика. Звичайно, це краще, ніж нічого, але виправлення проблем з продуктивністю часто потрапляє у 2/3 слогана студії Артемія Лебедєва — «довго і дорого» (і не факт, що за підсумком все буде добре).
5. Після отримання результатів тестів починається, на мій погляд, найцікавіше — аналіз даних. Це дуже вагома частина обов’язків аналітика продуктивності, на яку в середньому йде половина робочого часу. Тут завданням максимум для інженера буде визначити, що обмежує продуктивність системи, і виправити це. Якщо після цього продукт не відповідає вимогам, потрібно шукати й прибирати обмеження далі. «Намилити, змити, повторити». Іноді буває, що самотужки неможливо зрозуміти причину низької продуктивності. В цьому випадку потрібно виконати завдання-мінімум: зібрати інших членів команди для пошуку проблеми й з усіх сил допомагати колегам її вирішувати.
Якщо говорить коротко, то в коло обов’язків Perfomance Engineer входять не тільки тести продукту, але і багато іншої підготовчої та аналітичної роботи. При цьому головна мета — турбота про те, наскільки комфортно кінцевому користувачеві буде працювати з системою.
Необхідні скіли
Те, що я зараз буду називати, чи не базовий набір для новачка. Це компетенції вже «дорослого» performance інженера та орієнтир, до якого треба прагнути.
Головні якості інженера продуктивності — аналітичний склад розуму або здатність з фактів робити висновки. Якщо цього немає, то в професії буде не дуже комфортно, тому що в принципі вся робота будується на аналізі інформації й висновках. Взагалі спеціальність аналітика продуктивності знаходиться на стику трьох IT-професій:
Частина тестування, але, як я вже описав, досить специфічна. Тому аналітику продуктивності необхідно знати та правильно застосовувати методологію навантажувального тестування.
У спеціальності присутня дуже велика частина від адміністрування. Щоб аналізувати продуктивність, інженеру потрібно знати весь стек роботи систем: від мереж і «заліза», хмар і віртуалізації до рендеринга в браузері. Крім того, треба розуміти роботу операційних систем, web- і app-серверів, баз даних, runtime високорівневих мов і як це все налаштовувати для досягнення необхідних результатів продуктивності.
Без навичок розробника теж не обійтися: performance інженер повинен аналізувати код і роботу з пам’яттю програми. Що стосується безпосередньо написання коду, то навантажувальні скрипти — це все-таки не про програмування, хоч багато з них і пишеться на «серйозних» мовах (C в LoadRunner, С # в Visual Studio). Але іноді буває так, що існуючих інструментів не вистачає і треба писати розширення (або взагалі свої інструменти) з нуля — ось це вже «справжня» розробка.
Self-менеджмент і трохи project-менеджменту. Аналітик продуктивності часто працює один на проєкті й у нього немає тімліда, який буде допомагати. Тому важливо вміти планувати свою зайнятість, розуміти терміни й укладатися в них. Знання процесу розробки теж знадобляться, а хороший аналітик продуктивності може ще й зробити його краще.
Комунікативні навички. Щоб привести продуктивність продукту до ідеалу, performance engineer спілкується з великою кількістю людей. Йому важливо зрозуміло викладати свої думки і трактувати отримані результати колегам. Крім того, спілкуватися з командою і клієнтами доводиться й англійською мовою.
Також корисні будуть навички бізнес-аналізу, щоб зрозуміти потреби клієнта, бізнесу і як їх перетворити на вимоги.
Необхідні основи статистики та обробки даних. Performance engineer постійно працює з даними, іноді їх дуже багато. Методики збору і обробки, принципи роботи з даними — все це маст хев.
Бажання вчитися і розвиватися. Технічний горизонт performance інженера нескінченний.
Щоб уміти аналізувати роботу комп’ютерних систем, потрібно (в ідеалі) знати все про все. Звичайно, глибоко розбиратися у всіх доменах нереально, але при цьому можна вибрати ту частину технологічного стека, яка подобається більше, і занурюватися в неї. Так комусь подобається оптимізувати роботу з базами даних, хтось може бути фахівцем з client-side продуктивності, деякі йдуть углиб «хмар». Це, на мій погляд, і є принадність професії: коли з’являється відчуття, що хотілося б розвиватися далі, це завжди можна зробити. Така багатопрофільність визначає рівень аналітика продуктивності: чим більше знаєш і вмієш, тим краще можеш визначити проблемні місця в системі і ефективніше їх виправити.
Кар'єрний шлях
Історії дуже різні, але є закономірності. Кілька років тому ми в відділі проводили дослідження і з’ясували, що третина людей приходить до нас з розробки та адміністрування, ще третина з тестування, а решта «стартують» з performance інженерії.
Я сам починав з функціонального тестування, а потім перейшов до тестування продуктивності.
На мій погляд, починати Performance engineer дуже класно, тому що спеціальність багатопрофільна, можна зрозуміти роботу різних дисциплін і набрати хорошу технічну базу. Ті, хто потім хоче спробувати себе в іншій професії, йдуть, в основному, в розробники або в модний Site Reliability Engineering.
Домени
Найчастіше РЕ працюють з доменами, де є багато користувачів навантаження (електронна комерція, стрімінгові медіа типу Netflix і ін.). Або в тих проєктах, де швидкість критична для роботи системи. До речі, «багатокористувацьке навантаження — це не завжди люди. Наприклад, IoT з великою кількістю пристроїв і потоком даних, які «стікаються» з датчиків і потребують обробки.
Навчання
Я не зустрічав навчальних закладів, де конкретно навчають цієї спеціальності. Все тому, що професія комплексна. Як один з варіантів, найближчу до професії освіту дають, наприклад, в БДУІР на КСіСі, спеціальність «Обчислювальні машини, системи та мережі». Там розповідають про роботу «заліза», мереж і операційних систем, вчать оптимізувати код. А взагалі тут будь-який IT-бекграунд буде корисний, але все одно доведеться доучуватися і набиратися досвіду.
Ще один варіант навчання — курси. Наприклад, крім проєктної роботи я разом з колегами веду курс з основ Performance Optimization. На ньому ми даємо тільки основи професії, а після студенти доучуються всередині компанії ще 3-6 місяців до того, як потрапити на проєкт. Звичайно, успіх такого навчання багато в чому залежить від бекграунду: чим більше людина з самого початку знає і вміє, тим швидше вона розуміється на нюансах і тонкощах.
Я бачу, що потреба в performance інженерах зростає. Можу провести аналогію з автоматизованим тестуванням. Я застав той час, коли його майже не було і всі вважали, що це робити не потрібно, адже є мануальні тести. А потім стало зрозуміло, що без автоматизації взагалі нікуди й тепер це тренд, зараз намагаються якомога більше тестування автоматизувати, професія дуже затребувана. Схожі зміни я спостерігаю у своїй спеціальності.
Працювати з продуктивністю важливо, адже вона значно впливає на успішність системи. «Падіння» додатка під навантаженням навіть на незначний час може привести до великих фінансових втрат, повільна робота — до відтоку користувачів і недоотриманого прибутку. Особливо добре це видно у сфері електронної комерції: навіть незначне прискорення сайту призводить до зростання конверсії. При цьому виправлення проблем продуктивності в уже працюючій системі може зайняти тривалий час і коштувати дуже дорого.
Професії в IT. Хто такі тімліди, що вони мають знати та як їх оцінювати?
Більшість молодих айтішників з перших днів роботи мріють вирости до сеньйора та стати тімлідом, менторити джунів та допомагати команді вирішувати складні задачі. Проте якими саме компетенціями має володіти тімлід, що вміти та де вчитися — питання для багатьох відкрите. Аби прояснити ситуацію, ми поспілкувалися з Solutions Architect у компанії DataArt Дмитром Куперманом, який вже багато років займається асесментом тімлідів у компанії: проводить інтерв’ю та оцінює підготовку і досвід колег і кандидатів.
Смартфон Nothing Phone (1) — що це за пристрій і як про нього відгукуються техноблогери?
Смартфон Nothing Phone (1) — одна з найцікавіших технологічних новинок літа 2022 року. Пристрій відразу ж привернув до себе увагу за допомогою яскравого дизайну, причому буквально — через вбудовані в задню панель світлодіоди. Але якийсь час залишалося загадкою, що ще він може запропонувати.
Ми вивчили огляди та враження техноблогерів від Nothing Phone (1) — і ділимося підсумками з вами.
«Менеджмент не закінчується на словах Agile чи Kanban». Хто такий Project Manager та як ним стати
Бажаючих увійти в IT з кожним днем стає все більше. Проте більшість із потенційних айтішників опиняються перед складним вибором: ким стати, аби працювати у сфері інформаційних технологій. dev.ua започатковує нову рубрику, в якій розповідатиме, які спеціальності в українському IT є, що роблять конкретні спеціалісти та де вчитися, аби стати айтішником.
Сьогодні про професію Project Manager розповідає досвідчений PM в EPAM Яна Стрільчук,