阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

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

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

关注

评论

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

中&美程序员,其实就差在这6点了

伤感汤姆布利柏

程序员 IT

普及旗舰音质,打造一加用户首选!一加 Buds 3定档1月4日发布

编程猫

配置多网关/多网卡

纵歌

按图搜索淘宝商品接口(拍立淘)(Taobao.item_search_img)

tbapi

按图搜索淘宝商品接口 图片搜索商品接口 图片搜索API接口 拍立淘API接口 淘宝图片搜索接口

边缘计算:将未来的计算力带到你的指尖

啊川..

聚道云受邀参加【中国算谷·智慧庆阳】算力行动推进大会

聚道云软件连接器

Kubernetes常见的三种网络插件Flannel、Calico、Weave Net的比较:

Geek_b2fe7a

NAT协议的实现方式

郑州埃文科技

七功能遥控编解码芯片

智趣匠

实时渲染与离线渲染优势浅析-3D可视化技术

3DCAT实时渲染

云渲染 实时渲染

程序员如何封装逻辑?

伤感汤姆布利柏

CSS 低代码

基于 KubeBlocks 的 PikiwiDB(原Pika) 云化下一站

小猿姐

数据库 云计算

阿里云 ACK 云上大规模 Kubernetes 集群高可靠性保障实战

阿里巴巴云原生

阿里云 容器 云原生

云原生时代的安全变化趋势

穿过生命散发芬芳

为什么市场称SoBit 是铭文跨链赛道真正的龙头?

股市老人

利用抖音商品详情API提升电商应用的市场份额

技术冰糖葫芦

ERP系统与智能商品系统在供应链管理上的区别和优势在哪些方面?

第七在线

如何快速获取抖音新用户/用户信息

RestCloud

抖音 数据同步 ETL

高效打通,释放人力——聚道云软件连接器助力生产制造行业人力资源信息交互

聚道云软件连接器

TiDB 7.5 LTS 发版丨提升规模化场景下关键应用的稳定性和成本的灵活性

PingCAP

数据库 TiDB pingCAP

IPQ9554 with QCN6224 WiFi network card: What kind of high-performance wireless network connection?

wifi6-yiyi

ipq9554 QCN6224

场外白名单达到1200U?Solana 生态铭文跨链桥 Sobit 是何神圣?

EOSdreamer111

聚道云实现浙商银行与易快报完美互通,助力企业财务完成数字化转型

聚道云软件连接器

Solana 生态铭文跨链桥 Sobit 是何神圣?其场外白名单已达到1200U

长安区块链

作为铭文跨链赛道龙头,SoBit 有何突出之处?

EOSdreamer111

克魔助手工具下载、注册和登录指南

雪奈椰子

Kubernetes调试终极武器: K8sGPT

俞凡

人工智能 Kubernetes SRE ChatGPT

Solana 生态铭文跨链桥 Sobit 是何神圣?其场外白名单已达到1200U

股市老人

C 语言中的 switch 语句和 while 循环详解

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

内嵌AI智能会议、AI临时分身、AI降噪等创新技术,ThinkPad X1 Carbon AI发布

科技范儿

探索Web前端技术的新趋势与发展

不在线第一只蜗牛

互联网 前端 Web 前端技术

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