At #PerfMatters, Jessica Chan, Sarah Dapul-Weberman, and Michelle Vu gave a presentation about building Pinterest’s first dedicated performance team and the challenges involved. Here are my notes.
在#PerfMatters ,Jessica Chan,Sarah Dapul-Weberman和Michelle Vu作了关于建立Pinterest第一个敬业绩效团队以及所面临挑战的演讲。 这是我的笔记。
第一支专业表演团队 (First Dedicated Performance team)
- Pinterest serves over 200 million global monthly active users and an infrastructure that serves over 1 millions request per second. Pinterest为全球每月超过2亿的活跃用户提供服务,并且其基础设施每秒可处理超过100万个请求。
- Around 2016, Pinterest migrated from Backbone to React. They saw a 20% improvement in performance and 10-20% improvement in engagement. 在2016年左右,Pinterest从Backbone迁移到React。 他们发现绩效提高了20%,敬业度提高了10-20%。
- For unauthorized pages, the same migration saw a 30% improvement in performance and a 15% increase in signups, 10% increase in SEO traffic and a 5-7% increase in logins. 对于未经授权的页面,相同的迁移使性能提高了30%,注册量增加了15%,SEO流量增加了10%,登录次数增加了5-7%。
- Questions came out of these improvements: Were there bug’s in their performance tracking? Were they still performing this well? They realized they needed a dedicated performance team to better understand what was happening. 这些改进带来了一些问题:性能跟踪中是否存在错误? 他们仍然表现出色吗? 他们意识到他们需要一支专门的绩效团队来更好地了解正在发生的事情。
数据置信度 (Data Confidence)
- Pinterest chose a custom metric called Pinner Wait Time (PWT) which looks at the slowest load time for content they deem to be critical on a page. Pinterest选择了一个名为Pinner Wait Time(PWT)的自定义指标,该指标查看最慢的内容加载时间,他们认为这些内容对页面至关重要。
- Custom metrics let them find something they can measure that is directly tied to engagement instead of just vanity metrics with no real impact on the actual experience. 自定义指标使他们能够找到与参与度直接相关的可衡量指标,而不仅仅是虚荣指标,而对实际体验没有实质影响。
- Identified four steps to build confidence in the data. 确定了四个步骤来建立对数据的信心。
- The first step was to set baselines for the different flows across the site. They validated their performance metrics, implemented confidence tests, ensured graphs reflected real user experience and ensured teams understood their metrics. 第一步是为整个站点的不同流量设置基准。 他们验证了他们的性能指标,实施了可信度测试,确保图表反映了真实的用户体验,并确保团队理解了他们的指标。
- The second step was to tie performance metrics to business goals. They run experiments to see which metrics correlate to engagement and which do not. This lets them tie performance to engagement wins, builds better trust in performance, and helps teamst budget time for performance improvements based on impact. 第二步是将绩效指标与业务目标联系起来。 他们进行实验,以查看哪些指标与参与度相关,哪些指标不相关。 这样一来,他们就可以将绩效与互动胜利联系起来,建立对绩效的更好信任,并帮助团队预算时间根据影响来改进绩效。
- The third step was an internal “PR campaign”. This included all-company demo’s and custom-built tools to help people get excited and let them know the performance team was there and able to help. 第三步是内部“公关运动”。 这包括所有公司的演示程序和定制工具,可帮助人们兴奋并让他们知道绩效团队在那里并能够提供帮助。
- The fourth step was to fight regressions. Regression protection in some cases could be even more important than the initial optimization. 第四步是对抗回归。 在某些情况下,回归保护可能比初始优化更为重要。
回归分析 (Regressions)
- Developed Perf Watch—an in-house regression testing framework. 开发了Perf Watch-内部回归测试框架。
- They run regression tests for each critical page: pages like homefeed, pin closed page and the search page. 他们为每个关键页面运行回归测试:诸如主页供稿,固定销钉页面和搜索页面之类的页面。
- Tests are run for each critical page several hundred times using multiple test runners running parallel. 使用多个并行运行的测试运行器对每个关键页面运行数百次测试。
- They calculate and monitor the 90th percentile of Pinner Wait Time over time. If the test comes back exceeding a threshold for variance, the build is flagged as a regression. 他们计算并监视Pinner等待时间随时间变化的90%。 如果测试返回超过方差阈值,则将构建标记为回归。
- Running these tests through their build process helps them to identify performance issues quickly to address. 在构建过程中运行这些测试有助于他们快速识别性能问题以解决。
To help determine what caused the regression, they build Perf Detective which runs a binary search (similar to
git bisect
) to determine the offending commit.为了帮助确定是什么导致了回归,他们构建了Perf Detective,它运行二进制搜索(类似于
git bisect
)来确定有问题的提交。
优化策略 (Optimization Strategy)
- When the team was formed, they were presented with an aggressive goal of improving PWT. 组建团队时,他们面临着改善PWT的积极目标。
- They started by doing some detailed analysis and brainstorming with various teams to see what the current situation was and what potential optimizations they could make. 他们首先与各个团队进行了详细的分析和集思广益,以了解当前的状况以及他们可以做出哪些潜在的优化。
- These potential optimizations were then listed based on what work would be taken and what the impact could be. 然后根据将要进行的工作以及可能产生的影响列出这些潜在的优化。
- Prototyping these optimizations gave them a better understanding of the estimated improvement and level of effort. 对这些优化进行原型设计可以使他们更好地了解估计的改进和工作量。
- Each optimization was run inside an A/B experiment using an in-house experimentation framework that shows performance impact as well as user engagement impact. 每个优化都是在内部实验框架的A / B实验内部进行的,该框架显示了性能影响以及用户参与度影响。
- Their experimentation framework lets them drill in based on user type, geography, etc. 他们的实验框架使他们能够根据用户类型,地理位置等进行钻取。
视力 (Vision)
- A dedicated performance team isn’t enough to ensure top-down buy-in and a strong performance culture. The ownership couldn’t just be on their small performance team. 一支专业的表演团队不足以确保自上而下的买入和强大的表演文化。 所有权不仅仅属于他们的小型绩效团队。
- It can’t just be the performance team making optimizations. The experts for each surface in the company need to be the one making optimizations. 不仅仅是绩效团队进行优化。 公司每个方面的专家都需要进行优化。
- A centralized knowledge base of performance information and history within the company is an invaluable resource. 公司内部绩效信息和历史记录的集中知识库是宝贵的资源。
- The performance team should build tools to empower teams within the organization to make performance improvements that matter. 绩效团队应构建工具以授权组织内的团队进行重要的绩效改进。
翻译自: https://timkadlec.com/remembers/2018-03-27-notes-on-making-pinterest-fast-at-perfmatters/