Как исправить проблемы с проблемами производительности. Мониторинг ошибок не видит

SmartBear спонсировал этот пост.

Ваш мониторинг ошибок является твердым: 99%+ бесплатные тарифы, выявляя критические проблемы, прежде чем они распространяются. Но пользователи все еще жалуются на «багги». Почему? Ухудшение производительности не бросает исключения. Восьмисекундные запуска запуска, 20 кадров в секунду (FPS) прокрутка, и утечки памяти не запускают отчет о сбое, но они абсолютно уведут пользователей.

Хотя поиск и исправление ошибок остается важной, производительность мобильного приложения становится критической для компаний, обслуживающих сотни тысяч пользователей. В таком виде масштаба даже незначительные проблемы с производительностью могут привести к значительному оттоку пользователей, потери дохода и увеличению затрат на инфраструктуру. И наоборот, лучшая производительность приложений движет трафиком, улучшает пользовательский опыт, увеличивает доход и снижает затраты. Здесь мониторинг фактического опыта ваших пользователей становится решающим.

Почему настоящий мониторинг пользователей так важен?

Настоящий мониторинг пользователя (RUM) может выявить узкие места производительности, которые поверхностны только в масштабе. Наличие этих данных имеет решающее значение для принятия обоснованных решений о том, куда инвестировать свои усилия по оптимизации и определить приоритеты исправлений на основе фактического воздействия на пользователя. В отличие от контролируемых средств тестирования, RUM отражает то, что на самом деле происходит на реальных устройствах в реальных условиях, таких как медленные сетевые соединения, фоновые приложения, потребляющие память, старые аппаратные и разнообразные версии операционной системы.

Общие проблемы с производительностью мобильных устройств

Однако, прежде чем вступить в решения, важно понять причины неоптимального UX. Это самые распространенные, реальные проблемы, которые мы видим сегодня, влияющие на мобильные приложения. Мы также включили несколько советов о том, как их решить.

Время стартапа приложения раздувание

Время запуска приложений признано критическим, отраслевым стандартом, которая напрямую влияет на UX.

Особенно важно обратить внимание на продолжительность холодного запуска. Горячий запуск происходит, когда приложение уже инициализировано в памяти и доставляется на передний план с фона. Холодные запуска происходит после свежей установки, обновления приложения, первого запуска приложения с момента перезагрузки устройства, или если приложение было убито или выселено из памяти в предыдущем сеансе.

Холодный старт требует таких шагов, как создание первого процесса приложения, инициализация кода Main.Swift или Kotlin, создание сетевых вызовов для получения контента в реальном времени и выполнение первого прохода рендеринга для заполнения начального экрана.

Холодное время запуска может начать низко. Однако, поскольку несколько команд работают над приложением, каждый из которых добавляет дополнительные сетевые вызовы или операции с блокировкой процессора, риск взрыва запуска приложения растет.

Потенциальные решения

Время запуска выступает в качестве показателя Guardrail, чтобы помочь предотвратить увеличение многочисленных изменений и функций за пределами установленной базовой линии. Наличие инструментов, которые могут обнаружить регрессии или увеличение времени запуска, также может предупредить вас о поиске обходных путей, таких как объединение нескольких сетевых вызовов или поиск ленивых возможностей загрузки данных.

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

Другие возможности, вероятно, будут более специфичными для приложений, хотя возникают общие проблемы в отношении поведения в кеш. Подумайте, что происходит в заявлении на электронную коммерцию, когда кто-то отказывается от корзины, и возвращается к ней позже. Если корзина не доступна в кэше, процесс репуляции может включать в себя многочисленные вызовы базы данных или микросервисов. Могут ли эти вызовы быть объединены?

Аналогичным образом, если ваше приложение использует сторонние SDK, возможно, для того, чтобы представить представление карты, вам нужно загрузить все сторонние SDK при запуске, или есть дополнительные возможности для ленивой загрузки? Возможно, вы могли бы загрузить представление карты SDK в фоновом режиме или когда пользователь сначала нажимает на представление карты, а не в свой основной поток приложения.

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

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

Сетевые проблемы

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

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

