Nextdoor如何以1的采用率捕获移动应用程序发布异常 在Nextdoor,我们在iOS和Android上的移动应用程序为数千万每周活跃用户提供内容。在这种规模下,我们每周为iOS和Android运行一次发布流程,在多个团队和数十名移动工程师之间发布数百项更改。 我们的团队使用多种可观察性流程和推出策略来确保这些部署的安全性和可扩展性。我们最值得注意的是使用分阶段推出来最大程度地减少潜在不良版本的影响。分阶段推出使我们能够逐步增加用户对新应用程序版本的采用。例如,我们可以让新的应用版本在第一天只发布给1的用户,第二天发布给2的用户,等等。这样一来,如果新版本意外发布时出现了未捕获的回归,将其推出1意味着它会影响更少的用户,降低其严重性级别,并让我们有更多时间做出反应。 但是,对于我们的许多关键业务指标,有时故障可能是无声的,大多数开箱即用的可观察性方法不适用于分阶段推出。这主要是由于两个问题:可观察性通常发生在聚合级别。例如,我们每天查看一个平台所有用户的应用会话或收入。应用程序版本早期采用者的行为不同于所有用户的行为中位数。最重要的是,几乎按照定义,早期采用者更积极地参与新应用程序版本的早期推出。 在Nextdoor,每日用户比每周用户更有可能采用发布,每周用户比每月用户更有可能采用发布,等等。 例如,考虑3月4日发布的假设iOS版本v1。234。5上的应用程序会话回归。如果我们在不知不觉中引入了一个回归,其中5的时间我们没有计算应用程序会话,在1的推出时,我们的总和预计影响大约为所有iOS应用程序会话的0。05x0。010。05,这几乎不可能通过聚合级别的可观察性检测到(读作:噪音)。更糟糕的是,早期的应用程序采用者更加活跃,这意味着我们应该预计所有会话中的0。06会受到影响。或者可能有0。07的会话受到影响。简而言之,很难准确判断我们的总体影响应该是什么。 然而,当iOS版本v1。234。5在一周内全面推出时,5的应用程序会话回归将对业务至关重要。我们可以通过查看每周或每月的指标来检测应用程序会话在完全推出后下降,但到那时,已经过去了几天。 堆积图。顶部趋势线显示我们的应用会话,从3月7日开始出现明显的回归,最低点出现在3月14日。底部趋势线显示由于分阶段推出而随时间推移的版本采用情况。 我们如何在第一天以1的部署率检测到这些问题? 一种简单的方法是将我们的业务指标规范化为发布的用户总数,并将所有指标转换为相对指标(例如,在v1。234。5上,每个应用程序版本每个活跃用户的应用程序会话)。不幸的是,如前所述,我们无法直接比较已采用版本的用户与未采用版本的用户的应用会话,因为他们的基本特征差异太大。 我们试图为这些早期采用者解决的问题是:他们在采用后的实际应用程序会话与他们假设的应用程序会话(他们从未首先采用该版本或未观察到的反事实)有什么区别?在统计学中,我们可以通过差分分析来衡量这一点。 对于iOS版本v1。234。5,3月4日采用新应用版本(蓝绿色)的用户随时间变化的应用会话与未采用(灰色)用户随时间变化的应用会话。 Differenceindifferences分析是一种简单的因果推理方法,我们可以在这里应用它来估计这种影响,方法是考虑已经和未采用版本的用户的不同时变影响:对于采用发布期的用户,计算发布期前三天和发布期后三天的应用会话差异。在这种情况下,我们观察到应用会话减少了0。02。对尚未采用该版本的用户执行相同操作。在这种情况下,应用会话增加了0。20。 假设趋势在其他方面保持不变(趋势前假设),我们预计发布采用者的应用会话会增加0。20,就像我们在非采用者中观察到的那样。但是,它们反而减少了0。02。我们计算差异中的差异以估计与未观察到的反事实的比较: 0。020。200。22由于iOS版本v1。234。5,应用程序会话减少 实际上,我们不只是汇总计算。我们首先确保我们的两个队列在采用前表现出相似的行为(趋势前假设)。这是差异分析的关键步骤。凭借超过数十万用户的样本量,我们可以在采用前几天的简单标准偏差范围内对类似的趋势前行为获得高置信度。如果这种行为成立,我们就会拟合一个线性回归模型,该模型估计发布对任何特定指标的平均影响: y01TimePeriod2Treated3(TimePeriodTreated)e 在v1。234。5的情况下,我们可以衡量跨多个应用程序会话指标的统计上显着的负面影响。 我们为v1。234。5运行AppReleaseAnomalyDetection的指标的平均提升百分比 通过这种逐一比较的方法,我们现在能够在3月5日标记由于v1。234。5导致的应用程序会话下降,这比我们通常能够使用每周数据的时间提前了10天。我们还减少了考虑外部变量(例如季节性或星期几)的需要。这不仅有助于诊断特定应用程序版本下降的来源,还可以将回归隔离到不到1的iOS用户。 AppReleaseAnomalyDetection使我们能够在1推出时发现并修复发布回归,甚至在我们的总体可观察性出现下降之前。 AppReleaseAnomalyDetection是我们在Nextdoor构建的众多工具之一,可让我们在快速迭代的同时观察我们的发布。它是使我们能够每周部署主要应用程序版本并对我们的稳定性充满信心的基本要素之一。可操作的AppReleaseAnomalyDetection帮助我们防止了几乎所有严重的关键客户端回归,并让我们安心地以更快的节奏发布更大的变化。 如果您对这种平台工程和数据科学之间的大规模跨职能工作感兴趣,我们正在招聘!查看我们的职业页面,了解我们所有团队和职能部门的开放机会。 由WaltLeung和ShaneButler撰写,HaiGuan、CharissaRentier、QiHe和JonathanPerlow提供支持。 出处:https:engblog。nextdoor。comcatchinganomaliesearlyinmobileappreleasesac95adf9da81