写点什么

Netflix 的全周期开发者:从思维转变到自助工具

2018 年 6 月 21 日

Netflix 技术博客分享了 Netflix边缘工程团队尝试采用新方法构建和运维服务的历程,最终产生了一种新的角色,叫作“全周期开发人员”。开发人员在交付服务的过程中也负责部分运营工作,他们经过培训,并可使用一系列自助服务工具。整体团队一起创建和维护平台和工具,但每个团队都可以自由地偏离“平地”。

博客文章的作者Philip Fisher-Ogden、Greg Burrell 和Dianne Marsh 指出,软件交付生命周期的目的是优化“获得价值的时间”,以便有效地将想法转化为产品和服务。这与Dan North 和Jessica Kerr 的提议类似,即现代软件开发应侧重于“努力缩短交付周期以减少对业务的影响”。开发和运行软件服务涉及多方面的责任:设计、开发、测试、部署、运行和支持。传统上,这些责任被分隔开,并在组织内形成孤岛。这在《凤凰项目》中是一个典型的例子。

这些特定角色在每个细分领域中带来效率,但在整个生命周期中可能效率低下。Netflix 边缘工程团队负责视频流所需的第一层AWS 服务,他们从 DevOps 原则中汲取灵感,重新思考了传统软件交付方法。特别是 Gene Kim 所推广的“DevOps 三方法”,强调了系统思维、扩大反馈循环、培养持续实验和学习文化的重要性。

边缘工程团队的新方法专注于“运营自己构建的东西”(就像亚马逊 CTO Werner Vogel 所说的:“你构建它,并运行它”),并将DevOps 原则付诸行动,让开发系统的团队同时也负责系统的运维和支持工作。

将这一责任分配给每个开发团队,而不是将其外化,从而创建直接反馈循环并调整激励措施。团队因此可以感受到运维的痛点,就会想办法改进系统的设计或代码来缓解痛点。他们需要对这两项职能负责。

这种方法面临的挑战是,负责整个开发生命周期给开发人员带来额外的负担,并且往往需要学习新的技能。个人和团队在承担责任的同时也会感到倦怠。为了缓解这些问题,可以利用工具来简化和自动化相关的开发和运维工作。Netflix 已经创建了集中式支持团队,比如“云平台”、“性能和可靠性工程”和“工程工具”,目标是开发出一个通用的平台和工具来解决每个开发团队的问题。这些工具中已经有很多作为 Netflix OSS 的一部分开源出来,如 Spinnaker 持续交付平台。

思维方式的变化和公共基础设施和工具的创建相结合,于是出现了“全周期开发人员”。全周期开发人员应该要掌握软件生命周期所有领域的知识。转向全周期开发人员模式需要思维方式方式转变。一个全周期开发者需要像软件工程师(SWE)、测试开发工程师(SDET)和站点可靠性工程师(SRE)那样思考和行动。并非所有的开发人员都具备了相关技能,为此Netflix 提供了相应的培训。此外,博客文章还讨论了并非所有的开发人员都希望这样工作,Netflix 中还有其他更多特定的工作角色。

