Uber开源:赶超Celina Ward, M3可观察性工程师

0
Uber开源:赶超Celina Ward, M3可观察性工程师

当塞丽娜·沃德在2018年3月加入优步时M3这是一个由Uber的Observability团队创建的开源度量平台,她根本不知道自己会成为这样的人co-headlining KubeCon仅仅8个月后,她谈论了她的经历。现在,她在这家公司工作了一年多,她和她的另一位主持人、“观察能力”(Observability)的同事马特·沙勒特(Matt Schallert)被邀请进行讨论M3DB, M3的开源存储数据库,在O ' reilly OSCON在2019年7月。

塞丽娜在优步的日子就像一阵旋风,这在很大程度上要归功于她的开源工作。她从小就对工程感兴趣,喜欢编程带来的影响和不断学习,尤其是作为Uber M3团队的一员,掌握Uber大规模可观察性基础设施的里里外外。由于M3是开源的,她的团队必须从不同的角度评估项目开发,这是一个额外的复杂性层- - - - - -和机会- - - - - -塞丽娜赞赏。

从一开始,M3就打算是开源的,所以当涉及到软件的改进时,Celina和她的团队将外部涉众的关注与内部涉众的关注同等重要。

她在谈到她的团队的开源贡献时表示:“无论你最终产生什么结果,你都希望其他人为它做出贡献。”“你要让他们觉得自己是重要事业的一部分。”

就在她出现在Uber开放峰会索菲亚,我们和Celina一起讨论了她的开源之旅,在Kubecon 2018上展示的感觉,以及M3的下一步计划:

你最初是如何对STEM和工程学感兴趣的?

我最初对技术感兴趣是出于真正的兴趣。我小时候并不擅长社交,整个小学和高中时期,我的大多数朋友都住在不同的社区。如果我想和他们一起出去玩,我必须让我的父母载我一程,而这并不总是可能的。我可以整天浏览网页,也可以利用我的时间做一些有成效的事情,这就是我如何编写代码的原因。

当我9岁左右的时候,我常常根据我当时的个人兴趣(4年级)创建网站,这意味着我要编写一些页面来突出我对我最喜欢的电视节目和动物的过度热情。如果我想在一个特定的网站上播放音乐,我会链接到音乐销售页面(通常是美国在线或其他知名企业)的30秒音频样本,并在我个人网站的文本框中显示代码,这样我就可以把它们分发给我的Neopets朋友。我甚至制作了一个广告,如果用户复制和粘贴我的特殊格式的音乐代码,就会显示横幅链接到我的网站,所以看着我的网站流量增长真的很令人兴奋。编程让时间过得非常快,尤其是在夏天,因为我非常喜欢编程,所以我最终决定继续做下去!

您是如何决定将软件工程作为您的职业的?

上大学时,我写了很多论文,记下了所有的核心要求,过了一段时间后,我就厌倦了。我觉得我是带着一种追求自由的心态进入大学的,我想去探索纽约,所以当最后到了选择专业的时候,我问自己:“我喜欢做什么,让我感觉精力充沛、效率高?”我还想做什么?”我必须认真思考我喜欢什么,重视什么,什么对我最有意义。

回想起编码在我成长过程中给我带来的满足感,我决定选修大学的编程101课程,我发现我真的很喜欢那些家庭作业。在完成每个项目后,我都有一种成就感,这种成就感来自于独立和学习的感觉,这是其他活动所不能提供的。

我在编程方面练习得越多,我就做得越好。我喜欢在软件开发中进行增量更新,以看到可见的进展。就像许多技能一样,你不需要天生擅长编程;你可以坚持练习,然后,随着时间的推移,你会变得很擅长。

你为什么决定加入Uber?

在Uber之前,我在一家大型投资银行做工程师。我很快意识到这些项目并没有按照我想要的速度发展;我精力充沛,所以我希望在这样一个环境中,我的团队和我可以快速迭代新想法,尝试新技术,即使这会导致失败。我去了一家网络安全初创公司,非常有趣。我和非常有名的资深安保人员一起工作2007年入侵第一台MacBook甚至是谷歌最初的1000名工程师之一,在他们收购YouTube时,他就在那里。对我来说,听到所有这些关于技术过去的故事非常有趣,我的同事是如何通过试验和错误积累了深厚的行业知识的,这让我印象深刻。这些深刻的成就鼓励我思考我们这一代人的贡献将如何影响该领域。

虽然我非常喜欢和那里的团队一起工作,但很明显,我的工作范围正在缩小。尽管我不一定要找另一份工作,但我有一个在优步工作的朋友建议我申请。她把我介绍给她的团队,我真的很喜欢我遇到的每个人。他们充满激情,才华横溢,热爱学习新事物- - - - - -但他们也知道如何享受生活,不把生活看得太严肃。真正让我产生共鸣的是,他们说:“在这个团队里,你会做以前从未做过的事情。”他们是对的。

