Баланс між зростанням та оптимізацією продуктивності – це постійна напруга у всіх сферах бізнесу. Це особливо актуально для DevOps, з його прагненням швидше випускати більше функцій, щоб випередити конкурентів, і необхідністю стабілізувати та оптимізувати продуктивність існуючої системи для забезпечення найкращого досвіду користувача. Проте бюджети та ресурси DevOps у більшості випадків скорочуються. З кожним релізом команди змушені ухвалювати складні компромісні рішення. Як забезпечити правильний баланс та задовольнити потреби нових та існуючих користувачів, а також бізнесу?
Просто частина роботи
Існує внутрішнє протиріччя між створенням нових функцій та оптимізацією продуктивності існуючих. Це протиріччя виникає через обмежений набір ресурсів (час, бюджет, персонал) і необхідність розставляти пріоритети між конкуруючими цілями.
Створення нових функцій:

Оптимізація продуктивності:

Відсутність управління цими конкуруючими пріоритетами може призвести до низки проблем:
- Розширення кордонів: Додавання нових функцій може призвести до збільшення кількості функцій, що зробить існуючі функції більш складними та складними для підтримки.
- Технічний обов’язок: Затримка оптимізації продуктивності може призвести до нагромадження технічного боргу, що робить майбутню розробку більш складною та дорогою.
- Вплив на бізнес: Відсутність функцій та невирішені проблеми стабільності чи продуктивності можуть призвести до незадоволеності користувачів, що потенційно позначиться на підсумкових показниках.
Метрики можуть зіграти вирішальну роль в управлінні цими протиріччями, надаючи дані для обґрунтування рішень. Вони можуть допомогти:
- Виміряти вплив нових функцій: Відстежуйте залучення користувачів, прийняття функцій та бізнес-цінність нових функцій. Це допомагає оцінити, наскільки виправдані зусилля з розробки.
- Відстежувати показники продуктивності: Слідкуйте за ключовими показниками продуктивності (KPI), такими як час відгуку, час завантаження сторінки та кількість помилок. Визначте області, де продуктивність може бути покращена, та оцініть потенційні переваги.
- Вимірювання технічного боргу: Використовуйте інструменти аналізу коду та метрики покриття коду для оцінки технічного боргу, накопиченого внаслідок затримки оптимізації продуктивності. Це допоможе зрозуміти потенційні майбутні витрати, пов’язані зі зневагою до продуктивності.
- Використовувати аналіз витрат та вигод: Порівняйте очікувані переваги від нових функцій із витратами на оптимізацію продуктивності. Це допоможе приймати обґрунтовані рішення щодо розподілу ресурсів.
Визначення, вимірювання та передача значущих показників може допомогти кожному члену команди DevOps ефективніше розставляти пріоритети. Правильні метрики можуть бути дороговказом і узгоджувати рішення щодо розміщення пріоритетів для досягнення бізнес- та технічних цілей. Регулярний моніторинг та інформування про прогрес у досягненні цілей дозволяє членам команди приймати виважені рішення, коригувати курс та працювати над постійним удосконаленням. Щоб знайти правильний баланс, команди повинні вибирати показники, які охоплюють мету продуктивності та розвитку.
Метрики продуктивності
Усі знайомі з ключовими показниками продуктивності (KPI), які визначають стан, продуктивність та стійкість SaaS-системи. Ці показники можна використовувати для оптимізації роботи передвиробничих та виробничих систем та в цілому розділити на чотири основні області:
Доступність та час роботи:
- Час безвідмовної роботи: Показник, що характеризує відсоток часу, протягом якого система доступна користувачам. В ідеалі найкраще прагнути до показника працездатності 99,9 % чи вище. Зниження часу безвідмовної роботи може вказувати на нестабільність системи або перебої в її роботі, що негативно позначається на досвіді користувача і може призвести до відтоку користувачів.
- Середній час ремонту (MTTR): Показник середнього часу усунення збою чи інциденту. Нижчий показник MTTR вказує на швидший час реагування та відновлення, що зводить до мінімуму час простою та його вплив на користувачів.

Продуктивність та швидкість:
- Час відгуку: Показник часу, який потрібний системі для відповіді на запити користувачів. Найшвидший час відгуку покращує роботу користувачів та підвищує їхню задоволеність. Для оптимальної продуктивності намагайтеся, щоб час відгуку не перевищував 2 секунди.
- Час завантаження сторінки: Показник часу, який потрібний для повного завантаження веб-сторінки. Як і час відгуку, швидший час завантаження сторінки сприяє поліпшенню досвіду користувача і підвищенню залученості.
- Пропускна спроможність: Це показник кількості запитів, які може обробити система за одиницю часу. Висока пропускна спроможність гарантує, що система зможе впоратися з піковими навантаженнями без зниження продуктивності.
Використання ресурсів:
- Використання процесора: Тут вимірюється відсоткове співвідношення доступних ресурсів центрального процесора системи. Високе завантаження процесора може призвести до вузьких місць та уповільнення роботи.
- Використання пам’яті: Тут вимірюється відсоткове співвідношення доступних ресурсів пам’яті, використовуваних системою. Як і у разі завантаження процесора, високий рівень використання пам’яті може вплинути на продуктивність.
- Використання мережі: Тут вимірюється відсоток доступної пропускної спроможності мережі, яку використовує система. Високе завантаження мережі може призвести до перевантаження та уповільнення роботи.

