Веб-розробка

Фронтенд-команди та спостережуваність: Чому це важливіше, ніж здається

N

Niharika Pujari

7 хв читання

Концептуальна ілюстрація, що показує потік даних від браузера користувача через взаємопов'язані бекенд-сервіси, символізуючи спостережуваність фронтенду.

Зміна погляду на спостережуваність

Тривалий час спостережуваність (observability) розглядалася як прерогатива бекенд-команд, платформних команд або команд з надійності сайтів (SRE). Фронтенд-інженери зосереджувалися на створенні інтерфейсу, обробці поведінки браузера та викликах API. Коли щось виходило з ладу глибше в системі, інша команда аналізувала логи серверів та інфраструктурні дашборди.

Такий поділ працює доти, доки додаток технічно доступний, але користувацький досвід не страждає. Наприклад, сторінка може завантажуватися, але її найважливіші дані надходять із затримкою в кілька секунд. Запит може бути успішним після кількох повторних спроб, залишаючи користувача дивитися на індикатор завантаження. Одна хмарна служба може сповільнюватися, тоді як решта сторінки продовжує працювати. З точки зору інфраструктури, це може не кваліфікуватися як збій, але з точки зору користувача, додаток вже працює некоректно.

З досвідом розробки додатків, що залежать від хмарних сервісів та API, погляд на відповідальність фронтенду змінився. Фронтенд-командам не потрібно керувати кожним сервісом, від якого вони залежать, але їм потрібна достатня видимість, щоб розуміти, як ці сервіси впливають на користувацький досвід. Спостережуваність надає фронтенд-інженерам цю видимість, допомагаючи зв'язати те, що відбувається в браузері, з тим, що відбувається в системах за ним. Це дає командам докази для налагодження проблем та прийняття кращих рішень щодо поведінки фронтенду, коли залежності повільні, недоступні або непослідовні.

Обмеження серверного моніторингу

Серверний моніторинг показує, що сталося всередині сервісу, але не завжди відображає повний шлях користувача. Дашборд бекенду може показувати, що API відповів за 300 мілісекунд, але браузер все одно може витрачати набагато більше часу на відображення корисного контенту через затримку мережі, виконання JavaScript, роботу з рендерингом або додаткові запити. Успішна відповідь також може призвести до некоректного досвіду, якщо повернуті дані неповні або інтерфейс не справляється з їх обробкою.

Важливість клієнтської телеметрії

Саме тому клієнтська телеметрія є важливою. Звіти про помилки браузера можуть фіксувати винятки, які ніколи не досягають сервера. Вимірювання продуктивності можуть показувати, скільки часу користувачі чекають, поки контент стане видимим або інтерактивним. Дані запитів можуть виявити, які залежності повільні, ненадійні або часто повторюються.

Ключові показники та API

Стандартні API браузера надають корисні відправні точки. W3C User Timing API дозволяє розробникам позначати та вимірювати значущі операції в додатку, наприклад, час завантаження дашборда, завершення пошуку або рендерингу критичної секції сторінки. Web Vitals також допомагає командам аналізувати продуктивність завантаження, чуйність та візуальну стабільність за допомогою вимірювань, тісніше пов'язаних з користувацьким досвідом. Ці метрики корисні, оскільки вони переносять розмову за межі того, чи був запит успішним, допомагаючи відповісти на питання, чи стала сторінка корисною швидко і чи реагує вона, коли користувач намагається з нею взаємодіяти.

Цілеспрямований збір даних

Мета полягає не в зборі кожної події браузера, оскільки це може призвести до великої кількості даних без значного розуміння. Краще почати з невеликого набору питань: скільки часу користувач чекає, перш ніж з'явиться основний контент? Як часто не вдається відправити форму? Який запит перешкоджає використанню сторінки? Чи частіше страждають користувачі на певних пристроях або з певними умовами мережі? Ці питання спрощують проектування та інтерпретацію телеметрії. Заява "API доступний" є твердженням на рівні сервісу. Заява "Користувач може виконати завдання без несподіваної затримки" є твердженням на рівні досвіду. Фронтенд-спостережуваність допомагає зв'язати ці два аспекти.

Зв'язок фронтенду з залежностями

Контекстні логи та ідентифікатори кореляції