除了令人印象深刻的员工,优步的全球范围和规模也是我在这里工作的有力理由。如果你去世界上任何一个地方说你为Uber工作,人们都知道那是什么。为一家正在改变城市移动方式的公司做贡献似乎非常有趣。在我得出结论,为M3转投Uber最符合我的利益后,我强迫自己也去面试其他主要的科技公司,但Uber确实脱颖而出,因为它不只是一个内容平台;有了尖端科技,它真的改变了人类对交通的看法。

你在优步所做的工作中最有价值的是什么?

从表面上看,在组织的各个层面都有一定的影响力是令人满意的。我们正在积极地改变我们对交通的看法,这至少可以说是非常酷的。

但是,在我们组织的软件特定级别上,M3(我们的度量平台)和M3DB(我们的分布式时间序列数据库)都是业界从未见过的开源技术,正因为如此,在它们上工作非常令人满意。时间序列数据库在软件社区中获得了很大的吸引力,它们在某种程度上改变了我们对存储和使用可观察性数据的方式。开发M3DB需要在软件层进行大量的创造性工作—您要在记录级别上处理可靠性、压缩和可维护性。

Uber纽约办公室作为一个整体致力于回馈STEM社区。例如,我们坐在一个女孩的代码摩根士丹利的专家小组。小组讨论结束后,我们与出席的高中女生进行了一对一的交谈,谈论她们正在从事的工作以及成为一名专业工程师的感受。与这些女孩一对一的交流非常有意义,因为我们可以交流故事,比如如何在这个行业取得成功,以及如何让这个行业为我们的个人利益服务。

作为Uber的一名可观察性工程师,你的工作中最具挑战性的是什么?

当我第一次加入Uber的可观察性团队时,学习我们的架构是非常困难的。这有几个原因:我们基于微服务的体系结构的多样性以及我们对许多开源工具的利用。当Uber的代码库从一个巨大的庞然大物过渡到一个微服务的集合,它引入了更强的可扩展性和可维护性,但也引入了更多可移动的部分——这意味着Uber生成了比我习惯的多得多的可观察性数据。我在团队的前几周致力于学习所有这些不同的服务以及微服务之间如何相互作用。这个体系结构是我迄今为止开发过的最大的系统。

由于我们提供的大部分软件都是开源的,所以我也需要熟悉其他开源软件平台。记下所有这些知识,然后在短短几天内弄清楚为什么团队选择了所有不同的组件,这可能是我新角色中最具挑战性的部分。现在我对M3与Uber其他技术栈的关系更加熟悉了,我工作中的许多挑战包括有效地交流想法,就解决方案达成一致,以及确定有时间限制的任务- - - - - -基本上就是普通的工程挑战。

Uber如何使用M3

优步的工程组织严重依赖指标来有效监控整个堆栈的健康状况。M3是Uber的分布式内部度量平台。M3的核心是M3DB,它的时间序列数据库。时间序列数据库使用时间戳存储数据(在本例中是度量),它们是专门为度量随时间变化而构建的。工程师可以用度量来测量他们的服务和应用程序,并将它们发布到M3中进行持久存储和查询。

当监视属于同一保护伞下的组件时,高基数度量对钻井越来越有价值,但这些组件可能彼此独立故障。例如,可以通过收集所有ride请求的p99响应时间来为应用程序设置实时警报。有了高基数,我们可以根据地区、移动操作系统或方式标记指标,而不是将所有p99响应时间聚合到一个时间序列中。我们还使用M3来跟踪业务指标,这样我们就可以看到在特定城市有多少司机在线,或者在特定月份有多少Uber Eats订单完成。

我们还可以使用M3对特定于主机及其数据中心的底层系统指标进行硬件容量规划。例如,您可以测量内存使用情况、容器平均负载、磁盘读写计数以及硬件级监视的其他方面。

在对M3进行更新时,您如何平衡来自Uber团队和更广泛的开源社区的请求?

这是一个有趣的问题,因为我认为,与许多其他项目不同,M3的成功很大程度上植根于满足内部消费者和外部消费者的需求。这是我第一次在开源社区参与一个由整个团队支持的项目,而不仅仅是一两个个人的支持。我们团队的目标是使产品更好地服务于我们的业务和更广泛的开源社区中的用户。很多时候这些需求是重叠的。

我们发现,作为一种持续的策略,开源是整合所有这些请求并提出最佳解决方案以使系统更健壮的最佳方法。将策略作为优先级,比仅仅开放一些没有任何维护计划的项目,希望从碰巧遇到您的项目的人那里获得免费提交更有价值。为其他开发人员创造价值是关键。

