阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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:002833
用户头像

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

关注

评论

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

入选中国数据智能领域 IDC 创新者,柏睿数据创新实力再获肯定

新消费日报

TDengine 3.0 性能如何?教你一键复现 IoT 场景 TSBS 测试结果

爱倒腾的程序员

低代码在边缘计算工业软件中的应用

力软低代码开发平台

什么是HTML5?HTML5的含义、元素和好处

互联网工科生

html html5

和鲸数据科学专家平台正式成立,凝聚专家资源推进产业数字化升级

ModelWhale

人工智能 数据科学 专家平台 专家资源

浅析华为云Astro的5大关键能力技术

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

UINO优锘科技受邀在2023全球数字经济大会数字孪生赋能城市数字化转型论坛发表演讲

ThingJS数字孪生引擎

数字化转型 智慧城市 数字孪生 #web3D ThingJS

没收入是表象,UMU CEO李东朔的出海经验:第一年破100国家

B Impact

专业开发者也需要低代码开发?

这我可不懂

开发者 低代码 低代码开发

软件测试丨Docker环境安装配置(Mac、Windows、Ubuntu)

测试人

Docker ubuntu 软件测试 Mac windows

2023世界人工智能大会,和鲸科技入选中国信通院《2023大模型和AIGC产业图谱》

ModelWhale

人工智能 数据科学 大模型 AIGC 世界人工智能大会

IT行业都在用哪些进度跟踪工具

PingCode

IT 项目管理软件 项目进度管理

Docker学习路线3:安装设置

小万哥

Docker 容器 后端 开发 开发程序员

初识滴滴交易策略之一:交易市场

滴滴技术

算法 滴滴技术

生成式AI的发展、应用及影响 | 社区征文

Dec

年中技术盘点

新兴技术的影响与展望:生成式AI及更多思考|社区征文

小诚信驿站

年中技术盘点

苹果APP安装包ipa如何安装在手机上

ios

云原生技术分享篇丨浅析Istio流量管理

inBuilder低代码平台

云原生

晴数智慧张晴晴博士当选开放群岛开源社区「首席数据科学家」

Geek_2d6073

智能制造:低代码开发平台推动数智时代的巨变

EquatorCoco

人工智能 低代码 智能制造 数智化

如果小程序越来越多,是不是会直接代替App?

Onegun

小程序 小程序容器

华为云Astro低代码平台关键能力技术浅析

华为云PaaS服务小智

云计算 软件开发 低代码 华为云

你需要知道的Symbols

不在线第一只蜗牛

前端 symbol

企业是如何做到持续规划的?

智达方通

全面预算管理 持续规划 年度计划流程

极光笔记 | 解锁Web推送的潜力:提升网站收入

极光JIGUANG

网站 营销 消息推送 推送

图加速数据湖分析-GeaFlow和Hudi集成

TuGraphAnalytics

数据湖 图计算 Hudi 数据湖分析 GeaFlow

小度全屋智能携大模型应用惊艳亮相中国建博会,智慧体验演绎未来家居新标准

新消费日报

Hybrid Embedding:蚂蚁集团万亿参数稀疏 CTR 模型解决方案

AI Infra

AI 开发者 海量存储 AI大模型 降本增效

华为云命令行工具服务KooCLI助力一键管理云资源

华为云PaaS服务小智

云计算 软件开发 华为云

基于Go语言的滴滴DevOps重塑之路

滴滴技术

DevOps 滴滴技术 #go

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