QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

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

关注

评论

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

从自动到智能:企业级问卷系统全开源,让调研更轻松~

XIAOJUSURVEY

开源 全栈 智能化 问卷 企业级

win版Topaz Gigapixel AI(人工智能图片放大工具)特别版

iMac小白

Topaz Gigapixel AI中文 Topaz Gigapixel AI下载

CQ 社区版 2.12.3 | 任务中心、访问申请、数据变更等多个模块大改版!

BinTools图尔兹

sql 数据库管理 数据脱敏 用户提权 数据变更

我们小公司,哪像华为一样,用得上IPD(集成产品开发)?

IPD产品研发管理

华为 产品 项目管理 产品研发

卷爆短剧出海:五大关键,由AIGC重构

阿里云CloudImagine

云计算 AIGC 微短剧 短剧

14个Flink SQL性能优化实践分享

华为云开发者联盟

sql flink 华为云 华为云开发者联盟 企业号2024年5月PK榜

Klocwork 2024.1新功能详解:验证平台功能提升、分析Bazel构建项目、MISRA C++:2023®编码标准

龙智—DevSecOps解决方案

klocwork perforce 静态代码分析工具

win版Power-user Premium(Excel插件)特别版

iMac小白

智能推荐系统有哪些特点?

悦数图数据库

win版O&O Defrag (磁盘碎片整理工具)Professional / Server注册版

iMac小白

win版Native Instruments Kontakt(音乐采样工具)特别版

iMac小白

大模型效能工具之智能CommitMessage

百度Geek说

百度 大模型 企业号2024年5月PK榜

win版BurnAware Professional (光盘映像工具)特别版

iMac小白

ScrumMaster认证机构及CSM、PSM、RSM价值比较

ShineScrum

win版BitRecover EML Converter Wizard(邮件转换软件)下载

iMac小白

Databend 倒排索引的设计与实现

Databend

倒排索引

同样的APP为何在Android 8以后网络感觉变卡?

京东科技开发者

GQL图查询语言:高效处理复杂图数据

悦数图数据库

图数据库

win版MAGIX Samplitude Music Studio X8(音乐制作软件)特别版

iMac小白

Epubor Ultimate Converter(电子书格式转换工具)注册版

iMac小白

代码革命的先锋:aiXcoder-7B模型介绍

京东科技开发者

自动化UI测试工具TestComlete现已集成AI功能,可自动执行可视化回归测试,减少误报,简化工作流程

龙智—DevSecOps解决方案

UI自动化测试 SmartBear

在 2024 年如何启动一个 Node.js 项目

高端章鱼哥

win版IDimager Photo Supreme 2024(图片管理软件)激活版

iMac小白

win版Disk Sorter Pro / Ultimate / Enterprise (文件分析管理工具)特别版下载

iMac小白

求职思维和招聘思维

老张

面试 求职 求职技巧

Decryption high performance :IPQ8072 and IPQ8072A chips detailed comparative ...

wifi6-yiyi

IPQ8072 IPQ8072A

使用生成式AI的影视工作室所必备的版本控制系统Perforce Helix Core:助力更好地数据管理、分享和协作

龙智—DevSecOps解决方案

Perforce Helix Core 版本控制工具 生成式 AI 应用

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