Клієнтські логи є найціннішими, коли вони містять достатньо контексту для відтворення дій користувача. Корисний запис про помилку може включати версію програми, маршрут, операцію, статус запиту та ідентифікатор кореляції. Інформація про браузер також може бути корисною, коли проблема стосується лише певних середовищ. Водночас, фронтенд-телеметрія повинна бути ретельно розроблена. Логи повинні уникати вмісту форм, токенів автентифікації, паролів та іншої конфіденційної інформації. Збір більшої кількості даних не завжди полегшує розслідування; правильний контекст корисніший, ніж велика кількість неструктурованої інформації.

Ідентифікатори кореляції є особливо корисними. Коли фронтенд включає ідентифікатор у запит, і цей ідентифікатор продовжує передаватися через подальші сервіси, команди можуть зв'язати збій у браузері з бекенд-логами та розподіленими трасуваннями. Замість порівняння часових міток на кількох дашбордах, інженери можуть відстежувати один запит по всій системі. Розподілене трасування може показати, що дія користувача викликала API-шлюз, сервіс програми, виклик бази даних та іншу хмарну залежність. Воно також може показати, де запит провів більшу частину свого часу або де вперше з'явилася помилка.

OpenTelemetry для єдиної картини

OpenTelemetry надає вендоро-нейтральний підхід для генерації та зв'язування телеметрії, такої як трасування, метрики та логи. Він також підтримує JavaScript та інструментацію браузера, що робить його актуальним для фронтенд-команд, які хочуть зв'язати активність браузера з бекенд-сервісами.

Фронтенд-інженерам не потрібно ставати фахівцями з платформ спостережуваності. Їм потрібна згода з бекенд- та платформними командами щодо основ, таких як поширення трасування, угоди про іменування, безпечні поля логування та місця, де телеметрію можна переглядати під час розслідування.

Наприклад, якщо сторінка іноді завантажується без основних даних, фронтенд може зафіксувати, що критичний запит перевищив час очікування через кілька секунд. Ідентифікатор кореляції з цього запиту може привести до трасування, що показує, що шлюз відповів нормально, але залежність нижчого рівня перевищила свій час очікування. Без зв'язаної телеметрії звіт міг би залишатися "Сторінка іноді не завантажується". Зі зв'язаною телеметрією команда має конкретний шлях збою, вимірювану затримку та достатньо доказів, щоб вирішити, що потрібно змінити. Ці докази можуть підтримати дві дії: команда сервісу може розслідувати повільну залежність, а фронтенд-команда може покращити досвід, додавши стан тайм-ауту, опцію повторної спроби або частковий відкат. Спостережуваність робить обидві відповіді більш точними.

Вплив спостережуваності на архітектуру

Від налагодження до проектування

Безпосередня перевага спостережуваності – це швидше розслідування інцидентів. Більша перевага – це краще прийняття архітектурних рішень. Коли телеметрія неодноразово показує, що одна залежність повільна, фронтенд-команда може переглянути, наскільки тісно інтерфейс залежить від неї. Сторінка може спочатку відображати основний контент, а потім завантажувати вторинну інформацію. Кешовані дані можуть бути прийнятними для некритичної секції. Тайм-аут може призвести до меншого відкату замість блокування всього екрана.

Спостережуваність також може виявити приховане зв'язування. Якщо непов'язані компоненти виходять з ладу щоразу, коли один спільний запит сповільнюється, сторінка, можливо, була розроблена як єдиний блок завантаження. Розбиття досвіду на незалежно відновлювані секції може зробити інтерфейс більш стійким. Ті ж докази можуть покращити поведінку повторних спроб. Автоматичні повторні спроби можуть допомогти при тимчасовому збої мережі, але вони також можуть додати більше трафіку до вже повільного сервісу. Телеметрія може показати, чи відновлюють повторні спроби запити, скільки часу займає відновлення та чи залишають користувачі сторінку до її успішного завершення.

Видимість на рівні сервісу також має значення. Фронтенд-команди повинні розуміти очікування щодо доступності та затримки сервісів, які вони використовують. Вони також повинні розуміти, що ці сервіси повертають під час часткових збоїв. Якщо залежність може відповідати повільно, інтерфейс потребує стратегії завантаження. Якщо дані можуть бути застарілими, інтерфейс повинен повідомляти про актуальність. Якщо сервіс є необов'язковим, сторінка не повинна руйнуватися, коли він недоступний.

Покращення взаємодії команд