Показники використання процесора та пам’яті, що відображаються у SolarWinds Observability
Рівень помилок та стабільність:
- Коефіцієнт помилок: Показник відсотка запитів користувачів, які призводять до помилок. Низький рівень помилок свідчить про стабільність та надійність системи.
- Аварії додатків: Вимірює кількість випадків несподіваного збою або завершення роботи програми. Часті збої можуть бути неприємними для користувачів і вказують на нестабільність системи.
Метрики розробки та випуску
Хоча такі показники продуктивності, як час безвідмовної роботи, кількість помилок та час відгуку, використовуються для вимірювання продуктивності систем з 1970-х років, саме з появою Agile та DevOps показники релізів стали більш поширеними. Спочатку прийняття Agile та орієнтація на постійне вдосконалення створили необхідність вимірювання загальних показників релізу, таких як частота розгортання, для відстеження поліпшень. Потім DevOps розширив визначення релізу, увімкнувши в нього весь конвеєр постачання програмного забезпечення, і підвищив увагу до продуктивності всієї команди DevOps.
У 2014 році дослідницька ініціатива Google Cloud Platform, DevOps Research and Assessment (DORA), провела своє перше дослідження практики команд із доставки програмного забезпечення. Метою дослідження та звіту DORA є розуміння можливостей, які визначають ефективність доставки програмного забезпечення та операцій.
Опитування професіоналів DevOps проводиться щорічно та оцінює ефективність релізів за цілою низкою показників релізів, продуктивності та бізнесу. Звіт DORA широко цитується галузевими аналітиками та лідерами думок. Це цінний ресурс для всіх, хто хоче дізнатися більше про практику DevOps і як підвищити ефективність роботи своєї команди.
Метрики DORA стали загальновизнаним стандартом вимірювання ефективності доставки програмного забезпечення. Вони використовуються командами будь-якого розміру та у всіх галузях промисловості для відстеження прогресу та визначення ділянок для покращення. Вони складаються із набору чотирьох показників, призначених для оцінки ефективності роботи команд розробників програмного забезпечення.
- Частота розгортання: Як часто команда впроваджує новий код у виробництво?
- Час підготовки змін: Скільки часу потрібно для того, щоб зміна пройшла від фіксації коду до розгортання у виробництві?
- Частота відмов змін: Як часто розгортання призводить до збоїв у виробництві?
- Середній час відновлення (MTTR): Скільки часу потрібно для відновлення після збою у виробництві?
Використовуючи ці показники та порівнюючи результати роботи різних команд, команда DORA виявила, що у високоефективних команд значно вища частота впровадження, коротший час підготовки до змін, нижчий відсоток відмов від змін та вище MTTR, ніж у низькоефективних команд.
Метрики продуктивності та релізів разом
Метрики доставки релізів і метрики продуктивності разом створюють цілісну картину працездатності та ефективності вашого користувацького додатка. Вимірювання та аналіз обох типів показників забезпечує перспективу, необхідну для прийняття більш точних рішень про пріоритети та компроміси.
Показники доставки релізів: Відстежуйте передбачуваність, ефективність та якість циклу релізу. До них можуть належати:
- Час циклу релізу: Час від ідеї до випуску.
- Частота розгортання: Кількість релізів за одиницю часу.
- Час підготовки змін: Час, необхідний для того, щоб провести зміну від ідеї до реалізації.
- Швидкість усунення дефектів: Відсоток дефектів, що потрапляють у виробництво.
Показники продуктивності: Вимірюють здатність програми відповідати очікуванням користувачів та бізнес-цілям. Вони можуть включати:
- Час відгуку: Час, необхідний програмі для відповіді на запит користувача.
- Час безвідмовної роботи: Відсоток часу, протягом якого програма доступна для використання.
- Використання ресурсів: Використання програмного забезпечення, пам’яті та мережі.
- Відгуки користувачів: Опитування користувачів про досвід роботи з додатком.
На високому рівні метрики релізу вимірюють ефективність та якість конвеєра доставки, а метрики продуктивності виявляють ділянки, що потребують покращення. Обидва набори показників разом дають повну картину стану програми. Використовуючи ці дані, ви можете приймати зважені рішення щодо оптимізації процесу розробки, підвищення продуктивності додатків та, зрештою, забезпечення більшої цінності для користувачів та бізнесу.
Підбиття підсумків
Завдання, з яким регулярно стикаються команди, – знайти ідеальний баланс між розробкою нових функцій та оптимізацією продуктивності системи. Відстеження та аналіз комбінованого набору показників випуску та продуктивності дозволяє досягти обох цілей та отримати глибоке уявлення про сильні та слабкі сторони програми. Наприклад, виділення ресурсів для більн швидкого створення нових функцій може здатися прогресом. Однак, якщо ці нові функції додають нестабільність або знижують продуктивність системи, можуть знадобитися додаткові ресурси для усунення несправностей та виправлення помилок. Аналогічним чином, виявлення проблем з продуктивністю може виявити ділянки, які потребують поліпшення у системі та процесі випуску.
Показники доставки релізів та продуктивності додатків доповнюють одне одного та працюють разом, забезпечуючи повне розуміння стану додатків. Щоб реалізувати цей підхід, виберіть метрики для відстеження відповідно до ваших цілей, визначте та впровадьте інструменти, такі як SolarWinds Observability, для збирання та аналізу даних. SolarWinds Observability – це повнофункціональне рішення для моніторингу, що поєднує дані про веб-додатки та внутрішні системи для спрощення управління та отримання корисних відомостей.
Джерело: Finding the Sweet Spot Between Innovation and Optimization