作为开源社区的一员,你最喜欢什么?

为开源做出贡献会让你对自己所从事的工作感觉良好。当你开源你的项目时,你民主化了产品。每个人都有自己的发言权,这通常是有充分理由的,因为人们倾向于为他们所使用的项目和他们所热爱的项目做出贡献。由于Uber的开源项目瞄准了这么多人,所以在一个竖井里工作并不总是我们的最佳利益所在。此外,产品在不同类型的生产环境中比在内部使用更多,所以承认来自不同用户的所有痛点,并以更快的速度迭代新想法。

M3团队非常重视倾听客户的意见。我们有一个聊天室人们可以在那里询问关于在自己的环境中使用M3的问题。我们非常积极地帮助他们安装和运行软件,倾听他们的痛点,并在此过程中进行修复。

你和你的同事Matt Schallert在2018年KubeCon大会上从1600份提交的报告中发表了四个主题演讲中的一个。在世界上最大的开源会议之一上发言是什么感觉?

我参加了2017年KubeCon北美展,对Kubernetes正在做的事情和它的多用途感到兴奋。我在我的个人项目中使用它,我工作的初创公司也在使用它将他们的产品部署到客户环境中。

Matt和我向KubeCon提交了我们的演讲计划,打算定期进行关于使用的演讲本地存储Kubernetes上的大规模磁盘(M3DB)。我们甚至没想过我们会被录取,然后我们发现我们被选去做主题演讲。这是疯了!

一开始,我们很紧张,但最后的体验非常积极。我们从开源社区的领导者那里得到了很好的反馈我们大规模自动化存储的方法.他们真的认为我们的见解很有用。通过我们的演示,我们能够给出我们对什么对我们有效,什么对我们无效的反馈,以便开源社区的其他成员最终可以使他们的产品更好。

对于那些正在考虑开源工作的工程师,你有什么建议?

开源社区是由发人深省的技术对话和故事发展而来的。在做这个决定之前,任何人都应该问自己的第一个问题是:“为什么我的工作对我来说是有趣的?”如果它不能真正激发你自己的兴趣,我认为其他人也不会对它感兴趣到愿意从一天中抽出时间来。就其核心而言,在开源项目中工作的全部要点是倾听、感同身受,并与他人一起产生有影响力的工作。所以,从这个角度出发。

就个人项目而言,你应该首先考虑为什么要开源项目。你只是想在你的作品集中添加一些新内容,还是想回馈社区并融入诚实的反馈?不管是什么,都要准备好兴奋地、有动力地谈论它。如果你想全面地改进软件,开源可能是正确的选择。

对于选择开源项目的企业来说,他们需要考虑几个不同的因素。开发企业软件的目的是开源,与花几年时间做某件事然后决定开源是完全不同的两个问题集。当您怀着从一开始就将源代码全球公开的心态进行开发时,您将系统地将开放源代码与公司的专有代码隔离开来,从而使其仍然易于维护、部署和与社区共享。然而,当你决定开源一些最初在内部建立起来的东西时,有很多工作要做,把应该开源的部分和内部保留的部分分开。因此,您仍然必须确保所发布的开源内容是可行的、可靠的,并且对其潜在用户有意义。然而,对于这两种策略,您最终都希望其他人为项目做出贡献。你要让他们觉得自己是重要事情的一部分。

无论哪种情况,我认为最值得考虑的事情之一是,你是否真的要与用户产生共鸣,帮助他们感觉自己被纳入到你的项目中。问问自己你能和贡献者沟通多少时间,因为忽略他们很容易毁了你的项目。

除了在优步的工作,你的动力是什么?

我喜欢那些能带来进步和持续进步的爱好。例如,我喜欢去健身房,特别是举重和种植植物。我也有一些可以独自或和朋友一起做的爱好,因为我不喜欢过度依赖他人或孤立自己,所以我会注意平衡这一点。

我也喜欢旅行和结交新朋友。我曾经非常害羞,但现在我越来越善于让自己走出舒适区。今年我开始了水肺潜水,我喜欢它,因为它有技术的一面,但也让我遇到有趣的人,了解更多关于海洋动物。我所有的爱好都迫使我把自己放在那里,就像编程一样,学习新东西。

有兴趣了解更多M3而且M3DB?自己去看看这些项目吧!

查看塞琳娜即将到来的演讲活动Uber开放峰会索菲亚而且O ' reilly OSCON2019.

想与Celina和其他Observability工程师合作,为Uber的全球运营开发大规模度量和存储解决方案吗?申请一个角色在我们的团队!

评论