公司: iFood
行业: 电子商务
点击此处下载此案例研究的葡萄牙语版本
iFood 的在线食品订购和配送服务在巴西和哥伦比亚得到广泛使用。iFood 总部位于圣保罗,占据了巴西食品配送市场 80% 的份额。
对于 iFood 流行的食品订购和配送应用而言,成功是高性能的副产品:iFood 的机器学习 (ML) 模型必须能够快速处理数据,以降低成本、增加收入,并在实时交互中积极影响用户行为。
为了确保 ML 工程师的一致性并为用户创造最佳体验,iFood 在 AWS 上使用 Redis Cloud 作为其快速发展的 ML 特征存储的基础。Redis on Flash 最大限度地提高了数据处理吞吐量,同时降低了总体数据存储成本。
iFood 基于 Redis 的基础设施为 ML 运维提供了亚毫秒级性能,支持高效的微服务架构,优化了用户体验,实现了大规模可扩展性,并助力企业快速增长。
COVID-19 大流行为电子商务公司带来了独特的机会,尤其是那些准备好处理不断增长的订单量的在线配送服务。作为拉丁美洲最大的食品配送公司之一,iFood 的技术团队随着数百万新用户开始依赖其服务以及数千家新餐厅加入其不断壮大的平台而进入高速运转状态。仅在 2021 年的前三个月,就有超过 3 万家新餐厅、杂货店和便利店注册通过 iFood 的数字平台配送食品,其月订单量激增了数千万单。1
尽管业务量激增以及随之而来的收入增长,iFood 仍然坚持那些推动这家快速发展公司走向成功的价值观。“这不仅仅是关于下食品订单,”iFood 机器学习工程主管 Daniel Galinkin 总结道。“这是关于为我们的客户提供最佳体验。这是我们公司的特色之一,也是让人们不断回来的原因。”
如今,iFood 为大约 32 万家餐厅提供服务,并致力于增加 3 万家超市的客户基础。2 最近还增加了药店和酒类商店的配送服务。为了实现这些宏大的增长目标,Daniel Galinkin 和 iFood 数据与 AI 团队的其他成员利用人工智能 (AI) 和机器学习来更好地了解用户,例如跟踪他们上个月下了多少订单、他们偏爱哪些餐厅和商店、他们选择的支付方式以及许多其他变量。这些事实被维护为 特征——作为 iFood ML 模型输入的独特属性和变量。
为了确保最佳用户体验,iFood 必须能够在下订单时运行这些模型,以影响客户在一瞬间做出的决定。“单个特征可能包含多个业务规则,每个规则都在不断演变,”Galinkin 解释道。“所有这些逻辑和定义必须在应用程序之间保持一致共享,否则用户在应用的不同地方可能会受到不同的对待。如果你不将这些知识集中在一个特征存储中,团队的工作就会变得零散。”
iFood 有 100 多个 ML 模型在生产环境中运行。这些模型大多有助于创收,例如驱动其推荐引擎(帮助用户决定考虑哪些餐厅和订购什么食物)的模型。其他模型确定在每个导航节点向用户展示哪种类型的优惠券和折扣券。还有一些模型通过检测欺诈性交易(例如拒付,即用户下单、收到订单后,试图在其信用卡上获得退款)来帮助 iFood 降低成本。
“我们的业务能否成功,取决于我们能否快速提供 ML 特征,”Galinkin 说。“我们的 ML 模型在单个用户会话期间提供多个推荐。我们需要一个高性能数据库来处理这些读写操作。Redis Cloud 很好地解决了这个问题。”
一个特征存储是一种数据库管理系统,经过优化,用于在键值数据库中存储和提供特征数据。特征存储允许工程师在数据发现、训练、生产和数据科学生命周期的其他阶段重用 ML 特征。
为了确保开发人员之间的一致性并为用户创造最佳体验,iFood 在 AWS 上使用 Redis Cloud 作为其快速发展的特征存储的基础。“拥有特征存储的一个主要方面是共享知识,”Galinkin 说。“Redis Cloud 帮助我们的团队协作。它鼓励重用,这样我们就不必多次‘重复造轮子’。
成功的机器学习计划取决于在正确的时间将正确的数据提供给正确的模型。Redis Cloud 使特征数据可供生产环境中的数十个模型使用,并包含注册表、数据管道和监控工具等基本功能,以简化特征工程活动。这使得 iFood 的数据与 AI 团队能够在生产环境中大规模地搜索、重用和提供特征。“特征存储允许你一次性实现知识,并多次共享计算结果,”Galinkin 补充道。
Galinkin 和他的团队受到了 DoorDash 同行 ML 工程师的积极影响。DoorDash 是另一家流行的食品配送服务,也使用 Redis 构建其特征存储。他们特别喜欢 Redis 环境开放的、基于标准的架构,该架构与 Databricks、Amazon SageMaker、Terraform、Apache Airflow、Python 以及其他有助于自动化工作的关键软件工具良好协作。
回溯到 2020 年,随着 Covid 大流行期间业务的快速增长,iFood 的 ML 平台团队开始从零构建一个特征存储。当时,没有现成的商业或开源解决方案适合他们。他们最初在 Amazon ElastiCache 上运行特征存储,但随着时间的推移,将所有特征数据放入 AWS 内存变得过于昂贵。“ElastiCache 相对稳定,但真的很贵,”Galinkin 承认。“当我们听说 Redis on Flash 的产品时,我们决定仔细研究一下。”
Redis 与 iFood 密切合作,实施了Redis on Flash,并将这项完全托管的服务集成到 iFood 的微服务架构中。“我们不得不迁移大量数据,但这次迁移很成功,”Galinkin 继续说道。“我们从未如此之快地完成一笔交易并进行迁移。”
如今,每当用户发起一个动作,例如查询餐厅或下订单,都会触发多个微服务。Galinkin 表示,所有这些微服务的总延迟不能超过 200 毫秒。“每一毫秒都很重要,”他强调道,“所以我们做了一些基准测试。Amazon DynamoDB 的每次读取操作延迟约为 10 毫秒。Redis Cloud 的每次读取操作延迟不到一毫秒。这差异巨大。这是促使我们选择 Redis Cloud 的主要驱动因素之一。”
这种卓越性能的关键在于 Redis on Flash 协调 DRAM 和闪存存储层之间数据的方式。频繁访问的“热”数据驻留在快速的 DRAM 层,以及键和 Redis 字典。不常访问的“冷”数据保留在本地闪存存储层。“Redis on Flash 对用户来说是无缝的,”Galinkin 报告称。“我们只需发出请求,Redis 就会提供数据。这对客户端是透明的,而且速度非常非常快——具备亚毫秒级性能。而且它比我们之前的解决方案便宜很多。”
iFood 还受到 Redis Cloud 卓越稳定性和可靠性的影响,它采用无共享集群架构,自动化了进程级别、单个节点以及跨基础设施可用区域的故障转移操作。iFood 还使用Redis Cloud 作为缓存层来存储查询结果,以便可以立即提供重复的数据库请求。
“容错性对我们的特征存储应用非常重要,Redis Cloud 作为我们的主数据库也表现出色,”Galinkin 总结道。“我们团队规模不大,所以不想被基础设施管理工作拖累。Redis Cloud 在这方面帮了我们大忙。它为我们节省了大量基础设施成本。”
1 “巴西食品科技巨头 iFood 在疫情期间每月配送 6000 万份订单”,Latin American Business Stories (LABS),2021 年 4 月 12 日。
2 “巴西配送应用 IFood 专注于增长”,U.S. News and World Report,2022 年 9 月 1 日。