技术实践第四期|解读移动开发者日常-性能监控平台应用

本文涉及的产品
应用实时监控服务-应用监控,每月50GB免费额度
应用实时监控服务-用户体验监控,每月100OCU免费额度
简介: 应用性能监控平台是用来帮助客户提升应用性能质量和稳定性的重要环节,本人作为一名移动端开发者有着丰富的使用和运维经验,希望通过本文分享过往的心得和使用经验,让我参与开发的U-APM这款产品中,作为借鉴可以在中长期规划中帮助更多的开发者。

作者:友盟+技术专家 谦翔


一、概述

应用性能监控平台是用来帮助客户提升应用性能质量和稳定性的重要环节,本人作为一名移动端开发者有着丰富的使用和运维经验,希望通过本文分享过往的心得和使用经验,让我参与开发的U-APM这款产品中,作为借鉴可以在中长期规划中帮助更多的开发者。

(以下内容仅作为稳定性监控平台这类平台的使用经验和心得,文中提及平台仅供参考)

二、产品受众

1. 了解他们

应用性能监控平台的使用者往往是站在移动终端最前线的开发者,他们需要关注端的稳定性、用户性能、体验等方面。好的工具可以协助他们在日常运维中的工作。

1.1 移动开发者团队职责构成

1.jpg

此类产品的受众主要是移动开发者,而移动开发者开发者也会分为前端和客户端,分别根据自己所使用的技术栈特性进行职责分配,当然跨端技术的出现也让边界不再那么清晰。

1.2 移动开发者日常工作

2.jpg

开发者日常的工作职责主要分成两大部分开发和运维,开发中出现的问题一般可以通过调试环境就可以定位解决,而运维阶段,线上的代码被压缩混淆加密后变的难以辨认无法直接定位问题。不同系统、运行环境、网络情况和低质量的代码则会带来不可预知的性能问题,运维工作的量化汇报等等。这些都是移动开发者们日常所面临的困难。

1.3 场景归纳

3.jpg

如果把应用性能监控平台的使用场景分为上线前上线后,大致罗列了以上场景。

1.4 应用性能监控平台

针对以上场景,市面上或者公司内部的应用性能监控平台绝大部分能够解决

4.jpg

2. 案例分享

下面我会结合上面提到的场景分享三个案例

