写点什么

Netflix 是如何构建代码的

  • 2016-04-04
  • 本文字数:1119 字

    阅读完需:约 4 分钟

三名 Netflix 工程师 Ed Bukoski Brian Moyles Mike McGarr 在一篇博文中解释了Netflix 如何持续交付向7500 万观众提供电视节目和电影的代码。

Immutable Server 模式是 Netflix 部署的基础。每次部署都会创建一个全新的亚马逊机器镜像(AMI)。

Netflix 的微服务架构让 Netflix 团队可以松耦合。变更推送速度让每个团队都很舒服。

Netflix 不要求任何团队使用任何工具集,但他们要负责维护他们实现的工具。在 Netflix,有团队会集中提供工具,作为“铺好的路”的一部分,以减少大多数 Netflix 工程师的认知负担。

这个“铺好路”的代码交付过程由几个步骤组成。代码使用 Nebula 在本地构建和测试。变更提交到中心 Git 版本库。一个 Jenkins 作业构建、测试并打包应用程序用于部署。这些程序包使用 Netflix 的全球持续交付平台 Spinnaker 部署到亚马逊机器镜像(AMI)。

构建

Nebula Gradle 构建系统的一组插件,它可以构建、测试并打包 Java 应用程序。Netflix 的大多数代码都是用 Java 编写的。这些插件扩展了 Gradle 的自动化功能,包括依赖管理、发布管理以及打包。一个项目的构建文件声明了用到的依赖和插件。

集成

下一步是将本地构建、测试并打包的源代码推送到 Git 版本库。具体的流程由团队选择。

提交完成后,会触发一个 Jenkins 作业构建、测试并打包代码用于部署。程序包类型会根据构建对象是一个库还是一个应用程序作出恰当的选择。

部署

Netflix “Bakery”暴露了一个 API 用于创建 AMI。具体的镜像使用 Aminator 创建。用户指明将什么基础镜像和程序包放入该 AMI。基础镜像是一个 Linux 环境,包含与 Netflix 生态系统集成所需的约定、工具和服务。

当 Jenkins 集成任务执行成功后,它会触发 Spinnaker 管道。Spinnaker 读取 Nebula 程序包,并使用 Bakery API 创建 AMI。

然后,Spinnaker 会向数以十计、百计或千计的实例提供该 AMMI。

第一次部署是到测试环境,部署会执行自动化集成测试。在通过这些测试后,Spinnaker 为团队提供了自定义生产环境部署过程的灵活性,例如多区域部署、金丝雀发布或者红/ 黑部署。

该自动化过程非常高效,举例来说, Janitor Monkey 云弹性和维护服务从代码检入到多区域部署只要 16 分钟就可以完成。

未来方向

在 Netflix,语言无关的需求与日俱增。非 JVM 语言需要包含进构建过程。

部署时间有一大部分是“烘焙(baking)”过程,Netflix 正设法减少这部分时间。

此外,Netflix 还在研究容器是否能够帮助他们应对上述两个挑战。

容器还可以改进当前的构建、烘焙和部署过程,进而改善开发测试周期。可以在本地部署的容器,无需修改就可以部署到生产环境,这对于确定一个 Bug 是否是由环境差异导致的非常有帮助。这让工程师可以专注于新特性。

查看英文原文 How Code is Built at Netflix

2016-04-04 19:003236
用户头像

发布了 1008 篇内容, 共 419.6 次阅读, 收获喜欢 346 次。

关注

评论

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

数字先锋 | 异地“同上一堂课”,天翼云助力巴蜀云校线上教学提质增效!

天翼云开发者社区

天翼云 数字教育平台

告别切屏|阿里云DMS MCP+通义灵码,30分钟搞定电商秒杀开发

阿里巴巴云原生

Harmony OS Next手势组合全攻略!三种模式玩转交互设计

Turing_010

【每天学点‘音视频’】前向纠错 和 漏包重传

小曾同学.com

实时音视频 NACK fec ACK 丢包重传

告别切屏|阿里云DMS MCP+通义灵码,30分钟搞定电商秒杀开发

阿里云云效

“考公图都不会?”大模型真正的难题是:看图太难!

新消费日报

商品中心—商品可采可补可售的技术文档

不在线第一只蜗牛

Java

Sentieon 项目文章 | 长读长基因组测序在神经发育障碍分子诊断中的应用

INSVAST

长读长测序 Sentieon 精准医疗 分子诊断 神经发育障碍

MCP Server 之旅第 6 站:FC MCP Server 研发实战

阿里巴巴云原生

MCP

Desktop Stickers for Mac v2.88 桌面便签

晨光熹微

分布式里套单机?YMatrix HTAP “神技”搞定 10w+ TPS

YMatrix 超融合数据库

HTAP HTAP 场景实践 YMatrix HTAP数据库 非平衡部署

天润融通AI训练师推动AI员工从“可用”到“好用”

天润融通

深度解析:爬虫技术获取淘宝商品详情并封装为API的全流程应用

Noah

赛博威合同管理再进化:费用追踪无死角,核算精准零偏差,审批智能再提速!

赛博威科技

F5深化与Red Hat战略合作 ,赋能企业AI规模化安全部署

科技热闻

立即体验|效果好、低延迟,Trae 已支持 Doubao-1.5-thinking-pro 新模型

火山引擎开发者社区

豆包 Trae

Feeder for Mac v4.7.3创建和发布的RSS

晨光熹微

Feeder 4 mac Feeder下载 Feeder 4 for mac

FonePaw iOS Transfer for Mac v6.5.0 iOS数据传输工具

晨光熹微

DropDMG for Mac v3.6.9快速制作DMG文件的工具

晨光熹微

新闻速递丨Altair连续两年被 Gartner 魔力象限评为数据科学与机器学习平台领导者

Altair RapidMiner

机器学习 AI 数据分析 生成式AI RapidMiner

Deckset for Mac v2.0.39 创意优秀的幻灯片制作工具

晨光熹微

天润融通“业务专家+AI员工”模式,重塑企业组织形态

天润融通

《算力互联互通行动计划》发布,天翼云铺就算力畅行高速路!

天翼云开发者社区

天翼云 算力标准

商品中心—商品生命周期和状态的技术文档

电子尖叫食人鱼

Java

2026第十四届中国电子信息博览会

AIOTE智博会

电子展 深圳电子展 电子信息展 电博会

Ripple的 XRP分类账正推出代币化商业票据以进一步推动 RWA 发展

PowerVerse

File Cabinet Pro for mac v8.5.6 实用的菜单栏文件快捷管理工具

晨光熹微

Cisdem PDF Compressor for Mac v5.2.0 PDF文件压缩工具

晨光熹微

鸢尾花数据多维分布探索与可视化实践|AI 编程社知识库精选

火山引擎开发者社区

AI

GM ePub Reader Pro for Mac v2.8.6 ePub 阅读器 AI 电子书阅读神器

晨光熹微

SRv6 验证实验

天翼云开发者社区

网络 SRv6

Netflix是如何构建代码的_DevOps & 平台工程_Michael Stiefel_InfoQ精选文章