Movinary 位于德国柏林,目前提供了一个云托管在线平台,可让客户从照片中创建视频并在其中加上装饰文字。通过这些视频,客户能够讲述他们的婚礼、假期、生日等有关个人的、独一无二的故事。每个视频均可立即下载,因此客户能够在视频创建之后马上下订单。

创始人兼 CEO Maximilian Modl 说:“由于传统的视频工具极其复杂,因此 Movinary 的底层采用了最新的可用性准则。创造过程凭的完全是直觉。”

最初,Movinary 面临的业务挑战与许多在线服务类似。他们希望建立可扩展的业务模型,而且受众可能遍布全球。此模型要求能够轻松地为电子商务网站(复杂的扩展性 Magento 系统)建立服务器,而且 CPU 处理能力要高,以便进行视频渲染过程。

在采用 AWS 之前,Movinary 团队对现场选择方案和云托管进行了对比分析。“我们希望我们的服务尽可能高效、快速,这样才能与类似服务相竞争”,Modl 说道。“显而易见,我们需要云。”

此外,他们还寻求一项能够利用 Movinary 基于的常见 Web 技术(如 JavaScript Ajax 和 Flash)的解决方案。

Movinary 团队从一开始便与 Amazon Web Services (AWS) 紧密合作。他们需要:

  • 熟练掌握常见的 Web 技术
  • 充裕的 CPU 处理能力
  • 高可用性
  • 灵活地进行全球扩展

安全性、私密性和易于设置也是重要的考虑因素。Modl 曾说:“有了 AWS,我们能够提供一项让客户安全地存储其所有个人视频和图片的服务。AWS 还满足了我们轻松建立服务器的需求。与 Amazon Relational Database Service (Amazon RDS) 的连接、Amazon Elastic Load Balancing 的可配置性以及可扩展的机制,所有这些都完美符合了公司内部的 IT 座右铭‘立足点滴、快速扩展’要求。”

处理个性化的视频渲染更为复杂一些。渲染要求极大的 CPU 处理能力,而且必须尽可能地快。

对于 Movinary 而言,AWS 具备其他云解决方案无法比拟的显著优势,即使用常见的 Web 技术,如 PHP、MySQL、Adobe AIR 和 Apache Web 服务器。这些技术对他们的平台而言必不可少。AWS 还提供了 CPU 所需的处理能力。

“在扩展服务方面,Amazon Elastic Load Balancer 易于与预定义指标(如 CPU 利用率)配合使用”,Modl 说道。“即便负载均衡器发生故障,扩展仍可由非专业人员完成。这样,我们便可计划营销活动并预期较高的流量,而不影响 Web 开发团队。

“用于处理正常流量和高峰流量的 Amazon Elastic Compute Cloud (Amazon EC2) 预留实例效果真的非常非常棒”,Modl 继续说道。Movinary 一天的访问量平均约为 3 000 次。在高峰期间(例如营销启动期间),有多达 20 000 位用户同时在 Movinary 创建视频。

具有所需 CPU 处理能力的 Windows 实例能与他们的个性化视频渲染引擎很好地配合。“我们的开发人员可以通过 Secure Shell (SSH) 对服务器进行完全控制”,Modl 说。“现有基础设施和服务易于使用,因此仅需很少的时间即可设置预定义的映像。”

Movinary 团队使用 Git 将其代码部署到 Web 服务器。该团队曾创建 Linux 服务器的基本映像来作为 Apache Web 服务器运行。在实例的启动过程中,在 Git 存储库中进行的每项更改都会自动提取出来。如果所有内容均已同步,服务器则会接受 HTTP 请求,这样该服务器便可供 Elastic Load Balancer 使用。如果服务器正在运行,则会每五分钟自动轮询存储库一次,以接收代码的变更。

Movinary 服务使用许多 AWS 产品,如下列体系结构图中所示。

Movinary Architecture Diagram 1

图 1:当前的 Movinary Web 服务器体系结构

Movinary Architecture Diagram 2

图 2:规划的 Movinary Web 服务器体系结构

movinary-3-arch-diagram

图 3:Movinary 云渲染器体系结构

Movinary 团队目前使用三个 Amazon EC2 实例,分别用于团队的云渲染器、Web 服务器和数据库。云渲染器为每个渲染器请求都启动一个实例,如果队列中没有其他渲染请求,则关闭一个实例。Movinary Web 服务器可自动扩展(通过延迟来衡量),而且数据库随读取副本一起扩展,这很适合执行的读取请求远远多于写入请求的网上商城。目前,Movinary 在 Amazon Simple Storage Service (Amazon S3) 中存储了 67 GB 的图像、PDF 和视频,供用户视频、图像和视频模板使用。

以下列出了 Movinary 团队如何使用 AWS 服务的更多信息。

  • Amazon CloudWatch 用于扩展 Web 实例,并在无法使用服务的情况下通过电子邮件发送通知。
  • Amazon RDS 用于提供在线商店信息。
  • Movinary 云渲染器引擎(基于照片和模板创建个人视频的服务,在云中进行渲染)在 Windows 计算机上运行,而且渲染器本身以 Flash 编写。
  • Magento 既用于 Movinary 网站,也用作电子商务系统(购物应用程序),因此要求公司的基础设施(Amazon EC2 和 Amazon RDS)中运行 PHP 和 MySQL。
  • GWT 用于在视频的创建过程中给用户带来全方位的无缝体验。
  • Varnish Cache 用于缓存站点并为用户提供响应性的 Web 服务。
  • Apache Tomcat 服务器用于接受和监控发送至云渲染器的请求。
  • Adobe AIR 和 Avidemux 用于渲染后端的客户视频。

使用 AWS,Movinary 团队能够快速地进行生产。“我们在本地计算机上开始着手,然而令我们吃惊的是,将我们的服务转为采用 AWS 云技术竟然不费吹灰之力”,Modl 说道。“特别值得一提的是,预定义的亚马逊系统映像 (AMI) 和 Elastic Load Balancer 帮助我们在一个月之内从本地环境转入了生产环境。”

团队还利用 Amazon EC2 改善了性能。“我们的视频个性化后台需要具备强大的性能”,Modl 说,“发现 m1 中型实例与我们的 CPU 性能和 RAM 需求完全相符后,我们感到非常高兴。点击两下便能够提高实例的磁盘空间量,从而节省了大量时间。”

关于 Amazon RDS,Modl 说道:“AWS 不仅管理备份和更新,还能半自动地扩展基础设施。我们系统生成的读取请求远远多于写入请求,Amazon RDS 提供的扩展功能很好地支持了这一点。”

事实证明,在云上托管服务更具成本效益,因为它允许 Movinary 动态更改所分配的实例。该结构能够在可扩展的基础设施上实现高度可定制的解决方案。

Movinary 团队当前正在评估 Amazon RDS 和 Amazon ElastiCache,而且可能使用 Amazon Simple Queue Service (Amazon SQS) 处理其渲染队列。

对于考虑使用 AWS 的其他开发人员,Movinary 建议从基于 CPU 利用率的自动扩展开始。“在收集其他指标后,用户可以选择其他度量和扩展技术,从而改善扩展功能”,Modl 说道。团队只需稍作改动便可设置 Amazon EC2 实例。有多种预配置的映像可供使用。

此外,团队还发现,有多种预配置的映像可用于建立 Amazon EC2 实例,因此对他们而言只需重复进行少许工作。

据 Modl 表示,使用 AWS 的决策从一开始就非常正确。“AWS 所提供的功能无与伦比。”

有关 AWS 和 Web 应用程序的详细信息,请参阅 http://aws.amazon.com/web-mobile-social/