Добра спостережуваність також покращує розмови між командами. Замість того, щоб говорити "Сторінка здається повільною", фронтенд-інженери можуть пояснити, яка дія користувача постраждала, як часто це відбувається і де з'являється затримка. Налагодження стає обговоренням, заснованим на доказах, а не на здогадках.

Практичні кроки для початку

Практична відправна точка може бути невеликою: фіксуйте необроблені помилки браузера, вимірюйте кілька важливих шляхів користувача, записуйте збої для критичних мережевих запитів, поширюйте ідентифікатор кореляції між фронтенд- та бекенд-системами. Переглядайте ці сигнали з командами, які володіють залежними сервісами. Звідти інструментація повинна зростати у відповідь на реальні питання: додавайте вимірювання, коли робочий процес важко зрозуміти; додавайте трасування, коли запит перетинає кілька систем; додавайте дашборд, коли сигнал достатньо важливий для регулярного перегляду.

Фронтенд-спостережуваність не полягає в перетворенні кожного фронтенд-інженера на інженера з експлуатації. Вона полягає у визнанні того, що браузер є частиною виробничої системи і часто є єдиним місцем, де видно повний користувацький досвід. Коли фронтенд-команди можуть зв'язати те, що відчувають користувачі, з сервісами за цим, вони можуть ефективніше налагоджувати, проектувати інтерфейси, які граціозно деградують, і приймати кращі архітектурні рішення. Спостережуваність стає більше, ніж способом пояснення інцидентів; вона стає вхідними даними для проектування фронтенд-систем.

Що це означає для розробників

Для розробників це означає зміну фокусу: від простого створення інтерфейсу до глибокого розуміння того, як залежності впливають на користувацький досвід. Використання клієнтської телеметрії, W3C User Timing API, Web Vitals та OpenTelemetry дозволяє ефективніше налагоджувати проблеми та приймати обґрунтовані архітектурні рішення.

Ключові факти

  • Традиційно спостережуваність вважалася прерогативою бекенду, платформи або SRE-команд.

  • Додаток може бути технічно доступним, але користувацький досвід може страждати через затримки або збої, які не фіксуються серверним моніторингом.

  • Фронтенд-командам потрібна видимість, щоб розуміти, як сервіси впливають на користувацький досвід.

  • Клієнтська телеметрія (звіти про помилки браузера, вимірювання продуктивності, дані запитів) є важливою для розуміння повного шляху користувача.

  • W3C User Timing API та Web Vitals допомагають вимірювати показники, пов'язані з користувацьким досвідом.

Джерела

Веб-розробкаРозробка ПЗТехнології

Попередні статті

Концептуальна ілюстрація, що показує абстрактні ДНК-ланцюги, які обробляються центральним геометричним блоком, що виявляє різні кольорові кластери, які символізують генетичні підтипи.

Модель машинного навчання T1GRS покращує генетичне прогнозування ризику діабету 1 типу

Нова модель машинного навчання T1GRS значно покращила прогнозування ризику діабету 1 типу, виявивши 160 генетичних сигналів ризику та чотири генетичні підтипи захворювання.

Концептуальна ілюстрація, що зображує баланс між прозорістю даних про власність та конфіденційністю, з абстрактними цифровими візерунками та мінімалістичним силуетом Нью-Йорка.

База даних нерухомості Нью-Йорка: де межа між прозорістю та конфіденційністю?

Публікація даних про власність у Нью-Йорку для нового податку на другі будинки викликала суперечки, піднявши питання про належне поводження з конфіденційною інформацією.

Концептуальна ілюстрація шумеро-аккадських клинописних символів, що перетинаються з абстрактними цифровими елементами.

GDscript від Godot підтримує кодування шумеро-аккадським клинописом

GDscript, вбудована мова сценаріїв Godot, дозволяє розробникам писати код, використовуючи шумеро-аккадський клинопис та інші стародавні системи письма завдяки підтримці Unicode.

Наступні статті

Медичний пристрій візуалізації в лікарні з абстрактним відображенням програмних компонентів на екрані

Агентства випустили оновлені рекомендації щодо мінімальних елементів SBOM для кібербезпеки

CISA та інші агентства оновили керівництво щодо мінімальних елементів «переліку програмних компонентів» (SBOM), щоб покращити кібербезпеку організацій. Це замінює попередні рекомендації NTIA.