装箱百万奖金,第六届全国工业互联网数据创新应用大赛火热报名中! 了解详情
写点什么

Netflix 如何部署代码

  • 2013-06-14
  • 本文字数:1176 字

    阅读完需:约 4 分钟

著名的电影流媒体网站 Netflix 每天都会进行上百遍部署,它们没有使用 Chef Puppet ,没有一个质量保证部门,也没有发布工程师。为了实现自己的目标,Netflix 构建了一个先进的内部 PaaS(平台即服务)平台,所有的团队都能够通过这个平台部署自己的基础设施部分,同时部署也没有时间和次数上的限制。在 QCon New York 2013 期间, Jeremy Edberg 介绍了这个 Netflix 为了满足快速迭代的需要而基于 Amazon AWS 构建的基础设施。

Netflix 在实现 API 的时候使用了面向服务的架构,该架构会处理网站的大部分请求(每天有 20 亿次请求)。在幕后,API 被分离成了很多服务,每一个服务都由一个团队进行管理,这使得团队能够相对独立地进行工作,也能够独立决定何时以何种频率部署新软件。

Netflix 在 DevOps 方面的投入很大。开发者构建、部署并维护他们自己的服务器集群,同时还需要对错误负责。如果发生了错误,便需要组织一个会议调查问题出现的根本原因,讨论防止此类问题将来继续发生的方案——类似于 5 个为什么

Netflix 中的部署完全是自动化的。如果一个服务需要部署,那么开发者首先会将代码推到一个源代码仓库。之后 Jenkins 会捕获到这个代码推动事件并执行构建生成一个应用程序包。再往后便会基于基础镜像(包含一个 Linux 发布版本)和所有 Netflix 服务器上运行的软件(包括 JVM 和 Tomcat,将来可能会允许团队做进一步的自定义)产生一个新的 VM 镜像(AMI)。在上面这些基础内容安装完成之后会安装应用程序包。由此,一个 AMI 便产生并注册到系统中了。

为了将 VM 镜像部署到它的基础设施中, Netflix 构建了 Asgard 。VM 镜像能够通过 Asgard Web 接口实例化并创建新的 EC2 集群。每一个集群都会包含至少 3 个 EC2 实例用于冗余,这些实例会散步到多个可用区域中。部署新版本的时候,在新版本被实例化运行的同时,运行之前版本的集群仍将继续运行。在新版本启动并将自己注册到称为 Eureka 的 Netflix 服务注册表之后,负载均衡器便会进行切换将所有的流量导向到新集群。新集群会被仔细地监控并保持运行一整夜。如果所有的事情都运行良好,旧集群便会被销毁。如果有任何问题发生,那么负载均衡器便会切换回旧集群。

在 Netflix 基础设施中会不断地产生错误。软件需要能够处理硬件故障、网络连接故障以及其他类型的错误。虽然错误并不会自然而然地产生,但是使用 Simian Army 还是极有可能诱发错误。Simian Army 中包含了很多(软件)“猴子”能够随机地引入错误。例如,Chaos 猴子会随机地导致服务器崩溃,而 Latency 猴子会随机地引发网络延迟。如果团队认清了错误会时常发生的事实,那么他们就有可能忽略错误并创建一种错误弹性至上的文化。

Netflix 基础设施中的很多部分现在都已经开源了,你可以通过 GitHub 获取。Netflix 的最终目标便是完全发布它的基础设施,让其他的公司能够从中受益。

查看英文原文 How Netflix Deploys Code

2013-06-14 09:434001
用户头像

发布了 321 篇内容, 共 110.9 次阅读, 收获喜欢 16 次。

关注

评论

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

TiDB 查询优化及调优系列(四)查询执行计划的调整及优化原理

PingCAP

末流985,秋招斩获多家大厂offer 经验分享

大数据梦想家

面经分享 大数据开发

百度智能小程序巡检调度方案演进之路

百度Geek说

7 款最棒的开源 React UI 库测评 - 特别针对国内使用场景推荐

蒋川

JavaScript react.js 开源 UI 组件库

十一、云原生网络微隔离

穿过生命散发芬芳

5月月更 微隔离

【深入理解TcaplusDB技术】详细介绍TDR表

TcaplusDB

数据库 nosql TcaplusDB 腾讯游戏

智能汽车领域的开源软件供应链安全检测工具分享

墨菲安全

idea插件 工具分享 开源安全 墨菲安全 软件供应链

如何用Apifox 发送接口请求?

Liam

开发者 测试 后端 开发 Postman

是开自助洗车店还是传统洗车店好?

车白兔自助洗车机加盟

自助洗车加盟 开自助洗车店 传统洗车店

避免惊群以及负载均衡的原理与具体实现

C++后台开发

nginx 负载均衡 后端开发 C++后台开发 惊群

「v2.4」千呼万唤的图形化编排,来了!

Jianmu

持续集成 低代码 开发工具 开源项目 节点编排

Scrum实施的8个步骤

PingCode

【深入理解TcaplusDB技术】数组操作介绍

TcaplusDB

数据库 nosql TcaplusDB 腾讯游戏

【深入理解TcaplusDB技术】详细介绍Client工具

TcaplusDB

数据库 nosql TcaplusDB 腾讯游戏

平衡人工智能的性能要求,实现可信AI在银行业务场景的高质量应用

易观分析

人工智能

模块二

Geek_2ce415

企业的文档管理策略

小炮

文档管理

PingCAP Clinic 服务:贯穿云上云下的 TiDB 集群诊断服务

PingCAP

【深入理解TcaplusDB技术】PB表定义

TcaplusDB

数据库 nosql TcaplusDB 腾讯游戏

自助手动洗车设备洗车怎么样?

车白兔自助洗车机加盟

自助洗车加盟 自助洗车机洗车 自助手动洗车设备

为什么穷人越穷,富人越富?

大数据梦想家

程序人生

eKuiper 1.5.0发布:实现无缝式工业数据采集+边缘流处理

EMQ映云科技

物联网 IoT emq 开源之夏 5月月更

英特尔开源项目推动SYCL标准采用,打破单个厂商封闭生态系统

科技之家

大数据学习必备 | 推荐几个牛X 的 github 项目,助你事半功倍

大数据梦想家

大数据 学习资料 Github'

【深入理解TcaplusDB技术】详细介绍PB表数据类型

TcaplusDB

数据库 nosql TcaplusDB 腾讯游戏

MBTI 剧透人生,你的天选职业是什么?(免费测)

融云 RongCloud

小区适合投放自助洗车机吗?

车白兔自助洗车机加盟

自助洗车加盟 小区投放自助洗车机

没有店面店铺可以做自助洗车吗?

车白兔自助洗车机加盟

自助洗车加盟 自助洗车店面

YARN Federation技术解析及应用

移动云大数据

YARN

Fastjson官方再次披露高危漏洞,包括rocketmq、jeecg-boot等近15%的github开源项目受影响

墨菲安全

安全 idea插件 Fastjson 依赖漏洞检测 墨菲安全

6月月更“粽”头戏,大家一起来参与吧!

InfoQ写作社区官方

热门活动 6月月更

Netflix如何部署代码_DevOps_Zef Hemel_InfoQ精选文章