AWS 的稳定性大家有目共睹。我们面临的难题是:‘我们能够扩展运行所有客户应用程序所需的计算资源数量吗?’以及,“我们能够扩展协调所有这些资源的机制吗?”使用 AWS,我们可以对这两个问题回答‘能’。
Matt DeBergalis 联合创始人兼产品副总裁

Meteor Development Group 是一款开源的跨平台 JavaScript 应用程序平台,开发人员可以使用它为 Web、Android 和 iOS 应用程序编写代码。Meteor 由总部位于旧金山的 Meteor Development Group 创建,使用分布式数据协议和发布-订阅模式自动将更改传送给客户,无需开发人员编写同步代码。Meteor 是 GitHub 上领先的 Web 应用程序框架,每天有数以千计的公司要依靠该平台构建现代化应用程序。

Meteor Development Group 最近推出了 Galaxy,这是一项托管云服务,用于为客户部署和管理 Meteor 应用程序。“因为我们希望 Meteor 成为可满足开发现代化应用程序的团队需求的完整平台,所以它在云中必须有一个用于管理连接客户端的运行时,这就是 Galaxy”,Meteor Development Group 的联合创始人兼产品副总裁 Matt DeBergalis 说。Galaxy 以容器为基础,容器即可部署的镜像,由各种应用程序加上运行这些应用程序所需的所有依赖关系、库和配置文件构成。随着 Meteor 应用程序数量的不断增长,公司需要一种方法来管理不断增加的 Galaxy 容器。“现在,公司的容器数量已达数十万个,我们希望能够轻松管理这些容器”,DeBergalis 说:“我们希望实现自动化容器编排,以便可以解决如何在出错时替换虚拟机,以及如何将这些虚拟机分布到不同可用区之类的问题。”

Meteor 还需要满足客户的生产需求。“我们的许多客户坚持以高度可用的配置运行其应用程序,所以主要基础设施停机并不会影响他们的客户”,DeBergalis 说。

该公司还需要能够扩展 Galaxy 以满足客户需求。“我们越来越受欢迎,每月都有成千上万个由我们的客户构建的应用程序”,DeBergalis 说:“因此,我们在构建 Galaxy 时有相应的扩展要求,以满足这些客户的需求。我们需要的是能和我们一起成长的云环境。”此外,Meteor 还需要为客户的开发团队寻求更高的响应能力。DeBergalis 说:“如果需要 10 分钟时间才能启动配备虚拟机的基础设施,那对我们的开发人员来说并不是多好的体验。”

在 Meteor 打算构建 Galaxy 时,他们主要希望以 Amazon Web Services (AWS) 云平台作为构建基础。“我们在流程早期便属意于 AWS”,DeBergalis 说:“在我们仔细研究了能够提供世界级开发人员体验的各项技术后,AWS 是自然而然的选择。”

Meteor 已经确定自己的目标是在 Docker 容器中运行客户的应用程序。下一步要确定的是,如何在 Amazon Elastic Compute Cloud (Amazon EC2) 虚拟机上编排这些容器。Meteor 对包括 Kubernetes、Mesos 和 Amazon EC2 Container Service (Amazon ECS) 在内的几项技术进行了评估。当时,Amazon ECS 还处于测试阶段,但是已迅速成熟到足以支持 Meteor 所需的功能,例如,跨多个可用区运行的能力。Amazon ECS 的快速强化能力给 Meteor 团队留下了深刻印象,在开始利用 Amazon ECS 对 Galaxy 进行原型设计时,他们取得了很大进步。

使用 Amazon ECS,Meteor 可以更轻松地构建 Galaxy。“实际上,Amazon ECS 就是我们可以在 AWS 中调用的一个 API,用于描述我们想要的容器数量以及希望运行容器的位置”,DeBergalis 说:“Amazon ECS 负责处理所有操作细节,从真正意义上简化了容器编排。”Galaxy 还利用了 Elastic Load Balancing 功能,可自动将传入流量从 Internet 路由到 Galaxy 环境。此外,Meteor 还使用了 AWS CloudFormation 在 AWS 中创建和管理 Galaxy 计算资源。“Galaxy 是一个带有很多移动部件的复杂系统。借助 CloudFormation,我们可以非常快速地配置所有这些部件”,DeBergalis 说。

如今,编排和管理 Galaxy 容器群集对于 Meteor 而言非常简单。“Galaxy 的独特之处并不在于容器管理的工作方式,而在于对平台上连接的客户端的管理”,DeBergalis 说:“这才是我们想要花时间研究的领域,并且我们可以做到,因为 Amazon ECS 最大限度地减少了我们需要担心的技术问题。”据 DeBergalis 称,Amazon ECS 还与其他 AWS 技术完美集成。“Amazon ECS 可以与 AWS 堆栈的其他部分集成,这为我们节省了大量时间,并省去了许多代码编写工作”,他说:“举个例子,如果我在 ESC 内注册了一项服务,那么该服务会自动在 Elastic Load Balancing 中进行注册。这就是在后台运行的无需我们进行操作的功能之一。”

通过简化容器管理,Meteor 能够快速地将 Galaxy 交到客户手中。“推出 Galaxy 后,我们在一个月内就开始生成客户了,也只有在 Amazon ECS 帮助我们运行可靠的容器编排服务的前提下,这种情况才有可能发生。这让我们在将客户工作负载上传到 Galaxy 时充满信心”,DeBergalis 说:“借助 ECS,我们可以从常规的开发和测试周期中划出大块时间来钻研基础设施的技术问题。”

AWS 还支持多个可用区,这对于 Galaxy 平台至关重要。“为了向用户提供高度可用的平台,我们还需要一项高度可用的容器编排服务”,DeBergalis 说:“我们需要能够在多个地区运行用户的应用程序,这样一来,即使服务中的某一部分离线,其他部分也不会受到影响。在这个方面,Amazon ECS 是独一无二的,因为它将可用性作为一项整体功能来提供,而不是要求我们编写复杂的软件来做到这一点。借助 ECS,我们拥有了一个简单的架构,与在 Galaxy 内管理那些技术详情相比,它的构建速度更快、测试更容易,维护也更简单。”

Meteor 还利用 AWS 解决了它在扩展性方面的挑战。“AWS 的稳定性大家有目共睹”,DeBergalis 说:“我们面临的难题是,‘我们能够扩展运行所有客户应用程序所需的计算资源数量吗?’以及,“我们能够扩展协调所有这些资源的机制吗?”使用 AWS,我们可以对这两个问题回答“能”。

此外,Meteor 自己的开发人员也可以更快地操作。“通过使用 AWS,我们开发 Galaxy 的工程团队可以获得灵活性,从而更快速地开展工作”,DeBergalis 说:“我们只需按几个按钮就可以配置新资源,而且我们拥有完整的基础设施,能够轻松地在整个系统上构建端到端的测试。现在,扩展性测试已经成为开发流程中的一个常规环节,执行起来非常简单,它不再是流程结束时的一场压轴戏,决定着整个流程的成败。”

使用 AWS 来支持 Galaxy,Meteor 可以更好地满足开发人员创建现代化应用程序的需求。“在开发人员使用 JavaScript 开发移动和 Web 应用程序所感受到的体验方面,我们处于领先地位”,DeBergalis 说:“此外,借助 AWS,在用于扩展和运行这些应用程序的容器和容器管理技术领域,我们也处于领先地位。这就是应用程序开发的未来。”

要了解有关 AWS 可以如何帮助您简化群集管理的更多信息,请访问我们的 Amazon EC2 Container Service 详情页面