С сетью, еще одна вещь, которую нужно помнить, это то, что, хотя мобильная инфраструктура значительно улучшилась, она продолжает отставать от мобильного оборудования. Если ваше приложение используется десятками или сотнями миллионов пользователей, некоторые будут испытывать плохое сетевое подключение, а использование метаданных устройств играет ключевую роль в сегментировании выбросов от реальных метрик.

Потенциальное решение

Одним из возможных решений может быть переключение от HTTP/2, которое может плохо работать в динамических беспроводных сетях с потерями, на альтернативный стек сети, такой как Cronet или Quic. Uber сообщил, что переключение протоколов с HTTP/2 на QUIC по UDP привели к снижению на 10-30% задерже [its] Приложения гонщика и драйвера ».

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

Анимация и производительность рендеринга пользовательского интерфейса

В то время как производительность современных мобильных устройств удивительно, производительность плохого пользовательского интерфейса (UI) остается еще одной очень заметной проблемой, особенно с пользовательской анимацией на старых устройствах. Плохой, висящий пользовательский интерфейс влияет на то, как пользователи относятся к вашему приложению.

Точный подход к решению этих вопросов будет варьироваться. В игре вы можете быть менее обеспокоены тем, сколько времени требуется, чтобы загрузить сцену, а скорее сколько памяти и ЦП потребляет сцена после загрузки, так как это повлияет на кадры в секунду.

Потенциальное решение

Инструменты, которые помогают от отладки пользовательских интерфейсов, включают в себя раскрытие для iOS и инспектора макета для Android. Тем не менее, оба добавляют накладные расходы, делая анимацию и ключевые переходы, работают медленнее, а расследование усерднее. Именно здесь вступает ром: выявление проблемных областей для более тщательного осмотра в среде разработки с этими инструментами профилирования.

Принимая его на экране

Помимо времени стартапа и перекрестных проблем, таких как сеть, измерение и улучшение производительности мобильного приложения обычно обрабатываются для каждого экрана. Чтобы отслеживать эти метрики, Airbnb вычисляет оценку производительности страницы и оптимизирует для Android, iOS и Web.

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

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

Одна из проблем, которую я видел, — это то, где пользовательские токены обновляются слишком часто; Некоторые приложения делают это несколько раз на одной странице. Это может быть еще одним хорошим кандидатом на нестандартный пролет. Если услуга, которую вы используете для получения новых токенов, замедляется на значительный процент, скажем, 20%, это может повлиять на все приложение.

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

Потенциальные решения

Благодаря любой работе по настройке производительности, обычно лучше всего сосредоточиться на двух или трех проблемах, а затем развернуть улучшенную версию и Remeasure. Когда вы решаете некоторые из более крупных проблем, новые области могут стать следующим узким местом, а не теми, которые вы наблюдали ранее. Ключ — постепенный выпуск прогресса по сравнению с выпуском.

От технических инвестиций до бизнеса преимущества

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

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

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

Техническая реализация использует улучшенные SDK Openelemetry с улучшенными возможностями автоматических инструментов. На Android Bugsnag использует системные вызовы для автоматического захвата событий нагрузки на экран и сетевых запросов, в то время как реализация iOS зависит от Objective-C или Swift Swizzling, чтобы обернуть вызовы метода Framework во время выполнения. Инструмент предназначен для минимизации воздействия на производительность путем выполнения Swizzling на раннем этапе инициализации, когда приложения однопоточные.

Мониторинг производительности Bugsnag в настоящее время доступен для Android, iOS, React Native, Unity, Flutter и Web Apps. Цены рассчитываются за промежуток. Подпишитесь на бесплатную пробную версию или прочитайте документацию, чтобы узнать больше.

SmartBear — это новаторские инновации в качестве программного обеспечения, охватывая преобразующий потенциал ИИ. Мощные центр решения компании, в том числе Hub SmartBear API, SmartBear Insight Hub и Test Hub SmartBear, с участием HaloAI, дают команды разработки программного обеспечения во всем мире видимость и автоматизацию. Узнайте больше последних из SmartBear Trending Stories youtube.com/thenewstack Tech Moving быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Боб Нельсон — инженер по решению в SmartBear. Когда он не работает с компаниями из списка Fortune 500 над их стратегиями наблюдения, Боб можно найти в игре, гольф, читать научно-фантастическую/фантазию или чистить множество фреймворков, которые он поддерживает, чтобы … читать больше от Боба Нельсона

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *