借助 AWS,我们将为全球用户提供更多冗余并提高弹性,从而为我们的未来发展打开全新世界的大门。 
Vijay Ramesh 数据工程师主管

Change.org 是全球最大的社交变革平台,在 196 个国家/地区有超过 1.3 亿名用户。作为一家经认证的 B 型公司(一种新型公司,利用企业力量谋求社会福利),这家公司的使命是帮助世界各地的人创造自己希望看到的变革。作为一个开放平台,每个人都可以发起活动,并在片刻之间动员成百上千个当地人或世界各地成千上万个热心人士,来创造从停止校园霸凌到结束印度的泼酸攻击等各种变革。Change.org 总部位于旧金山,投资者包括比尔 盖茨 (Bill Gates)、理查德 布兰森 (Richard Branson)、阿里安娜 赫芬顿(Arianna Huffington),以及领英、雅虎、Twitter 和 eBay 的创始人。

过去几年间,Change.org 在国际范围内迅速发展壮大,它需要更加频繁地推出新的网站功能。然而,若使用之前的托管云基础设施,该组织缺少实现上述目标所需的弹性。“特别是,我们的数据科学团队希望提高迭代速度,但是我们之前的环境存在一些问题,有时使得我们难以快速添加新资源。”Change.org 数据科学部门的首席数据工程师 Vijay Ramesh 说道,“我们还需要达到使用迥异的机器学习机器拓扑结构进行迭代所需的灵活程度。例如,我们想使用多核机器,这些机器还要使用包含并行进程的较小机器。”

此外,Change.org 非常依赖连续集成 (CI),这种开发实践要求每天将代码多次集成到存储库,以确保实现高质量的代码。但是,该组织使用的是会延迟新功能发布的自制 CI 系统。“每个 CI 构建需要花费 1 个小时才能完成,很浪费时间。”Ramesh 说道,“这导致快速测试和部署新功能愈加困难。”并且,该系统需要太多手动维护工作。“我们的几个工程师一天需要花费数小时来维护 CI 工作流,但这不是我们的核心能力。”Ramesh 说道,“我们希望将所有时间集中在开发新功能上。”

该组织还需要简化网站平台的扩展,以应对流量高峰。“举例来讲,当媒体提到我们之后,我们就会遇到流量激增的情况,然而实时提出服务器节点来支持这些激增对于我们来说并不容易。”Ramesh 说道,“这需要我们手动干预,并且往往需要超过 1 个小时的时间才能安排新资源投入进来以应对高峰情况。”

基于寻找更加灵活、可扩展性更高的网络平台的判断,Change.org 数据科学团队决定将部分机器学习资源移动到 Amazon Web Services (AWS)。“我们喜欢 AWS 的灵活性和可扩展性。”Ramesh 说道。数据科学团队开始在生产中使用 Amazon Elastic Compute Cloud (Amazon EC2) 实例来开展电子邮件定向和批处理管道工作。

接着,Change.org 设立了两个 Amazon Redshift 群集,每个群集总计 16 TB。两个群集均包含公司的所有关系和事件数据。第一个是生产商业智能 (BI) 群集,可将客户数据从 MySQL 数据库流式传输到 Redshift。第二个群集用于离线分析,研发团队会从 Amazon Simple Storage Service (Amazon S3) 收集实验和日志事件数据并将其上传到 Redshift。该群集通过 AWS Data Pipeline 服务保持最新状态。“我们的新功能研发和网站变革在很大程度上需要依赖实验来推动,因此,我们建立了一个系统,以便工程师可以开展任何所需研究,而无需担心影响生产。”Ramesh 说道。另外,该组织的业务分析师可以创建报告和执行控制面板,以分析 Redshift 中的事件流数据。该组织的许多电子邮件工具会查询 Redshift。

尽管 Change.org 仍将部分资源留在内部环境中,但开始越来越多地使用按需 AWS 资源,并且正在将完整的生产环境迁移到 AWS。

