Attentive 是一个人工智能驱动的 SMS 和电子邮件营销平台,帮助品牌通过及时、个性化的消息与客户互动。在这个价值主张的背后是一个复杂的定位系统,确保发送的每条消息都与客户的情况和需求相关。
Attentive 定位团队的首席工程师 Larry Finn 说:“我们所做的一切都是为了在正确的时间向正确的客户发送正确的消息。” “我们从品牌那里获取大量关于其客户的数据,以便他们能够触达真正关心消息的人。”
然而,多年来,Attentive 的数据基础设施变得越来越复杂,分散在 Larry 所说的“九个或十个不同的数据库”中。为了继续发展,公司需要简化运营、提高可扩展性并处理更大的数据负载。解决方案很明确:整合他们的数据架构并迁移到单个数据库。
在 2024 年 9 月在纽约举行的 ClickHouse 聚会上,Larry 讲述了 Attentive 如何从分散的、多数据库的设置过渡到由 ClickHouse Cloud 驱动的精简、高性能解决方案的故事,其中还穿插了一些猫咪图片。????
理解问题
Larry 说,改进数据架构的第一步是理解他们需要解决的问题。“在进行这样的迁移之前,您应该弄清楚您为什么要这样做,”他说。“如果您实际上不了解您要解决的问题,您可能就无法正确地解决它。”
他强调了理解您的数据的重要性,包括数据的大小和形状,并拥有良好的可观测性系统来衡量成功。在 Attentive 的案例中,公司的高速增长以及机器学习模型的使用意味着他们的数据“增长速度比以前快得多”。他们需要一个“更智能、更快、更简单”的系统,该系统能够应对诸如可变数据和幂等性等特定挑战,这对于实时跟踪动态客户属性(如位置和行为)至关重要。
Larry 说:“我们希望简化我们的数据架构,使其更易于构建产品,使其更快——所有美好的事物。” “我们知道,迁移到一个数据库将简化事情,并使我们的系统更具性能和可扩展性,而不会耗尽资金。”
选择正确的技术
由于有如此多的选项可用,选择数据库并非易事。“有很多事情需要考虑,”Larry 说。“有些数据库在很多方面都很出色,比如 ClickHouse,而另一些则不然。”
他建议研究解决方案,并通过学习行业趋势和技术讲座快速成为“专家”。他还建议不要让情绪驱动决策,并警告不要在研究阶段停留太久。重要的是要考虑贵公司的需求、预算和反对者,并将真正的约束与人为的约束区分开来。
在探索了 ClickHouse 的功能和性能后,他印象深刻。安装“超级简单”,他的第一个查询“快得令人困惑”。当他回忆起他对 ClickHouse 速度的困惑时,他笑了:“我一直在想,‘它是在缓存什么吗?我遗漏了什么吗?我的笔记本电脑打了鸡血吗?’”
成本是另一个因素。“我们不再处于 ZIRP 时代了,”Larry 说。“我们不能只是印钞票。” ClickHouse 的效率和较低的资源消耗,加上其速度、可扩展性和对幂等数据的支持,使其成为 Attentive 用例的理想选择。它处理大型结果集以用于定向广告系列的能力也至关重要。
Larry 补充说,ClickHouse 的 ReplacingMergeTree 引擎特别有用,它允许 Attentive 多次重放数据,即使是乱序的,也能获得一致的结果。“我们可以以任何顺序一遍又一遍地重放数据,并且每次我们都会得到正确的结果。”
评估和实施 ClickHouse
在承诺使用 ClickHouse 之前,Larry 和团队进行了测试,以确保数据库能够处理 Attentive 的实际需求。他们采用了双管齐下的方法,重放生产流量以评估系统在负载下处理数据插入的能力,并使用模拟数据集来评估查询性能、检索和更新。
Larry 说:“使用代表您实际工作负载的数据进行测试非常重要。” “您会听到人们说,‘这个系统非常快,’但当您深入研究时,他们使用了最简单的查询。这并不能告诉您系统实际上会扩展或足够快以满足您的用例。我们需要在我们自己的数据和查询上看到性能。”
一旦他们确认 ClickHouse 可以处理他们的特定工作负载,他们就开始构建基础设施。他们选择了 ClickHouse Cloud,这个决定为 Larry 和他的团队省去了管理自己的基础设施的麻烦——这对于一家主要关注扩展其产品的成长型公司来说是一个很大的帮助。
Larry 说:“您可能喜欢运行数据库,但一旦您自己管理它,您就会成为人们在凌晨 3 点遇到糟糕的事情时打电话求助的专家。” 相比之下,云服务设置起来既快速又容易。“您注册、单击几个按钮,就可以启动并运行您的数据库,并准备好端点。”
模式设计和数据摄取
随着新基础设施的就位,Attentive 将注意力转向模式设计——Larry 称之为“对于从 ClickHouse 获得最佳性能至关重要”。
Larry 解释说:“您从 ClickHouse 获得的惊人性能通常基于排序键。” 正确地对数据进行排序使他们能够优化查询,但这并非没有挑战。例如,团队最初低估了 DateTime64 精度对于其用例的重要性。“我们认为我们不需要微秒级的时间戳精度,但我们确实需要,”Larry 说。
在微调了他们的模式之后,Attentive 使用 ClickHouse 的 物化视图 来优化不同用例的查询性能。这使他们能够有效地处理客户想要细分客户的各种方式,减少了重复计算复杂查询的需求。
对于数据摄取,Attentive 开发了自定义连接器,并依靠 批量插入 来快速处理大型数据流。Larry 再次强调了 ReplacingMergeTree 引擎对于确保数据准确性的价值。“我们不必担心,因为它是幂等的。我们的时间戳始终是正确的,因此每次重放时我们都会得到正确的数据。”
零停机迁移
迁移通常是任何重大系统改造中最困难的部分之一,Attentive 的数据库迁移也不例外。Larry 和团队没有一次性将所有内容切换到 ClickHouse,而是遵循了 “绞杀榕”模式——这种策略允许他们逐步迁移服务,而不会中断运营。
Larry 解释说:“我们不想一次性切换所有内容。” “我们构建了一个与现有系统并行的系统,使我们能够并行运行两者并比较和对比性能。”
影子测试确保了旧系统和新的基于 ClickHouse 的系统之间的准确性和一致性。团队在两个系统上重放查询以比较输出和延迟,逐步建立对新架构的信心。
当然,并非一切都进展顺利。迁移大型数据集带来了独特的挑战,尤其是对于旧系统和“没有人记得的疯狂优化和逻辑”。但是,通过迭代和“一口一口地吃掉大象”,Larry 说,Attentive 在对服务造成最小中断的情况下完成了迁移。
更快、更简单且准备好扩展
迁移到 ClickHouse 已经为 Attentive 带来了改进。新系统比以前的设置更快、更具可扩展性且更易于管理。查询完成速度更快,ClickHouse 的效率和数据压缩降低了成本。
通过迁移到 ClickHouse Cloud,Larry 和团队现在可以专注于构建和优化功能,而不是维护基础设施。数据库的性能和高级功能意味着他们可以继续扩展和扩展 Attentive 的平台,从而支持更复杂的定位和细分策略。
在回顾迁移时,Larry 为正在进行类似旅程的工程师提供了建议:“了解您的数据,不要仓促做出技术选择,并准备好迭代。” 对于 Attentive 而言,这种方法在改造其数据架构方面发挥了至关重要的作用——借助 ClickHouse,他们已为下一个增长阶段做好准备。
要了解有关 ClickHouse 以及它如何简化贵公司的数据架构的更多信息,免费试用 ClickHouse Cloud 30 天。