设为首页 | 收藏本站欢迎来到卓越网络免费免备案CDN加速,DDoS和CC攻击防御,高防CDN管理平台!

已阅读

揭露公司内部如何使用Python

作者:cdnfine      来源:cdnfine      发布时间:2019-05-21

流媒体巨头网飞(Netflix)详细披露了公司如何从运营、分析、安全到网络交流,全面依赖Python这门多功能的编程语言的。

 

Netflix几乎在公司业务的所有角落都用到了Python最受欢迎的软件包,并在亚马逊网络服务(AWS*)的云端平台上运营。

 

*AWS使Netflix能够快速部署数千台服务器,并且在数分钟内部署数TB存储。这使得用户可以在全球各地流式传输Netflix表演和影片。

 

 

“我们整个内容生命周期都使用到了Python,从决定哪些内容值得被继续投资,到运营内容分发网络*(Content Delivery Network,CDN)来让最终的视频能服务于1.48亿会员们,“Netflix的工程师在博客中写道。

 

*内容分发网络(CDN)指的是一种通过互联网连接的计算机网络系统,利用最靠近每位用户的服务器来更高效地将音乐、图片、视频、应用程序或其他文件发送给用户。

 

 

Python包含非常丰富的标准库,语言语法也很简洁明了,除了专业CS技术人士之外,也同样适合没有编程语言基础的人们入门学习。Python还拥有成熟的开发社区,能够对内容进行快速迭代,以及大量第三方库可被利用解决不同类型的技术问题,例如数据分析,数据可视化,以及其它涉及Netflix业务运营的方方面面。

 

揭露公司内部如何使用Python

 

以下是Netflix如何利用Python的方式:

 

1. 统计分析 Statistical Analysis

 

Netflix的核心团队使用许多Python的统计和数学库,包括NumPy,SciPy,ruptures和Pandas。Python还被用于开发一个时间序列关联系统,以及一个可以并行操作大型分析工作负载的分布式工作系统,从而提高分析结果交付的效率。

 

揭露公司内部如何使用Python

 

最重要的是,Python通常还用于自动化任务,数据挖掘和清洗,以及可视化。

 

揭露公司内部如何使用Python

 

2. 机器学习

 

Netflix在培训机器学习模型时广泛依赖于Python,模型被应用于从推荐算法到插图个性化再到营销算法等各个方面。

 

一些算法在训练深度神经网络时使用TensorFlow,Keras和Pytorch,而XGBoost和LightGBM被用于构建梯度提升决策树*。

 

*梯度提升决策树(Gradient Boosting Decision Tree)是一种迭代的决策树算法,由多棵决策树组成,所有决策树结论累加起来做最终分类预测,在数据挖掘中也有着卓越表现。

 

 

Netflix还使用了Python中更广泛的科学堆栈,例如NumPy,SciPy,scikit-learn,Matplotlib,Pandas和cvxpy。

 

Metaflow是一个在整个公司中被大规模使用到的Python框架,它可以轻松地从原型到产出阶段执行机器学习项目。通过Metaflow,Netflix依赖良好的并行化和优化的Python代码以10Gbps的速度获取代码,处理内存中的数亿个数据点,并协调编排数万个CPU内核的计算。

 

 

3. 实验

 

Netflix的科学计算团队为试验提供了一个平台,供科学家和工程师们分析AB测试和其他实验。

 

他们使用的Python框架包括:

  • Metrics Repo,一个基于PyPika的Python框架,允许用户编写可重复使用的参数化SQL语句。

  • Causal模型库,一个Python和R框架,使用PyArrow和RPy2,允许科学家为因果推断贡献新的模型。

 

4. 运营 Operations

 

Netflix的需求工程团队通过编排区域故障,转移和协调流量分布,来为其网络(容量)构建弹性。

 

“我们很自豪地说,我们团队的工具主要都是用Python搭建的。”

“放入bpython shell并进行临时制作的能力已经不止一次地挽救了我们的一天。“

 

*bpython是一个Python解释器的界面,开发者的目的是提供给用户所有的内置功能,很像现在的IDE(集成开发环境),但是将这些功能封装在在一个简单,轻量级的包里,可以在终端窗口里面运行。

 

Python的一大优势就是可以通过具有极强交互性的Shell来进行探索式地编程。用户可以试着输入一些代码就能立马获得解释器地反馈,而不必像C++等编程语言一样专门写一个脚本,这为使用者提供了一个计好地交互性体验。

 

 

该团队使用的工具包括:

  • 使用 numpy 和 scipy 来执行数值分析

  • 使用boto3 对 AWS(亚马逊网络服务) 基础设施进行更改

  • 使用rq 运行异步工作负载

  • Flask APIs被用来像一个封装一样将上面的编排工具打包起来

  • Jupyter Notebooks和neteract被用来分析操作性数据和原型可视化工具。Netflix使用Python构建Jupyter服务器的自定义扩展,从而允许工程师管理一系列任务,例如记录、归档、发布和克隆Notebooks。

 

同时,大数据编排团队为安排和执行ETL(Extract-Transform-Load,提取-转换-储存)数据及特殊数据传输管提供服务和工具支持。

 

该团队使用Jupyter Notebooks和papermill来允许调度程序提供模板化的作业类型,例如Spark。

 

另外还使用了pygenie,这是一个Netflix构建的客户端,与Genie(一种联合作业执行服务)连接。

 

5. 监管和自动化回复

 

Netflix的Insight Engineering团队负责构建和运行用于生成警报、诊断和自动修复的工具。

 

他们现在支持Python客户端的大多数服务,包括Spectator Python客户端库(一个用于记录维度,时间序列指标的库)。

 

除此之外,Python框架Gunicorn,Flask和Flask-RESTPlus也被用于创建Winston和Bolt这类诊断和修复平台。

 

6. 信息安全

 

Netflix的信息安全团队使用Python执行广泛的任务,包括安全自动化,风险分类,自动修复和漏洞识别。

 

Python项目包括:

  • Security Monkey,一个开源的Netflix库,用来监管亚马逊网络服务,谷歌云端,OpenStack和GitHub以更更改资产

  • Bless SSH证书机构来保护SSH资源(SSH为建立在应用层基础上的安全协议)

  • Repokid允许Python被用于帮助IAM(身份和访问管理)权限调整

  • Lemur被用来帮助生成TLS证书,Netflix也使用Diffy取证分类工具,这完全使用Python构建。

 

7. 视频编码和自动内容分析

 

Netflix有一个团队专门致力于对其下目录内容进行编码并使用机器学习进行分析,例如从电影中提取出最佳静态剧照。

 

在使用Python的大约50个项目中,还有视频质量评估库vmaf和能将存储于云端中的内容安装为本地文件的mezzfs库。

Keywords: 免费CDN加速 免备案CDN加速 高防CDN加速