我们的基础架构如何与客户一起扩展

已发表: 2022-06-03

我们非常重视通过我们的 Engagement OS 提供最佳的客户体验。 我们有真正的全球雄心,将我们的使命使互联网业务个性化,带给全球最大的企业客户。

这一雄心体现在我们设计和构建支持对讲平台的基础设施的方式上。 我们的建设是长期的——这意味着默认情况下确保可靠性,以及随着我们的发展适应大规模的能力。

对讲机一直在增长,而且只会继续增长——多年来,我们的许多长期客户都与我们一起发展。 随着这些现有客户的增长,我们欢迎越来越大的客户,我们一直专注于说“是”来扩大规模。

这是探索对讲如何扩展关键功能以支持企业客户需求的系列文章中的第三篇。

我们与客户一起成长

  • 您希望为数百万活跃用户提供服务。 对讲机能做到吗?
  • 您需要存储数百万条用户记录。 对讲机能做到吗?
  • 您的工作区中有成千上万的活动代理需要操作。 对讲机可以处理吗?

是的以上所有。

如今,我们的系统可以动态扩展以在峰值每秒处理约 50,000 个 Web 请求、每秒处理 26,000 个后台作业和每秒处理 11,000 个公共 API 请求,这表明我们有能力不断扩展以满足现代企业的需求。

我们希望与您的抱负相匹配。 这意味着能够以可靠和高性能的方式容纳巨大的工作负载,并随着我们的客户与我们一起成长而不断扩展它们。 我们希望与我们的客户真正合作,以确保我们能够长期、大规模地解决他们的问题。

在 Intercom,我们的目标是运行更少的软件

我们完全建立在一小部分核心技术之上。 这使我们能够开发由深度领域专家组成的团队,以支持和支持产品工程师构建下一代对讲机,并提供世界一流的可观察性工具、可扩展性、可靠性和默认安全构建模式。

我们的工具可实现高可用性

我们专门与 AWS 作为我们的云服务提供商合作,目前在三个不同的全球区域(美国、欧洲和澳大利亚)提供数据托管产品,每个区域都跨多个可用区构建以实现高可用性。

我们的队友应用程序是一个Ruby on Rails单体支持的Ember.js前端 Rails 应用程序是 Intercom 的核心,我们将其部署到专用的每个功能集群上的数千个 Web、API 和异步工作人员。

“每年的黑色星期五,随着我们的许多客户进入他们最繁忙的时期,我们的基础设施规模可以在没有人为干预的情况下匹配”

当我们每天经历客户流量的高峰和低谷时,这些集群会自动扩展以服务客户请求。 例如,每年的黑色星期五,随着我们的许多客户进入他们最忙碌的时期,我们的基础设施规模可以在没有人为干预的情况下进行匹配。

我们的可观察性工具使我们能够密切监控我们如何为流量提供服务

我们的可观察性工具确保我们掌握脉搏,了解我们为每个客户提供流量的效率和有效性。 我们还与 AWS 在新技术和新方法方面密切合作,以在未来证明我们的快速增长。

除了标准指标和日志记录之外,我们的 Rails 单体应用还自动配备了高质量、属性丰富的跟踪。 这使工程师无需编写任何额外代码即可观察生产。

我们的可观察性管道基于Honeycomb Refinery ,默认情况下动态采样有价值的请求以保留有趣的跟踪(例如,面向客户的错误)。 我们还能够配置自定义规则以实现全面采样控制。

“我们支持 100% 保留,以便在我们构建新功能或调试生产问题时为工程师提供他们需要的所有数据”

至关重要的是,对于最有价值的交易,我们支持 100% 保留,以便在我们构建新功能或调试生产问题时为工程师提供他们需要的所有数据。 此外,当我们用请求发起者的客户 ID 标记所有跟踪时,我们可以深入了解我们的任何客户如何体验对讲。

不同的数据存储允许跨各种用例进行优化

我们运行几种不同类型的数据存储来支持我们跨应用程序的各种数据读取和写入要求:

  • AWS Aurora MySQL :我们的真实数据存储源主要建立在 AWS Aurora MySQL 之上。 作为我们初始扩展的一部分,我们按功能对数据库进行了分片。 一旦单个数据库集群增长到 AWS Aurora 提供的最大实例,我们就启动了一项计划,为每个客户构建驻留在多个较小数据库集群集群上的数据库,我们现在可以水平和垂直扩展这些数据库。 这项工作于 2020 年初完成,该架构允许我们无限扩展我们最大的表。
  • Elasticache :在我们的数据库前面,我们有一个构建在 Elasticache 之上的memcached缓存层。
  • DynamoDB :我们谨慎地使用 DynamoDB来处理非常高的读写用例

搜索是对讲机不可缺少的一部分

搜索支持一系列核心对讲功能——收件箱视图 API 文章、用户列表、出站报告解析机器人和我们的内部日志系统。

搜索主要由许多按功能划分的Elasticsearch集群提供支持。 我们构建了许多工具来自动化 Elasticsearch 最费力的任务,包括安全补丁、升级和更换退化的硬件。 我们还构建了允许我们针对索引运行迁移(以类似于 MySQL 的方式)的工具。

“我们的全球基础设施旨在为成千上万的大大小小的公司提供服务”

除了提高我们工程师大规模迭代索引模式的能力外,它还允许我们将大型索引分解为更易于管理并提供更高性能和稳定性的较小索引。 它还为我们提供了进一步的维度,我们可以在其中扩展 Elasticsearch 集群。 就像我们的 MySQL 分片方法一样,这为我们提供了多年的扩展跑道。

对讲机的全球基础设施专为互联网规模而构建

我们的全球基础设施旨在为数十万家大大小小的公司提供服务,我们在管理基础设施运营方面所采用的严谨态度确保了一切顺利进行。

在制定路线图时,扩展是每个团队都考虑的关键输入。 我们的定期运营审查由我们后端团队的多个级别的专家做出贡献,我们在这些团队中评估基础设施指标并审查容量要求。

我们努力并聪明地保持这种状态,这就是我们的客户信任我们的原因——从最小的初创公司到世界上最大的企业。

发现企业对讲系列中的其他帖子