全周期开发人员(图片来自 Netflix 技术博客

博客文章警告说,要在 Netflix 之外应用此模型,需要作出必要的调整。行业思想领袖 Gareth Rushgrove 强调要避免盲目崇拜和盲目复制“软件独角兽”公司的最佳实践,他在 2016 年的演讲“ Two Sides of Google Infrastructure for Everyone Else ”中提出了这一观点。正如 Matthew Skelton 和 Manuel Pais(InfoQ 编辑)在“ DevOps 团队拓扑”网站上所讨论的那样,现在已经有很多方法和各种组织结构用于解决开发和运维问题。

对于希望采用全周期方法的组织,Netflix 博客作者建议从分析潜在价值和相关成本开始,然后进行思维转换。 Netflix 博客上提供了很多相关信息,网络上也有很多相关信息,还有很多基于开源和 SaaS 的平台和工具解决方案,它们可以满足很多公司的需求。归根结底,最重要的是保持简单:“搞清楚你的需求是什么,并把复杂性降到最低。”

查看英文原文 Full Cycle Developers at Netflix: From Mindsets to Self-Service Tooling

2018 年 6 月 21 日 08:051327
用户头像

发布了 731 篇内容, 共 361.0 次阅读, 收获喜欢 1832 次。

关注

评论

发布
暂无评论
发现更多内容

2020年书单

井中人

入门参考:从Go中的协程理解串行和并行

soolaugust

go Go Concurrency Patterns 七日更

智慧城市平安智慧社区平台建设,公安防控管理平台

WX13823153201

大众汽车“芯片荒”,折射汽车芯片的漫漫“自主替代”路

脑极体

比特币10年:从2个披萨涨到2万美金,背后的三个“神秘人”

CECBC区块链专委会

比特币

神比喻:低代码开发像自动驾驶汽车,零代码开发像无人驾驶汽车!

低代码指南

程序员 软件 开发者 低代码 开发工具

由于不知线程池的bug,某Java程序员叕被祭天

Java架构师迁哥

谁告诉你观察者就是发布订阅模式的!抽他!

爱笑的架构师

设计模式 23种设计模式 观察者模式 Java设计模式 七日更

使用基于 SpringMVC 的透明 RPC 开发微服务

AI乔治

Java spring 架构 微服务 Spring Cloud

得物(毒)APP,8位抽奖码需求,这不就是产品给我留的数学作业!

小傅哥

Java 小傅哥 编程开发 七日更 数学逻辑

量化交易系统开发搭建案例

薇電13242772558

区块链 策略模式

大连市税务局局长赵福增:用区块链打破部门间“信息孤岛”

CECBC区块链专委会

区块链 汽车

Reactive Spring实战 -- 理解Reactor的设计与实现

binecy

reactor Reactive SpringBoot 2

2020,谁是中国ToB行业最有影响力的企业?

ToB行业头条

距离 Java 开发者玩转 Serverless,到底还有多远?

阿里巴巴云原生

Java Serverless 微服务 云原生 中间件

生产环境全链路压测建设历程17:某快递A股上市公司的生产压测案例之前言

数列科技杨德华

全链路压测 七日更

TypeScript | 第二章:类、接口和之间的关系

梁龙先森

typescript 前端 七日更

世界之书:《麦田里的守望者》与在虚无中创造希望

lidaobing

麦田里的守望者 28天写作

【理论篇】浅析分布式中的 CAP、BASE、2PC、3PC、Paxos、Raft、ZAB

merlinfeng

大数据 分布式

执法办案信息化建设,情报研判管控分析平台搭建解决方案

t13823115967

智慧公安

英特尔宋继强:迈向可持续的千倍速计算未来

intel001

Service Mesh最火项目Istio是怎么做流量管理的?

AI乔治

Java 架构 istio

Fair World智能合约APP系统软件开发

开發I852946OIIO

系统开发

脑洞:如何用一个整数来表示一个列表?

Python猫

Python

编程之美!从线程池状态管理来看二进制操作之美

洋仔聊编程

Java 源码分析 线程池

甲方日常72

句子

工作 随笔杂谈 日常

小白干货奇遇记

熊斌

个人成长 七日更

volatile,synchronized可见性,有序性,原子性代码证明(基础硬核)

叫练

volatile 多线程 synchronized 原子性 指令

“区块链+社会治理”模式获居民点赞

CECBC区块链专委会

区块链 区块链投票

MSHA x Chaos 容灾高可用实践

阿里巴巴云原生

数据库 高可用 云原生 中间件 容灾

2020 微信头像圣诞帽来啦,快给 TA 戴帽子吧~

mghio

圣诞帽 微信头像 圣诞节

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

Netflix的全周期开发者:从思维转变到自助工具-InfoQ