Охватить спонсируемый этот пост.
Поскольку приложения работают в производстве, вам нужно выяснить, что происходит. Возможно, вы захотите знать, перегружаете ли вы аппаратное обеспечение, переходите к неправильной функции в A/B -тесте или, на мобильной стороне, даже такие простые непредвиденные обстоятельства, как заканчивается аккумулятор.
Разработка приложения для отправки информации о себе означает добавление инструментов. Приложения могут отправлять такую телеметрию, как метрики, журналы и следы, позволяющие командам интерпретировать внутреннее состояние приложения. Эта концепция является основой сбора в наблюдении.
Стандартизация сбора и формата этих сигналов в значительной степени является целью проекта Opentelemetry (OTEL). Дополнительным преимуществом является то, что если большинство приложений на данном языке необходимо наблюдать за теми же типами операций и рабочих процессов, разработчики, основанные на стандарте OTEL, могут идентифицировать и создавать автоинструментацию, чтобы выполнить работу для них.
Радости автоинструментации
Было бы неплохо, если бы вы могли узнать все, что вам нужно знать о приложении, не выполняя дополнительную работу. Например, представьте, что вы можете узнать, какие услуги в вашей высокопоставленной сборке не хватает ресурсов. Или, возможно, вы видели сетевые запросы неоднократно терпят неудачу в ключевой части потока приложения.
Мобильные приложения работают на определенных устройствах и операционных системах, что означает, что определенные операции являются стандартными для каждого экземпляра приложения. Например, в приложении для iOS, созданном на UIKIT, метод DidFinishLaunchingWithoptions сообщает разработчику приложения, что недавно запущенное приложение почти готово к запуску. Прослушивание этого метода в любом приложении, в свою очередь, позволит вам автоматически наблюдать и узнать больше о завершении запуска приложения.
Быстрая, изготовленная из коробки, как это легко использовать. Импортируя библиотеку автоматического инструмента в ваше приложение, вы можете зацепить деятельность вашего приложения без написания пользовательского кода.
Использование автоинструментации обеспечивает стандартизированные сигналы для действий, которые должны быть распознаны предписанным способом. Вы можете прослушать запуск приложения, как описано выше, а также для загрузки представлений, для начала и концов сетевых запросов, сбоев и так далее. Наблюдение было бы здорово, если бы импортированные библиотеки выполняли всю работу.
Мобильные рабочие процессы приложения и то, что вы можете контролировать
Тем не менее, понимание вашего мобильного приложения требует больше, чем просто мониторинг повсеместных сигналов разработки мобильных приложений. С одной стороны, сбор и передача мобильной телеметрии могут быть ограничены операционной системой, которую выбирает пользователь приложения, которая не предназначена для передачи каждого собственного сигнала. Кроме того, сторонние библиотеки для общих вариантов использования, таких как сеть и рендеринг пользовательского интерфейса, обычно являются закрытым исходным кодом и не разработаны с учетом автоматической инструкции.
Наконец, и самое главное, конкретные потоки приложения исходят из намерения разработчика приложения, так что только они могут предоставить инструменты. Другими словами, способ создания приложения полностью настроено для предполагаемого использования пользователя. Это точка построения нового приложения.
Например, навигация по экранам с текущими сетевыми запросами и кэшированием, происходящими по потокам, является распространенным набором одновременных действий. Автоинструментация может захватить навигацию и сеть как отдельные сигналы, возникающие в течение жизненного цикла приложения. Осмысляя эти действия вместе в одном и том же пользовательском потоке или даже понимание, когда они произошли в путешествии пользователя, требует ввода разработчика приложений.
Ручное инструмент, с учетом пользователя
Ключевым отличием между мобильными инструментами и бэкэнд -системами является пользователь. Бэкэнд -потоки создаются, чтобы следовать императивной структуре «Если это произойдет, сделайте это» в ответ на операции. Не так с мобильными приложениями. Пользователь касается экрана, кнопок прокрутки и постукивания в их предпочтительном порядке, а не заранее определенную процедуру для услуг и программ.
В качестве отправной точки, мобильные инструменты должны связывать события в пределах понимания пользователя в их конкретном контексте. Это не обязательно тот контекст внутриотежного обслуживания, с которым знакомы инженеры наблюдения. Вместо этого это гораздо более человека: инструментация должна отражать путешествие пользователя в течение сеанса или одно использование приложения.
Возьмем, к примеру, заполнить поток оформления заказа в приложении электронной коммерции. Навигация от экрана к экрану требует сетевых запросов на доступность корзины, информацию о платежах и попытки покупки, а также передачу этой информации между экранами. Правильный заказ этих экранов, очевидно, важен, так как ни один разработчик не должен создать поток проверки, который начинается с запроса на покупку.
Могут быть дополнительные факторы, которые необходимо учитывать в этом сеансе, происходящие вне потока. Местоположение пользователя может ограничить определенные типы покупок в определенной стране. Вы захотите знать, остановил ли дрянной Wi-Fi поток на полпути. Даже с лучшим пользовательским опытом в мире само программное обеспечение приложения управляется кем -то другим, поэтому захват деталей их опыта — лучший способ понять это.
Инструментарий смешан
Некоторые сигналы могут быть захвачены автоматически в приложениях и являются повсеместными, в то время как другие принимают ручные инструменты, чтобы попасть в специфику их намерения. Собрать их вместе, потенциально будет лучшей целью, так как наличие всех сигналов вместе с правильной контекстной информацией даст самую широкую картину активности приложений.
Во время ручного отслеживания навигации вы можете использовать свои автоматические сетевые инструменты, чтобы увидеть, что неправильный сетевой запрос запускается. Затем вы можете работать назад, чтобы понять, что пользовательская деятельность, которая привела к этой неправильной деятельности.
В более широком смысле, для любого рабочего процесса могут быть пользовательские данные, которые вы хотите добавить, которые позволяют отслеживать подпрограммы, которые соответствуют вашему приложению. SDK, который производит автоинструментацию, должен предоставить этот объект, чтобы позволить пользовательским и автоматически захваченным данными «смешиваться».
Поиск правильных инструментов
В конце концов, приложениям понадобится их инструменты, чтобы пройти смесь ручного и автоматического инструментария. В идеале, мобильные приложения должны полагаться на авто-инструментацию, чтобы захватить общие рабочие процессы и ручные инструменты для захвата пользовательских рабочих процессов, но они также должны улучшить автозаменную телеметрию, чтобы настраивался с тем, что автоматически захвачен.
Насколько легко добавить ручное инструмент будет зависеть от API, выявленного SDK, который вы используете. Вот почему существуют такие SDK, как Ambrace Android и Apple SDK: предоставить изготовленные из коробки для платформ и общие рабочие процессы, специфичные для библиотеки, которые хотели бы большинство мобильных приложений. SDK Embrace адаптированы к превращению мобильного контекста в наблюдаемость, поэтому мобильным разработчикам не нужно сталкиваться с теми же проблемами снова и снова.
В Empce мы стремимся расширить возможности информации, которая получена на мобильном телефоне, чтобы облегчить точно узнать, что влияет на пользовательский опыт. Присоединяйтесь к нашему сообществу Slack, чтобы задать вопросы и узнать больше о том, как использовать мобильную наблюдаемость, построенную на Opentelemetry.
Embrace предоставляет единственное ориентированное на пользователь решение об наблюдении за мобильным приложением, основанное на Opentelemetry. Предоставляя важную мобильную телеметрию между DevOps и командами мобильных инженеров, охватывает освещение реального влияния клиентов, а не только воздействия на сервер, чтобы добиться успеха в достижении SLO. Узнайте больше последних из Embrace Trending Stories youtube.com/thenewstack Tech Moving быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Дэвид Рифкин — инженер по связям с разработчиками в Embrace. Он приносит восемь лет опыта в качестве преподавателя и инженера iOS. Прежде чем присоединиться к Embrace, Дэвид работал мобильным инженером в Fanduel, служил ведущим инструктором по iOS в преследовании … Подробнее от Дэвида Рифкина