公司:iFood
行业:电子商务
Clique aqui para baixar a versão em Português desse caso de uso
iFood 的在线食品订购和配送服务在巴西和哥伦比亚广泛使用。iFood 总部位于圣保罗,在巴西食品配送市场占有 80% 的份额。
对于 iFood 受欢迎的食品订购和配送应用程序来说,成功是性能的副产品:iFood 的机器学习 (ML) 模型必须能够快速处理数据,以降低成本、提高收入,并在实时交互中积极影响用户行为。
为了确保 ML 工程师的一致性并为用户创造最佳体验,iFood 在其快速发展的 ML 特征存储的基础上使用了 AWS 上的 Redis 云。Redis on Flash 最大限度地提高了数据处理吞吐量,同时降低了整体数据存储成本。
iFood 基于 Redis 的基础设施为 ML 操作提供亚毫秒级性能,为高度高效的微服务架构提供支持,优化用户体验,实现大规模扩展,并推动企业快速增长。
COVID-19 大流行为电子商务公司带来了独特的机会,特别是为应对不断增长的订单量做好准备的在线配送服务。在拉丁美洲最大的食品配送公司之一 iFood,技术团队进入高档状态,因为数百万新用户开始依赖其服务,数千家新餐厅加入其不断扩大的平台。仅在 2021 年前三个月,超过 30,000 家新餐厅、杂货店和便利店报名通过 iFood 的数字平台配送食品,其月度订单激增了数千万次配送。1
尽管业务量激增,以及随之而来的收入增长,但 iFood 坚持推动这家快速增长的公司取得成功的价值观。“这不仅仅是下达食品订单,”iFood 机器学习工程主管丹尼尔·加林金总结道。“而是为我们的客户提供最佳体验。这是我们公司与众不同之处,也是人们不断回访的原因。”
如今,iFood 为大约 320,000 家餐厅提供服务,并旨在增加其 30,000 家超市的规模。2 它还最近增加了药店和酒类商店的配送服务。为了实现这些雄心勃勃的增长目标,丹尼尔·加林金和 iFood 数据与 AI 团队的其他成员利用人工智能 (AI) 和机器学习来更好地了解用户,例如跟踪他们在过去一个月内下了多少订单,他们最喜欢的餐厅和商店,他们选择的支付方式,以及许多其他变量。这些信息作为特征保存,这些特征是独特的属性和变量,充当 iFood ML 模型的输入。
为了确保最佳的用户体验,iFood 必须能够在客户下订单时运行这些模型,以影响客户在毫秒内做出的决定。“一个单独的特征可能包含多个业务规则,每个规则都在不断发展,”加林金解释道。“所有这些逻辑和所有这些定义都必须在应用程序之间一致共享,否则用户在应用程序的不同位置可能受到不同的对待。如果你不在特征存储中集中这些知识,团队工作就会变得支离破碎。”
iFood 有超过 100 个 ML 模型投入生产。大多数这些模型有助于带来收入,例如为其推荐引擎提供支持的模型(帮助用户决定要考虑哪些餐厅以及要订购什么食物)。其他模型确定在每个导航节点向用户展示哪些类型的代金券和优惠券。其他模型则帮助 iFood 通过检测欺诈性交易(例如退款)来降低成本,在欺诈性交易中,用户下订单、收到订单,然后尝试在信用卡上获得退款。
“我们的业务成功与否取决于我们能否快速交付 ML 特征,”加林金说。“我们的 ML 模型在单个用户会话期间提供多个推荐。我们需要一个高性能数据库来处理这些读写操作。Redis 云很好地解决了这个问题。”
一个特征存储是一个数据库管理系统,它经过优化,可以存储和服务键值数据库中的特征数据。特征存储使工程师能够在数据发现、训练、生产和数据科学生命周期的其他阶段中重复使用 ML 特征。
为了确保开发人员之间的一致性并为用户创造最佳体验,iFood 使用 AWS 上的 Redis 云作为其快速发展的特征存储的基础。“拥有特征存储的主要方面之一是共享知识,”加林金说。“Redis 云帮助我们的团队协作。它鼓励可重用性,因此我们不必多次‘重新发明轮子’。”
成功的机器学习计划依赖于在正确的时间向正确的模型提供正确的数据。Redis 云 使特征数据可供生产中的数十个模型使用,并且它包括必要的功能,例如注册表、数据管道和监控工具,以简化特征工程活动。这使 iFood 的数据与 AI 团队能够以大规模方式搜索、重复使用和服务生产中的特征。“特征存储使您能够一次实现知识,并多次共享计算结果,”加林金补充道。
加林金和他的团队受到 DoorDash 的其他 ML 工程师的积极影响,DoorDash 也是另一家流行的食品配送服务,它使用 Redis 作为其特征存储。他们尤其喜欢 Redis 环境的开放、基于标准的架构,该架构与 Databricks、Amazon SageMaker、Terraform、Apache Airflow、Python 和其他帮助自动执行其工作的关键软件工具兼容。
早在 2020 年,随着 Covid 大流行期间业务的增长,iFood 的 ML 平台团队开始从头开始构建特征存储。当时,没有任何适合他们的打包解决方案,无论是商业的还是开源的。他们最初在其特征存储上运行 Amazon ElastiCache,但随着时间的推移,将所有特征数据放入 AWS 内存变得过于昂贵。“ElastiCache 相对稳定,但确实很昂贵,”加林金承认。“当我们听说 Redis on Flash 产品时,我们决定仔细看看。”
Redis 与 iFood 密切合作,实施Redis on Flash 并将完全托管的服务集成到 iFood 的微服务架构中。“我们必须迁移大量数据,但迁移很成功,”加林金继续说道。“我们从未以如此快的速度完成交易和迁移。”
如今,每当用户启动操作(例如查询餐厅或下订单)时,它都会触发多个微服务。根据加林金的说法,所有这些微服务的组合延迟不能超过 200 毫秒。“每毫秒都很重要,”他强调说,“因此我们进行了一些基准测试。Amazon DynamoDB 每一次读取操作大约需要 10 毫秒。Redis 云每次读取操作不到 1 毫秒。这确实有区别。这是导致我们选择 Redis 云的主要驱动力之一。”
这种卓越性能的关键在于 Redis on Flash在 DRAM 和 Flash 存储层之间协调数据的方式。频繁访问的“热”数据与键和 Redis 字典一起驻留在快速的 DRAM 层中。较少访问的“冷”数据保留在本地 Flash 存储层中。“Redis on Flash 使用户能够无缝地使用,”加林金报告说。“我们只需发出请求,Redis 就会提供数据。这对客户端来说是透明的,而且非常快,性能达到亚毫秒级。此外,它比我们以前的解决方案便宜很多。”
iFood 还受到 Redis 云的卓越稳定性和可靠性的影响,Redis 云利用无共享集群架构在进程级、单个节点以及跨基础设施可用区自动执行故障转移操作。iFood 还使用Redis 云作为缓存层 来存储查询结果,以便可以立即提供重复的数据库请求。
“容错对于我们的特征存储应用程序非常重要,Redis 云也作为我们的主要数据库非常有效,”加林金总结道。“我们有一个小团队,因此我们不想被基础设施管理所拖累。Redis 云在这方面确实帮助了我们。它为我们节省了大量基础设施支出。”
1 “巴西食品科技巨头 iFood 在大流行期间每月配送 6000 万份订单”,拉美商业故事 (LABS),2021 年 4 月 12 日。
2 “巴西外卖应用程序 iFood 关注增长,”美国新闻与世界报道,2022 年 9 月 1 日。