Change.org 还选择使用托管的 CI 解决方案 Solano CI。Solano CI 完全在 AWS 中运行,使用 Elastic Load Balancing 路由入站流量,使用 Amazon S3 进行数据存储,并使用 Amazon Relational Database Service (Amazon RDS) 运行数据库。Solano CI 是一个可扩展的系统,旨在减少开发人员的测试时间,同时分流 CI 系统的维护负载、优化 AWS 实例使用情况并大幅降低 TCO。“实施 Solano CI 之后,我们得以彻底关闭自制 CI 系统。”Ramesh 说道。

凭借充分利用 AWS 的按需弹性,Change.org 能够更快速地开发新功能。“得益于 AWS 的弹性,我们的数据科学团队能够非常迅速地进行迭代。”Ramesh 说道,“例如,我们在构建建议引擎时,计算需求会因使用的算法或涉及的数据量而存在很大的差异。不过在 AWS 的帮助下,我们只需根据相应项目的目标使用所需的资源,因而能够飞速完成任务。因此,我们不用征用服务器或提前计划。”

该组织还可以依赖其 Solano CI 自动化测试环境来减少测试时间并更快速地将新功能投入生产中。切换到 Solano CI 以后,通过 Solano CI 的自动并行化功能,该组织已将其平均构建时间从 1 小时缩短到了 15 分钟。“我们每天可以部署更多 CI 构建,也就是说,我们每天可以在网站上推进更多变革。”Ramesh 说道,“有了 Solano CI,我们得以更快速地为最终用户交付价值。”另外,Change.org 由于能够借助 Solano CI 运行更多测试,因此能够更快速地识别缺陷。他说:“由于能够更迅速地检测缺陷,我们可以确保实现更高质量的代码并最终生产出更优秀的功能。”

Change.org 还具备支持流量高峰所需的可扩展性。“借助 AWS,我们能够更轻松地应对网站中的流量激增情况。”Ramesh 说道,“在出现更多流量时,新的后台服务器会自动上线。随着流量平息,这些服务器会再次下线。它非常可靠迅速。此外,由于它不需要工程师手动干预,因此我们无需花费 1 小时的时间来安排新资源。它能瞬间发挥作用。”

另外,Solano CI 环境专为扩展而设计,因此 Change.org 能够针对测试构建要求的增加提供更好的支持。“有时,我们打算发布重要的功能,在临近截止期限时,我们将需要运行数量多于正常值的构建。”Ramesh 说道,“得益于 AWS 的可扩展性,Solano CI 可以进行扩展以满足这些需求。”

由于 Change.org 的 CI 系统现在基于云,因此开发人员无需在维护任何上花费时间。Solano CI 从智能化和自动化层面对测试进行了优化,因此 Change.org 开发人员无需管理 CI 系统、配置虚拟机或确保其 CI 节点正确运行。“我们的开发人员不用花时间担心 CI 系统的维护问题。”Ramesh 说道。“他们可以依赖 Solano CI 执行所有操作,因而能够专注于自己最擅长的方面:为网站构建优秀的工具,从而为全球各地的最终用户带来更多价值。”

Change.org 计划在彻底迁移到 AWS 环境之后大幅扩展对 AWS 的应用。“AWS 在世界各地有多个区域和可用区,这是我们之前采用的解决方案所不具备的,对此我们十分兴奋。”Ramesh 说道,“能构建一种网站架构来帮助应对全球流量将成为我们的巨大优势。在过去几年,我们在国际范围内取得了很大的发展,我们将借助 AWS 进一步加快前进的步伐。我们将为全球用户提供更多冗余并提高弹性,从而为我们的未来发展打开全新世界的大门。

solano-labs-logo

AWS Partner Network (APN) 的高级技术合作伙伴,具备 AWS DevOps Competency。Solano Labs 为连续集成 (CI) 和连续部署 (CD) 提供强大且可扩展的系统,使软件开发人员能够在降低成本的同时提高工程效率和质量。

要详细了解 Solano Labs 如何帮助您的公司构建和管理 AWS 环境,请参阅 AWS 合作伙伴目录中的 Solano Lab 的列表
 

要详细了解 AWS 如何帮助您管理网站,请访问我们的网站和网站托管详情页面