2.1 案例1(单设备错误排查

单设备错误排查的场景对于值班人/开发者的要求很高,其在于排查时间的紧迫性和对开发链路熟悉以及排查工具的完备性等。(此场景常见于重要客户或领导反馈)

5.jpg

6.jpg

2.2 案例2(性能优化)

7.jpg

2.2.1 优化背景

  • 技术栈:React Native
  • 优势:RN 拥有一次编写三端执行和动态部署和逻辑下发到客户端的能力,解决客户端版本审核及更新效率低、三端开发技术方案不一致、三端公共需求存在重复劳动等问题
  • 劣势:RN执行阶段可分为RN加载阶段和RN运行阶段,相应的RN页面所面临的性能问题也不尽相同

2.2.2 RN框架加载流程

为了更清晰的了解RN加载阶段的问题所在,我们先来分析下RN的加载机制

在进入整个RN页面的流程中,RN框架加载会经历以下步骤:

8.jpg

  • 包下载及解压缩:加载时发现本地没有对应的包文件,会先从服务器上下载并解压包的文件。
  • 获取初始化引擎:RN预初始引擎的功能,提前创建一个初始化好的引擎并缓存,缓存在退出页面2分钟之后释放。
  • 加载业务包:向一个初始化好的引擎中,加载业务的JS代码。该环节受限于业务JS的大小及设备性能,该加载时间普遍较长
  • 运行业务包:执行业务JS中runApplication()方法,开始渲染Native页面。该环节受限于业务JS的复杂度及设备性能,如果首次渲染的组件很多,该加载时间会变长

2.2.3 RN框架常用指标和维度

  • RN加载阶段的性能优劣,最直观的感受就是页面加载耗时
  • 所以RN技术在带来种种优点的同时,也在存在一些性能和体验问题,这需要一些优化手段和指标来支撑业务的稳定运行

9.jpg

不同的终端技术栈需要结合自身加载和运行的关键阶段,量身打造适合自己的性能指标和维度。这可以让开发者监控页面加载和运行过程的每个环节,进行针对性优化。


2.2.4 优化过程&结果

问题发现:

  • 发现以上页面指标,页面加载时间(90分位)长时间处于1.2s左右高于要求的标准阈值1s以内
  • 参考RN加载流程经过多维度筛查,发现很多用户是首次访问该页面,下载代码包需要大量耗时,低网络更是如此,所以我们需要提前用户下载bundle的时机,还有减少bundle的大小。

解决方案:

  • 知道问题所在就好办多了,我们整理了针对包大小优化,包预下载时间等一系列的优化方案的组合拳,这里就不过多展开。

优化结果:

  • 优化结果:页面加载时间(90分位)减少耗时至0.5s


2.3 案例3(汇报

汇报工作方式一般分为两种报告和值班推送的形式,主要将所监控页面或者业务线重要的性能指标进行实时或定期追踪同步,方便负责团队进行下一步行动(比如:优化、错误修复等)

10.jpg

网络促销日值班场景(某营销促销日  xxxx.xx.xx)

营销促销日前一周

  • 汇总各移动端团队负责的业务
  • 罗列各移动端团队业务所覆盖的页面,确认监控是否覆盖
  • 各团队技术值班负责人确认各技术栈(H5,Native,RN等)数据指标和告警阈值并设置应用性能监控进行定时汇报推送值班群
  • 各小组确定值班日安排,实时跟踪值班群阈值异常情况,并及时响应。


以上是本期干货内容的介绍,希望友盟+研发团队撰写的技术内容可以更好地帮助开发者们解决问题,友盟+将陪伴开发者们一起进步,一起成长。敬请期待下一期内容。


点击下面链接加入友盟+ 技术社群

https://q-187234529230979072.a.lingyiliebian.com/code/

与超过1000+移动开发者共同讨论移动开发最新动态

欢迎点击【友盟+】,了解友盟+ 最新移动技术

欢迎关注【友盟全域数据】公众号

相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
|
2月前
|
机器学习/深度学习 人工智能 Android开发
移动应用开发与操作系统的协同进化:探索现代技术融合之道###
随着移动互联网的迅猛发展,移动应用已成为人们日常生活中不可或缺的一部分。本文深入探讨了移动应用开发的最新趋势、关键技术以及移动操作系统的发展如何相互促进,共同推动移动互联网的创新与变革。通过分析当前市场动态和技术挑战,本文旨在为开发者提供有价值的见解和指导,帮助他们在竞争激烈的市场中脱颖而出。
|
30天前
|
IDE 开发工具 Android开发
移动应用开发之旅:探索Android和iOS平台
在这篇文章中,我们将深入探讨移动应用开发的两个主要平台——Android和iOS。我们将了解它们的操作系统、开发环境和工具,并通过代码示例展示如何在这两个平台上创建一个简单的“Hello World”应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和技巧,帮助你更好地理解和掌握移动应用开发。
63 17
|
30天前
|
移动开发 前端开发 Android开发
探索移动开发之旅:从应用构思到操作系统的深度理解
在数字时代的浪潮中,移动应用与系统是连接用户与技术的桥梁。本文将带领读者踏上一场移动开发的探险旅程,从应用的构思和设计出发,深入到移动操作系统的核心原理。我们将通过实际代码示例,展示如何将创意转化为现实,并解析背后的技术机制。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和知识,帮助你更好地理解和掌握移动应用开发的艺术。
|
2月前
|
存储 前端开发 API
Python在移动应用开发中的应用日益广泛
Python在移动应用开发中的应用日益广泛
57 10
|
3月前
|
人工智能 开发框架 搜索推荐
探索移动应用开发的未来:技术趋势与系统创新
【9月更文挑战第35天】在数字时代的浪潮中,移动应用和操作系统正塑造着我们日常生活的方方面面。本文旨在深入探讨移动应用开发的新趋势,包括跨平台开发框架的兴起、人工智能的融合、以及用户体验设计的革新。同时,将分析移动操作系统的演化,如Android和iOS的最新更新,以及它们对开发者社区的影响。通过实际代码示例,我们将揭示如何利用这些技术进步来创建更智能、更互动的移动应用。文章不仅为开发者提供实用的指导,也为对未来移动技术感兴趣的读者提供洞见。
|
4月前
|
存储 IDE 开发工具
移动应用开发之旅:打造你的首个iOS应用
【9月更文挑战第23天】在数字化浪潮中,移动应用已成为连接用户与数字世界的关键桥梁。本文将带领读者踏上开发属于自己的第一个iOS移动应用的旅程,从理解移动操作系统的核心概念出发,逐步深入到实际的应用构建过程中。通过简洁明了的语言和具体的代码示例,我们将一起探索如何在苹果的iOS平台上实现一个简单的“待办事项列表”应用,让读者不仅能够学习到编程知识,还能体会到将想法转化为现实产品的成就感。无论你是编程新手还是希望扩展技能的开发者,这篇文章都将为你提供一个实用的指南,帮助你迈出成为移动应用开发者的第一步。
|
4月前
|
Java 开发工具 Android开发
移动应用开发之旅:探索移动操作系统与应用构建的奥秘
【8月更文挑战第33天】在数字时代的浪潮中,移动应用已成为我们日常生活的一部分。本文将带您深入理解移动操作系统的工作原理,并揭示如何在这个多姿多彩的平台上开发出引人入胜的应用。我们将从基础概念出发,逐步深入到高级编程技巧,最终通过一个实际的代码示例,展示如何将理论应用于实践。无论您是初学者还是有经验的开发者,这篇文章都将为您提供宝贵的见解和灵感。让我们一起踏上这场激动人心的移动应用开发之旅吧!
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术性文章移动应用开发之旅:从新手到专家的蜕变之路
【8月更文挑战第30天】本文将介绍人工智能的基本原理和应用,包括机器学习、深度学习和自然语言处理等。我们将通过代码示例来展示如何使用Python和TensorFlow库实现一个简单的神经网络模型。
|
4月前
|
人工智能 vr&ar Android开发
移动应用开发与操作系统:探索未来技术的无限可能
本文探讨了移动应用开发与操作系统的紧密关系,分析了当前主流移动操作系统的特点,以及它们如何影响应用开发的流程和性能。通过深入分析iOS、Android等平台的优劣,本文揭示了开发者在选择平台时的关键考量因素,并展望了5G、AI等新技术将如何塑造移动技术的未来格局。
|
5月前
|
人工智能 自然语言处理 开发工具
探索移动应用开发之旅:从新手到专家人工智能在文本生成中的应用与挑战
【8月更文挑战第27天】本文旨在为初学者提供一条清晰的路径,通过了解移动操作系统的基础知识、选择合适的开发工具、学习编程语言以及掌握用户界面设计原则,逐步成长为移动应用开发的专家。我们将一起探讨如何将创意转化为现实中的移动应用,并确保这些应用在多样化的设备上均能良好运行。