云原生技术如何帮助 Mux 简化在线流媒体视频

挑战

Mux 的目标是“让在线流媒体视频对每个人来说都很容易”,创始人 Adam Brown 说,我们的数据和视频工作流程涉及很多移动组件。公司为了有效管理复杂的流程,于 2015 年 12 月第一次部署了 Docker 容器。最初,Mux 用 Rancher 堆栈进行编排,但遇到网络稳定性的问题,以及需要支持多个云的解决方案。

解决方案

Brown 决定迁移到 Kubernetes 上,由 Mux 团队自己构建。

影响

迁移到 Kubernetes “提高了我们的管理效力和版本部署的效率,” Brown 说,“我们能动态扩展,迅速地响应观众高达百万计的大型直播活动。”开发工作流程整体简化;之前搭建就需要数个小时,而现在开发环境最多需要 15 分钟就能运转,在多个云区域部署整个集群(约 50 项微服务)仅需不到 1 小时。

挑战: 可移植性 , 速度

行业: 软件

地点: 美国

云类型: 公有 , 多云

产品类型: 安装程序

出版: June 5, 2020

使用的项目
etcd
gRPC
Jaeger
Kubernetes
OpenTracing
Prometheus
Stay informed

Get the latest news from our community of doers. Subscribe to the CNCF newsletter.

See footer for our privacy policy.

一些数据…

在多个云区域部署整个集群仅需不到 1 小时

90 个微服务

开发环境最多需要 15 分钟就能运转

“Mux”是“多路传输”的简写,即在数字媒体中将多路信号整合成为一路。

自 2015 年创建以来,Mux 已经整合了所有资源,旨在“让在线流媒体视频对每个人来说都很容易”,共同创始人 Adam Brown 说,“我们的目标就是从创造高品质的流媒体体验入手,消除技术层面的复杂性。我们在易于使用的API背后帮助自动化决策,如编解码器、编码设置和CDN分发。”

Mux 的两款产品之一是数据产品,为世界各地的视频播放器提供用户体验质量(QoE)指标,而视频产品让开发者能够按己所需,方便快捷地创建、编辑视频或进行直播。

有了这两个工作流程,特别是视频流程,“就会涉及到很多移动组件,”Mux 技术与架构主管 Brown 说,“我们管理来自全球各地的大型文件,很多文件都需要转码。然后还有数据流水线用于算法决策,决定使用什么转码参数,生产什么比特率,通过什么 CDN 发布。”

公司为了有效管理复杂的流程,公司很早就采用了容器化,于 2015 年 12 月第一次部署了 Docker 容器。最初,Mux 用 Rancher 堆栈管理容器,“貌似从这里入手最为简单,” Brown 说,“Kubernetes 那时还处于早期,集群和运行都比现在要复杂得多。”

一段时间之后,公司遇到网络稳定性的问题,随着 Kubernetes 生态逐渐成熟,Brown 重新把所有组件再次迁移到 Kubernetes 上。他一一考虑了众多云供应商部署、管理的 Kubernetes 产品,最终决定由 Mux 团队自己运行 Kubernetes。

“我们在多个云上部署,包括谷歌和亚马逊,”Brown 解释说,“早期的时候,我们比较担心的一个问题是内部开发和运营需要一致的环境。我们希望日志统一、度量统一。因为现有的主机访问,实现管理服务的统一面临一些技术挑战。所以,我们最终在所有的云上进行直接管理。”

因为已经在容器里面完成了所有构建、部署,甚至 CI 流水线,迁移到 Kubernetes 非常简单直接。从那时起,Mux 将整个构建系统都迁移到了 Bazel,“这样大大减少了构建时间,同时还增强了可维护性,”Brown 补充说,“为了管理 yaml,我们迁移到了以 Starlark 为基础的新 DSL,通过与 Tilt 整合,强化了开发环境,提高了开发者构建和运行的速度,轻松地在云上或本地机器上运行开发环境。”

“对我们的开发者来说,当他们编写软件的时候,甚至是编写复杂系统软件的时候,不需要太多考虑要在什么样的云环境里运行,这样整个开发工作流程就简化了。”

— MUX 共同创始人 ADAM BROWN

迁移到 Kubernetes 给 Mux 带来了立竿见影的成效。“提高了我们的管理效力和版本部署的效率,” 他说,“我们能动态扩展,迅速地响应观众高达百万计的大型直播活动。”

Kubernetes 实现了云供应商之间的一致性,Brown 说,“这样我们就能把每个云供应商都当成纯计算资源。对我们的开发者来说,当他们编写软件的时候,甚至是编写复杂系统软件的时候,不需要太多考虑要在什么样的云环境里运行,这样整个开发工作流程就简化了。”

现在,开发环境最多需要 15 分钟就能运转,在多个云区域部署整个集群(约 90 项微服务)仅需不到 1 小时。

Brown 说,Mux 使用云原生堆栈还能对流媒体视频做很多有趣的工作。“很轻松地就能在内部 API 上迭代并保持兼容性,”他说,“为我们节省了大量时间。”

“满足一个请求就会遇到很多复杂的问题,没有 gRPC 和 Kubernetes,我觉得我们不可能这么快速、有效地提供服务。”

— MUX 共同创始人 ADAM BROWN

Brown 说,Mux 使用云原生堆栈还能对流媒体视频做很多有趣的工作。“很轻松地就能在内部 API 上迭代并保持兼容性,”他说,“为我们节省了大量时间。”

公司还用 StackRox 产品做容器扫描、运行时扫描和运行时脆弱性检测。“我们喜欢这个产品是因为它最方便使用,”Brown 说,“另外一个实实在在的优点是让你能迅速地了解分级,知道首先应该关注什么安全问题。发现了弱点,就会增加别的 Kubernetes 信息,比如进行测试或生产或联网。把问题的严重程度排级,指出能够迅速采取的行动,这样有助于我们的工作。”

从 Mux 为客户提供服务的角度来说,云原生堆栈对业务的影响是显著的。“我们有延时要求,内部追踪的一个度量指标就是到第一个字节的时间,也就是我们能够以多快的速度显示视频数据,”他说,“满足一个请求就会遇到很多复杂的问题,没有 gRPC 和 Kubernetes,我觉得我们不可能这么快速、有效地提供服务。”

Join the CNCF end user community and accelerate your cloud native technology adoption in close collaboration with peers, project maintainers and CNCF.