软件工程师Matt Schallert, Katie Tezapsidis, Carissa Blossom和Tom Croucher讨论如何让我们的系统为节假日和其他高流量事件做好准备。
虽然大多数人会在新年前夜看球落下,或者和朋友一起庆祝(带着节日派对的帽子),但优步工程历来把这个节日当作期末考试。全球各地的用户都依赖优步提供安全可靠的交通工具来参加庆祝活动,新年前夜通常是我们一年中交通流量最高的活动,万圣节紧随其后。我们在两个节假日处理用户流量的能力是经过数月的计划、负载测试和未来验证的系统的顶峰。
然而,在优步的目前的规模,万圣节和新年前夜这样的重大事件是特别的。通过从假期过去的经验教训以及在准备好的日常随叫随到的呼叫工具套件中,我们的网络可获得,可靠,并且足够的弹性来处理高流量负荷。
在后端,几个团队负责维护我们网络的可靠性,而是两个突出现场可靠性和可观察性工程:
- 网站可靠性工程(SRE)与优步的开发团队合作,以提高产品可靠性,同时在规模上生长和运营基础设施。
- 可观察性工程致力于为优步提供指标,跟踪和警报所有其他工程团队。
这些团队位于全球各地的办公室,通过创建和维护应用程序,以及实时筛选和修复问题,确保优步服务的连续性和可伸缩性。
现在我们知道WHO有责任帮助您安全地及时向新年的夏娃达到新年的夏娃(亮片完整),为假期和其他大规模事件做好准备是什么?下面,我们的网站可靠性和可观察性工程团队的成员讨论了我们如何在峰值流量面前保持网络的可延长和可靠性。
Matt Schallert,软件工程师,可观察性工程
您对可观察性工程团队的作用是什么?
马特Schallert(女士):我致力于建立和经营优步的指标基础架构,以便在数十亿个独特的时间序列中培养工程师的高分辨率度量。Uber的团队使用这些指标来衡量使用服务的所有事情以及它运行的基础架构。这些度量标准驱动实时警报,异常检测,服务健康,硬件和基础架构。
在大规模事件发生之前,工程师需要测量比正常情况下更多的东西,我们必须按照需求进行调整。我们的目标是让每一位工程师都能够进行测量、调整和缓解,以确保我们始终能够提供最好的用户体验,即使是在流量高峰期。
为什么万圣节和新年前夜对优步如此重要?
多发性硬化症:这些是优步的重要夜晚,因为许多人依靠我们拥有安全,高效,更加紧张的方式。特别是在美国,万圣节帮助我们测试我们的服务和基础设施,以便在新年前夜的全球范围内进行交通增加。通过这种方式,万圣节和新年的前夕规划是故意和战略性地捆绑在一起的。万圣节以来,新年前夜在几个月后,它让我们有时间从10月份应用我们的学习,为历史上一年的最大夜晚做好准备。
Uber如何进行负载测试,为高流量事件做准备?
多发性硬化症:该网站可靠性工程团队运行大规模事件钻探,以模拟在我们预测的旅行音量运行的平台。这种模拟跳闸卷练习每个依赖的服务和用户体验的流程,从请求乘坐到旅行结束后进行计费。如果服务在钻机期间开始降级,我们会暂停练习以解决问题。
它应该毫不奇怪,我们的团队在这些测试期间的最高优先级是在下一个之前修复任何瓶颈,以便我们继续迭代和加强我们的网络。当我们更接近活动时,这些钻探的频率会增加,直到我们最终每天多次运行钻孔。
Katie Tezapsidis,软件工程师,可观察性
你能给我们概述一下万圣节和耐伊前夕需要做的准备工作吗?
凯蒂Tezapsidis (KT)容量规划过程提前几个月就开始了,优步的数据科学家会分析信息,比如在之前的高流量事件中,我们用复杂的机器学习技术在平台上支持的乘客数量。然后,该分析被用来建立一个预测模型,将当前年的轨迹与前一年的轨迹进行比较。这个过程给我们两个波段,一个上预测值和一个下预测值。然后,我们在事件发生前的最高预测值上执行多个负载测试。我们还使用故障模拟(如故障区域)运行这些负载测试,以帮助我们预测潜在的技术问题,并测试我们的流程以获得响应。
单个团队如何准备大规模负载测试?
KT:除了全系统的演练外,各个团队还通过优步的自助负载测试平台独立测试自己的服务。我们的负载测试平台为执行用各种语言编写的负载测试和扩展负载测试提供了工具。例如,索引附近驱动程序的微服务将索引大量地理上分散的模拟驱动程序,以验证更高容量的工作负载。这个按需平台允许团队定期进行训练,并在特定的事件中,如金丝雀的部署。
所有这些准备都很重要,但如果在生产过程中我们的系统发生了什么?优步是如何实时检测性能下降的?
KT:测试最可见的降级是由在我们的网络外部运行的系统完成并练习产品流。每个团队都使用广泛的白框监控监控他们的服务,查看了内部系统的状态。我们创建了超过100,000多个实时警报,将自动减轻这些问题。如果有任何不成功,我们的呼叫仪表板将在通话工程师上解析它们。
Carissa Blossom,软件工程师,Marketplace SRE
优步市场团队负责通过创建和维护技术来解决公司一些最困难的量化问题,这些技术支持我们的司机、乘客和其他用户的实时市场。市场团队如何为万圣节和NYE等高流量活动做准备?为了确保我们的系统不受未来影响,你们采取了哪些预防措施?
假虎刺属开花(CB):对于万圣节和新年前夕这样的重大节日,我们会提前一个半月进行交通规划,以确保我们能够处理好需求有舒适的回旋空间,以防实际交通规模比我们的预测更快。至于具体的准备工作,从使用过渡裸金属服务器运行集装箱服务便已经成为了未来验证的重要组成部分,它使我们能够自动扩展我们的服务。
你会提前多久为像万圣节和新年这样的重大节日做准备?
CB:在过去,我们开始提前为这些活动准备,并且在大日子本身上,人们将采用特殊的转变来监测这些假期。我们现在已经进展到这些系统已经为重大事件做好充分准备,并且在这些活动的日期需要额外的工作。
我最喜欢的SRE类比将其与消防的准备元素联系起来。就像现实世界的消防员一样,SREs的大部分工作不是为了扑灭一场大火,而是通过开发和维护系统来预防火灾,比如你家里的洒水装置,它有助于尽可能快速有效地缓解问题。
为重大节日做准备最棘手的部分是什么?
CB:高流量事件既令人兴奋和挑战,因为它们是我们系统可扩展性的主要测试。在导致大事事事的日子里需要完成的工作越少,我们的准备工作越好。Uber Engineering已经到达了一个疯狂的交通事件,如万圣节和新年前夜,而没有SRE必须为我们的应用程序顺利工作的额外或普通人。
我们的准备工作是成功的,如果用户在这些假期的体验是可靠的和无缝的任何其他时间的旅行请求。另一方面,对我来说,高流量事件最有价值的部分是它与用户基础的联系。我喜欢从车手那里听到他们今天过得有多好,并且知道我在其中发挥了作用。
SRE团队每天都做哪些准备工作来确保我们的系统准备就绪?
CB:一个重要的跨团队努力是我们的能力安全团队,其中包括来自市场,地图,SRE等核心超级旅行流程的志愿者。我们每周练习利用下得很大的冰雹,一个内部工具,它利用测试帐户来模拟系统上的额外流量。这些练习的重点是将系统强调到单个数据中心的跳闸中的一定数量的骑手和驱动程序,从而识别可能在类似条件下出现的任何问题。
通过这些演习,我们已经能够为主要假期作出一个非活动,因为我们已经测试了系统和微服务可以轻松地处理假日流量。随着我们的服务进化,我们正在重点少于为单一事件做准备,并更多地对系统赋予系统来规模。
汤姆克劳克,工作人员软件工程师,网站可靠性工程
今年的万圣节筹备工作与前几年如何?
我在2014年加入优步,在我加入的头几年,它是所有人都在台上,每个人都在办公室,积极监督。从那时起,我们对高流量活动的准备工作已经成熟,以跟上我们服务的规模和范围。今年,我在万圣节前的周六值班,能够在高峰流量到来之前结束,这说明了我们的准备水平。
从技术角度来看,成功正在历史上遇到这些系统的能力,无论情况如何,都能保持稳健。每年我们都有一个非正式的赌注,当我们的峰值将是时;今年我们甚至没有观看系统看看谁赢得谁,因为我们是如此自信,如果有任何东西,我们会收到通知。
为万圣节和纽约州准备我们的系统有多少球队?
TC:他们全部。从历史上看,我们一直在为新年前夜做准备,而不是万圣节,因为前者是我们的测试运行。我们可以从万圣节使用指标来衡量我们可以在新年前夜期望的流量,因此,每个团队如何准备。
关于优步工程文化的一件事是在特定系统上工作的工程师负责运行该系统。对于核心系统,我们有许多SRE团队嵌入在具有负载测试,基础设施,容量和性能分析的特征和产品工程团队上。我们的核心SRE团队为非SRE提供了成功的技术工具,但我们让他们解决他们的问题,因为它们是正确的理解其系统的具体细节。
您将提供其他公司的最大建议是什么?
TC:最终,你的成功很大程度上归结于计划。如果你真的考虑过如何在可靠性和可伸缩性的基础上构建和发展系统,那么像万圣节和新年前夜这样的事件就不是什么大事;每年都有!虽然流量增长不是100%可预测的,但这些年复一年的趋势和模式是可以理解的。
如果你准备好了,什么都不应该是一个惊喜。从反动性心态转移到规划心态需要纪律,但一旦你到达那里,它就会如此值得。
https://www.youtube.com/watch?v=kxdws1jru70? rel=0&showinfo=0
如果工程是一个不平坦的新年前夜,我们会考虑申请一个角色我们的团队!!
Matt Schallert和Katie Tezapsidis是Uber可观察性工程团队的软件工程师。Carissa Blossom是Uber Marketplace SRE团队的软件工程师,汤姆克劳德尔是Uber SRE团队的员工。






