平台工程实践是指在组织内部建设和维护一个可供多个团队共享的技术平台。这个平台为团队提供了共享的基础设施、工具、库和服务,以加速开发周期、提高生产力并降低重复性工作的成本。
在Netflix,非常重视平台工程的实践,它致力于抽象化和标准化各种技术组件,以使开发人员能够专注于业务逻辑和创造性工作。并非每个团队都要成为 Netflix,但了解他们如何开展平台工程的,可能会对您的团队有所帮助。
近年来,科技行业对开发者生产力指标的关注度持续增加。然而,仅通过定量指标来评估生产力可能会带来一些负面影响。许多开发者对生产力工具有疑虑,甚至在裁员风波尚未平息的环境下可能会选择不使用这些工具。
尽管开发者的生产力指标在理论上可以为团队提供有价值的洞察,帮助了解开发进度、资源利用以及团队整体效能,但正确使用这些指标并避免潜在的负面影响是一项具有挑战性的任务。
事实上,已有研究表明,快乐的开发者更具生产力。因此,任何可能削弱开发者愉悦感的因素都可能降低生产力。
开发者的工具和工作环境对他们的体验和幸福感有显著影响。如果开发者感到沮丧、不满或情绪低落,他们的动力和创造力会受到影响,进而影响到他们的生产力。因此,为了提升生产力,需要关注开发者的体验和幸福感。
以团队为中心的方法可以更好地提高工作效率、促进团队合作。它强调解决整个团队面临的问题,提升协作和交付能力,而不仅仅关注个别开发者的表现。这种方法有助于建立组织中的心理安全环境,鼓励开放的沟通和创新。
与此同时,开发者生产力工程团队更加注重提升开发者的个人能力,而不仅仅是追求数据指标。他们致力于提供优质的开发工具、技术支持和培训,使开发者能够更加高效地开展工作,并从工作中收获成就感。
像Netflix、Google、LinkedIn、Spotify和Atlassian这些组织已经意识到,通过量化指标来了解平台团队对开发者生产力的影响,可以为改进工作流程、提高开发效率和更好的开发体验提供有价值的见解。
接下来,我们一起学习工程典范Netflix是如何组织其独特的开发者生产力平台的,希望您可以从中得到一些启示。
Netflix独特的生产力平台
Netflix 的生产力平台是非常独特的,是一套复杂的团队拓扑结构。
首先,Netflix有一个由150人组成的集中式平台团队,他们的任务是“创建工具、平台和基础架构,以抽象化的方式处理所有复杂的问题,使能开发者社区,使开发者能够专注于他们的优势领域并更好的开展工作。
在“hub and spoke model”的架构下,Netflix设置两支团队。一支是由80人组成的开发者生产力工程团队,也叫平台团队。他们主要负责内部开发循环,包括构建、测试、编码、持续集成,此外,他们还关注端到端的开发者体验,源代码控制和依赖管理等方面,以确保开发流程的顺畅和高效。另一支团队则负责交付可观测性和站点可靠工程。在这种模式下,开发者不需要深入了解计算、网络和存储等细节,只需关注开发业务逻辑。
这看似是一种新兴的架构模式,实质上部分集中式基础设施早在几年前就已经存在了 。Netflix 平台团队的核心任务是将任何分散开发者注意力的因素抽象出来,让开发者能够专注于工作并保持流畅状态。
Netflix 平台团队(包括产品管理和内部客户支持)约有 450 人,为 2500 名工程师以及500名数据工程师提供支持。大多数拥有成熟平台工程团队的组织中,这样的角色分配比例不到 10%,而 Netflix 达到了 15%。
Netflix内部的“客户“支持模式
内部“客户“支持模式是指:一个团队专门负责处理一级和二级的内部支持,而更专业的平台工程人员只需处理棘手和复杂的问题,无需花费大量时间来确保平台的正常运转。这种模式的核心是让团队成员能够专注于解决复杂问题,而通过专业的内部客户支持团队来处理日常的支持任务,进而提高整个团队的效率和生产力。
Netflix的内部支持工程师是经过专业培训上岗的,负责处理一级请求和二级请求。一级请求是帮助开发人员找到并使用最适合的工具,二级请求则是深入调试,帮助人们解决更复杂的工具问题。三级请求是深入了解底层基础设施的特殊情况。这种分级支持模式能够有效地处理不同级别的支持任务,提高解决问题的效率。
然而,在基础支持团队规模和专家团队规模之间达到平衡是很难的。但即便如此,Netflix还是通过这种模式实现了让平台工程师发挥10倍效能的目标。它的成功表明,将内部支持任务外包给专业的内部支持团队是一种有效的策略,能够高效的提升开发团队整体的生产力。
Netflix 如何评估开发人员的生产力
Netflix会综合评估开发人员的生产力,除了跟踪DORA和其他定量指标外,还补充了很多定性的问题,包括通过用户调查和了解开发者工作的困难程度。Netflix利用了2021年问世的SPACE开发人员生产力框架,该框架提出25个社会技术因素,分为五个类别:满意度和幸福感、绩效、活动、沟通和协作、效率和流程。
Netflix的开发人员生产力工程团队会跟踪平台的使用情况,例如:
- 使用平台是否令人愉快?
- 如果您离开Netflix,您是否舍不得离开该平台?
- 您是否会因为这个平台很好而推荐您的朋友来Netflix工作?
- 该平台的效能如何?
- 该平台的bug率如何?
不仅如此,Netflix的平台团队还会根据他们服务的团队和平台的不同,设置一些特定的问题。例如问Java开发人员:
- 平台生成应用需要多久?构建时间多久?
- 执行测试套件需要多长时间?
- 您是否信任可观测性工具?
- 您能否一眼就判断出系统的运行状况?
- 在客户发现问题之前,您是否能提前知道问题的存在?
这些问题旨在了解Netflix的平台团队提供的工具是否让开发人员满意,通过调研反馈的情况帮助平台团队进行改进和优化。
Netflix的黄金路径
Netflix在面临着各种不同的需求和挑战时,他们需要在基础设施方面提供足够的支持,以确保业务的顺利进行。他们努力为各种业务场景提供稳定可靠的平台,以满足公司业务的不断增长和创新需求。
在过去两年里,Netflix的基础设施团队不仅服务电影制作和流媒体领域,还广泛扩展了他们的业务范围,适应全新的游戏、广告和直播等业务的技术需求。游戏业务需要为开发人员提供便利的创作环境以确保业务快速上线,而直播则需要高可用性、低延迟和弹性。
同时,在不同的“客户“组织中,Netflix会建立不同的平台团队,为特定用户群体打造适合业务的平台。这样做不仅能满足不同客户群体的需求,同时也可以保持整体平台的可扩展性。
目前,Netflix的开发者生产力团队负责多种不同的工具和平台,因此他们正努力将这些工具整合起来,打造一个集中的内部开发者门户,以提供一致的用户界面和开发者体验。
Netflix也还有需要改进的地方
通常情况下开发人员对文档的需求度是非常高的,但他们却很难养成持续为文档做出贡献的习惯。这是因为开发人员更倾向于将精力集中在代码上,而忽视了编写文档的重要性。Netflix内部也是如此。
与此同时,还存在一个普遍现象,即平台工程师通常自信的从自己的角度出发编写文档,而非站在用户的角度上,这导致用户在理解和使用相关功能时常常难以理解。
为了解决这些挑战,Netflix会努力提醒工程师们重视自身责任,引导他们编写全面且适用的文档,并将编写文档纳入必须“完成”的任务当中。并鼓励工程师从客户的角度思考,将文档的重点放在解释和满足用户需求上。同时通过加强文档编写的指导和培训,建立与用户的沟通渠道,进而提高文档的质量和准确性。
Netflix也在努力寻找合适的方案解决问题。他们正在设计建立一个正确的信息架构,将所有内容整合到一个可索引、可搜索、且符合规范的工具中,这一努力将有助于提高文档的整体质量,并使开发者更轻松地查找到所需的信息。将所有内容整合到一个工具中,并为开发者提供易于搜索和发现的文档资源,将提升开发者的体验并加强他们在使用文档时的工作效率。
Netflix如何在内部推广平台工程
Netflix 平台团队也会遇到平台工程策略中很常见的问题——如何传递平台工程的价值?
Netflix平台团队面临的挑战包括宣传和营销其平台的好处,并使客户能够轻松地进行迁移以适应新的库、工具或框架。另一个关键问题是确保应用和数据团队不超过长期支持窗口支持期限,以避免引入安全漏洞等风险。
为了解决这些问题,Netflix正在加倍努力使迁移变得更容易,并持续更新和部署整个平台。这需要与技术债务进行斗争,并努力将维护工作保持在较低水平以减少技术债务。
此外,随着开发人员生产力工程的崛起,整个行业都将受益。人们开始从高质量、愉快体验的角度考虑平台建设,这是过去没有引起足够重视的。创建令人愉悦、稳定可靠的平台是首要任务,设计师的参与也至关重要。Netflix 平台团队已经非常重视这个问题,也希望更多团队开始关注这些方面。
欢迎免费下载我们的电子书--平台工程实践指南!
热门跟贴