MUVI 如何使用 S3+CloudFront 以零停机时间交付全球 OTT 平台 2022 年 12 月 01 日

已发表: 2022-12-01

OTT 现在无处不在。 无论是您的手机还是智能电视,OTT 已成为下一代的首选娱乐方式。 随着 OTT 平台的日益普及,OTT 业务也看到 OTT 流量急剧上升! 预计未来几年这种流量还会进一步增加。

但是,如果您没有为突然的流量高峰做好准备怎么办? 如果您获得的流量远远超过您的预期怎么办? 如果您的技术准备不足,此类意外访问者可能会给您的平台带来严重麻烦。 突然增加的流量可能会导致意外停机,因为您的服务器将难以为您的观众提供服务。 这就是在 S3+Cloudfront 上托管您的应用程序和网站可以通过处理突然的可扩展性需求而受益的地方。

在这篇博客中,我们将详细讨论如何做到这一点。 那么,让我们开始吧!

在 S3+ CloudFront 上托管 React/Angular/NodeJS 应用程序的好处

Web 2.0 严重依赖云计算和云存储基础设施。 云存储为他们提供了可扩展性,可以毫不费力地存储更多内容。 随着时间的推移,这些平台也意识到了将流媒体服务迁移到云端的必要性。

这就是为什么他们现在已经转向可以轻松托管在 S3+CloudFront 上的 React/Angular/Node JS 架构。 这个过程有很多好处。

通过在 S3+CloudFront 上托管您的 React/Angular/Node JS 应用程序,您实际上从系统中消除了对 Web 服务的使用,例如 apache、Nginx 或 java tomcat。 相反,您的应用程序或网站将从 S3 存储桶运行。

通过这样做,您的企业将获得以下主要好处:

1. 服务器级别没有应用程序中断

由于在此过程中不再使用服务器,取而代之的是基于 S3+CloudFront 的架构,因此不会再有服务器端中断的可能性。 即使您的平台遇到意外的流量高峰,它仍然不会遇到任何停机,因为内容会直接从 S3 存储桶流式传输给您的观众。

2.一次会处理N个请求

当您的平台托管在 S3+CloudFront 上时,它将能够处理无限数量的查看请求,因为它不再受特定服务器容量的限制。 因此,您的平台将变得超级可扩展。

3. 全球表现

使用S3+CloudFront架构,您可以建立一个全球同步运行的平台。 由于 S3+CloudFront 架构将与 AWS CDN 网络集成,因此查看请求将由 CloudFront 从最近的 POP 位置完成。 因此,内容将交付得更快,从而减少延迟和加载时间。

如何在 S3+CloudFront 上托管您的平台:技术细节

要在 S3+CloudFront 上托管您的平台,您需要先开发一个基于 React JS、Node JS 或 Angular JS 的平台架构。 这样的平台可以轻松地托管在 S3+CloudFront 上,没有任何问题。

准备好代码后,您需要按照下面给出的步骤完成该过程。

  • 首先,您需要在您的 AWS 账户中创建一个 S3 存储桶。 该存储桶将用于存储应用程序。 在这里,请注意您必须创建一个 AWS 静态托管应用程序来选择 S3 存储桶。
  • 接下来,您需要使用上面创建的 S3 存储桶的名称创建一个 CloudFront 分配 ID。
  • 创建 CloudFront 分配 ID 后,您需要在 CloudFront 分配 ID 配置中启用 Origin shield。
  • 接下来,您必须配置 CloudFront 以满足您的应用程序要求。 这可以通过根据您的应用程序类型、它的功能以及缓存数据在 POP 位置的存储时间配置 CloudFront 来完成。
  • 完成配置后,您将必须添加 CloudFront 分发的 CNAME 并相应地安装 SSL。
  • 接下来,使用您的 CloudFront 分配 ID 在 route53 中配置域/子域。 域更改传播后,您的应用程序将开始使用您的域名。

您现在已准备好直接从 S3 存储桶流式传输您的内容!

整个系统工作流程看起来有点像下面给出的流程图:

流程图 - MUVI 如何使用 S3+CloudFront 以零停机时间交付全球 OTT 平台

部署基于 S3+CloudFront 的托管的示例代码

脚本文件名称:deploy.sh

================================================ ========

BUCKET_NAME=$1

DISTRIBUTION_ID=$2

echo “- 安装 -”

# 安装依赖

纱线-生产

回声“-构建-”

# 建造

纱线构建

回声“-部署-”

# 与我们的 S3 存储桶同步构建

aws s3 同步构建 s3://$BUCKET_NAME

# 使来自 cloudFront 的缓存无效

aws cloudfront create-invalidation –distribution-id $DISTRIBUTION_ID –paths “/*” –no-cli-pager

==============================================

S3 存储桶名称:

CloudFront 分配 ID:

要执行的命令

# sh deploy.sh “YOUR_BUCKET_NAME” “YOUR_DISTRIBUTION_ID”

该方法的局限性

尽管这种方法可以在直接通过 S3 存储桶托管静态页面方面创造奇迹,但它有一个局限性。 在使用 S3+CloudFront 的静态托管中,.htaccess 将不起作用。 这是因为 .htaccess 仅在运行 Web 服务器的地方有效。 但是在这个环境中,我们没有使用任何网络服务器。 因此,.htaccess 将不起作用。

但您无需担心,它完全不会影响您平台的正常运行!

总结一下

在 S3+CloudFront 上托管您的 React/Node/Angular JS 平台可减少停机时间并通过消除托管服务器设置的限制来提高可扩展性。 因此,您无需再担心意外的流量激增。

MUVI 使用 S3+CloudFront 成功实现了静态网站托管。 我们的内部通信网站 intranet.muvi.com 已成功托管并且运行良好。 我们期待在未来使用相同的技术为我们的客户服务!

在与大家道别之前,我要感谢我们的工程团队,尤其是Ranjan KumarGayadhar Khilar对我撰写本文的支持。

启动您的 OTT 平台