2015 年 11 月,我们将 Docker 容器架构移动到了 Amazon ECS,而在 12 月,我们有史以来第一次能够庆祝新年,因为我们的系统可以处理大量请求,并且没有发生任何崩溃或中断,我们对这项成就感到极为自豪。
Sebastian Herzberg 系统工程师

mytaxi 基于 AWS 设计了一款采用速度快且可轻松扩展的 Docker 容器的微服务架构,以应对新年除夕等特别日子的需求高峰。该公司运行着欧洲领先的出租车应用程序,此应用程序在 40 个城市中将 1000 万用户与 45000 辆出租车联系起来。整个基础设施都构建在 AWS 之上,其中的 Amazon EC2 和 Amazon ECS 等服务可为 mytaxi 的 Docker 容器提供支持。

mytaxi 是欧洲领先的出租车预订应用程序,并且在 2009 年推出时是世界上首款此类应用程序。这款应用程序将 1000 万用户与 45000 辆出租车联系起来,让他们能在六个国家/地区的 40 多个城市中在线或通过 mytaxi 移动应用程序预订和付款。此外,乘客还可以为司机评分,以便帮助其他用户找到最佳出租车和司机。这款应用程序最初由初创公司 Intelligent Apps 推出,但自 2014 年起,完全归跨国汽车集团 Daimler 所有。

对于 mytaxi 来说,可靠性是重中之重,因为通常仅是一个糟糕体验就足以让客户转而选择竞争对手。“我们需要提供无中断的全天候服务,”系统工程师 Sebastian Herzberg 解释道,“如果客户深夜在外,他们需要靠这款应用程序将他们安全送回家中。我们无法承受它发生任何停机。”要达到这种程度的服务连续性,公司需要可以在出现大量需求时能实现大规模扩展的弹性基础设施。例如,在新年除夕,mytaxi 的基础设施需要处理的数据流量比平常的夜晚高出 350 个百分点,这才是真正经受考验。“异常情况为我们带来了异常激烈的挑战。对我们的声誉而言,扩展能力和应对需求高峰的能力至关重要,”Sebastian Herzberg 说道,

“我们的应用程序不仅便于客户使用,还便于开发人员维护和改进,我们希望成为行业的创新开拓者。成本也不容忽视,因为性能和性价比都需要恰到好处。另外,我们需要使用欧洲的数据中心,以维持低延迟和母公司 Daimler 严格的数据隐私标准。”

鉴于自身基于增长的扩展模式,mytaxi 最初就决定采用 Amazon Web Services (AWS)。据 Herzberg 说:“我们只需要支付所需资源的费用,并且不需要在前期投资几十万美元,因此,AWS 当然是我们的首选。”借助新兴的技术,mytaxi 的基础设施得到了进一步的发展。最新的发展是迁移到 Docker 容器上的微服务架构。

mytaxi 在欧洲 (爱尔兰) 地区运行多个可用区 (AZ) 并使用 Amazon Elastic Compute Cloud (Amazon EC2) 竞价型实例和 Amazon EC2 Container Service (Amazon ECS) 来支持其 Docker 容器。“我们现在是 Daimler 的子公司,因此,我们必须遵守异常严格的欧洲数据隐私标准,”Herzberg 说道,“换句话说,我们的工作地点设置在欧洲爱尔兰非常完美。我们运行了约 40 个 Amazon EC2 实例,这些实例均属于不同的 Amazon ECS 群集。我们的主基础设施跨约 50 个微服务分布,其中,我们针对每个服务使用最多 10 个 Docker 容器。”通过使用 Elastic Load Balancing,mytaxi 可以确保负载在服务器间的分配,而 Amazon CloudWatch 可帮助团队监控负载的分配情况。

公司将 Amazon Simple Storage Service (Amazon S3) 用作存储库,且数据库运行在 Amazon Relational Database Service (Amazon RDS) 上,这让复制变得轻而易举。所有服务均以消息代理的身份访问 Amazon Simple Queue Service (Amazon SQS) 和 Amazon Simple Notification Service (Amazon SNS)。为了在应用程序中向乘客提供出租车当前的准确位置,mytaxi 现在还使用了 Amazon 的 IoT 服务

出于安全原因,mytaxi 使用虚拟专用网络连接其 AWS 资源,这些资源属于 Amazon Virtual Private Cloud (Amazon VPC)。公司还使用了 AWS Support Business 计划,以快速解决特定的技术问题或针对新服务给出建议。

得益于到 Docker 架构的迁移以及 AWS Cloud 的基础设施发展,mytaxi 的四人开发团队能够确保应用程序用户能够始终享受可靠的服务。“客户的满意是我们的最终目标,”Herzberg 指出,“我们的用户希望得到持续的服务,否则,他们就会另辟蹊径。借助 AWS,我们实现了不可思议的服务可用性。由于我们拥有多个可用区,因此我们能够将可用性和服务维持在一个较高水平,并最终实现卓越的客户体验,我们的团队成员也能够获得一夜好眠,因为他们无需在半夜被叫醒来处理系统问题。”

mytaxi 已经将其整个实时环境迁移至竞价型实例,并因此节省了大量成本。“据估计,自从转而使用 Amazon EC2 竞价型实例以来,我们的成本降低了约 40%”,Herzberg 说道。通过迁移到 Amazon ECS,我们得以进一步改进架构。“我们能够将各个服务隔离开来,以免它们互相影响,同时消耗更少的资源。这是我们通过 AWS 执行的最关键的一步,”Herzberg 说道,“另外,它们可轻松扩展:我们只要按需上传更多容器即可。”

mytaxi 应用程序现在还可以预测每日和每周峰值。此外,它还具备所需的弹性,可以满足特别活动期间的需求。Herzberg 描述新年除夕这一典型时间时说:“快到午夜时,很多人都需要搭乘出租车前往派对现场,并在午夜后乘车返回家中。在过去几年中,我们无法满足这种情况下的需求 (客流量是平时的 3.5 倍)。2015 年 11 月,我们将 Docker 容器架构移动到了 Amazon ECS,而在 12 月,我们有史以来第一次能够庆祝新年,因为我们的系统可以处理大量请求,并且没有发生任何崩溃或中断,我们对这项成就感到极为自豪。我们度过了一年中最重要的一晚,而未出现任何停机。”

另一项优势是帮助 mytaxi 开发人员节省了时间,同时提高了部署效率,部署速度达到使用 AWS 之前的三倍。“借助新架构,我们可以在 10 分钟内完成服务部署。之前,我们则需要至少 30 分钟,”Herzberg 说道,“借助基于 AWS 构建的微服务架构,我们能够比以往更快地向用户提供新功能。”

了解有关 Amazon EC2 竞价型实例的成本优势的更多信息。