任何持续的集成和部署管道都应该是自动化的、易于管理和可发现的,这正是我们使用 AWS 获得的。我们获得了一定程度的简洁性和透明度,这是在以前的本地环境中所无法获得的。
Sam Keen 产品架构总监

借助 AWS,lululemon athletica 可以在数分钟而不是数天内构建起开发环境,实现环境自动化,并实现持续集成和部署。这家加拿大公司在全球 350 多个地方销售瑜伽服饰及其他服装。该公司在 AWS 云上运行其开发和测试环境以及即将推出的移动应用程序。

几年前,lululemon 决定提供更多的数字服务,并更快推出新的应用程序和功能。但是,由于其并置的 IT 环境,该公司快速开发新应用程序的能力有限。“我们没有能力像我们需要的那样快速迁移,”最近受聘为新产品设计和实施环境的产品架构总监 Sam Keen 说道。

例如,lululemon 开发人员通常需要花几天时间来构建开发环境以测试新功能。“成本太高,而且速度不够快,”Keen 说道,“即使是小规模的实验也需要花费很多时间。”

lululemon 还希望简化开发流程,以便能够专注于新的持续集成和交付。“对于持续集成和交付管道,我们需要简化管理并自动化尽可能多的开发流程,”Keen 说道。

lululemon 选择 Amazon Web Services (AWS) 作为其开发、测试和生产环境的平台。“AWS 是一家成熟的云提供商,我在之前工作过的公司中积累了丰富的 AWS 经验。其服务的广度是前所未有的,”Keen 说。“此外,大量且不断增加的 AWS 基本服务使我们能够将更多时间花在我们特定的产品代码库上,而不是花时间实施和维护自定义排队解决方案。”

lululemon 使用多种 AWS 服务来构建一个完全自动化的持续集成与交付系统。该公司使用 AWS CloudFormation 模板来定义其完整的开发环境。“无论是在开发还是生产环境中,我们部署的所有内容都是由 CloudFormation 驱动的,”Keen 说。该公司的基础架构使用不可变组件,这些组件完成部署后即无需额外配置。lululemon 部署通过 Amazon Simple Storage Service (Amazon S3) 分发的不可变构件。这些构件使用 AWS CodePipeline 部署到服务器中,AWS CodePipeline 是一种持续交付服务,可实现快速、可靠的应用程序更新。从此阶段开始,构件将部署到 AWS Elastic Beanstalk,这项服务可用于部署和扩展 Web 应用程序及服务。

lululemon 还利用 Amazon Cognito 服务为用户创建唯一标识,并使用内部用户池对其进行身份验证。

除了开发环境,该公司还计划使用 Amazon Elastic Compute Cloud (Amazon EC2) 实例在 AWS 云上运行面向客户的移动应用程序。该应用程序包含特定于 lululemon 商店所在社区的自定义内容。

lululemon 依赖于 AWS 服务来自动化和简化其开发和测试环境,因此可以缩短其开发时间。“我们可以使用 AWS CloudFormation 模板和 AWS CodePipeline 在几分钟内而不是两天时间构建一个新的生产账户,”Keen 说道。“这意味着我们可以启动成本极低、设置时间极短的小型项目。凭借这种敏捷性,我们可以试用并获得最佳解决方案,而不必勉强使用我们所拥有的资源。使用 AWS,我们可以更快速地推出新功能和应用程序。”

通过包含少量手动步骤的简化开发方法,lululemon 还增强了其环境的可管理性。“由于所有基础架构都是由 AWS CloudFormation 定义的,因此我们具有单一数据源。基础架构变更只需在一个地方进行,我们可以看到这种变更的潜在影响,”Keen 说道。“另外,由于 CloudFormation 模板在源代码控制中,因此我们获得了这一方面的变更控制。AWS CloudFormation 为我们的开发人员带来了巨大的价值。”

lululemon 还提高了其开发系统的透明度。“我们使用 AWS 实现了管道的极简单可视化,”Keen 说。“任何持续的集成和部署管道都应该是自动化的、易于管理和可发现的,这正是我们使用 AWS 获得的。我们获得了一定程度的简洁性和透明度,这是使用以前的本地环境所无法获得的。”

通过将支持其移动应用程序的服务放在 AWS 上,该公司正在构建数字化工具,使 lululemon 能够更好地融入当地社区。“因此,lululemon 员工可以更轻松地构建最符合消费者利益的动态内容。基于我们目前所看到的成功案例,我们计划在 AWS 上创建和运行其他新应用程序。迁移到 AWS 对我们的公司来说是一个不错的决定。”