在百事公司使用Elixir的营销和销售情报

310 阅读6分钟

欢迎来到我们关于公司在生产中使用Elixir的系列案例研究。请看我们至今已发表的所有案例

百事公司是世界领先的食品和饮料公司之一,服务于全球200多个国家和地区。今天,Elixir在百事公司内部被六个不同的团队以不同的能力使用。本文探讨了搜索营销和销售智能平台团队如何采用和使用Elixir来建立内部工具。

虽然我们在这篇文章中只探讨两个团队,但百事公司正在多个团队中招聘Elixir工程师。让我们开始吧。

第一个步骤

这个将成为第一个Elixir项目并为百事公司内部未来的Elixir应用打开大门的项目是由Jason Fertel在2016年开始的。

最初,该应用为管理多个网络平台的搜索营销业务提供工作流程自动化。该产品取得了成功,最终在2018年被整合到百事公司。

现在,Elixir应用程序在数据管道中发挥着核心作用,该管道为百事公司的营销和销售团队提供了查询、分析和与几个搜索营销合作伙伴整合的工具。

该管道从数据工程团队开始,该团队收集数据并存储到Snowflake 数据云。Elixir 应用程序从 Snowflake 的平台读取数据,进行预处理,并将其存储在两个数据库中。根据数据的特点,PostgreSQLApache Druid。最后,Phoenix 应用程序将这些数据提供给内部团队,并直接与第三方 API 进行通信。

为什么是Elixir?

Elixir帮助百事公司电子商务部集中精力,快速完成工作。百事公司的软件工程经理David Antaramian说:"Elixir使我们的团队能够充满信心地快速开发,"。"反过来,这让我们能够快速为业务提供价值,这也是我们坚持使用该语言的原因。无论是对前端进行流式修改,还是在多个存储系统中协调并发的数据操作,Elixir都提供了强大的开发者体验,并转化为良好的消费者体验。"

不同的Elixir功能汇集在一起,帮助百事公司团队建立引人注目的开发和用户体验。由于其功能和可扩展性,百事公司使用Elixir创建了一个特定领域的语言,将业务查询转化为发送到不同存储的数据结构。这给了他们一个稳定的基础,他们可以不断地添加新的查询和集成,即使他们的复杂性在增加。

此外,百事公司的营销和销售团队生成的报告经常要查询不同的表甚至不同的存储,同时还要兼顾与不同第三方API的长期连接。Elixir的编程模型继承自Erlang虚拟机,使得并发运行所有这些操作变得轻而易举,从而在开发团队继续专注于提供功能的同时,实现快速而丰富的用户互动。

库和框架

David Antaramian很快就称赞了Erlang运行时及其标准库。他说:"由于我们正在处理大量的数据,所以尽可能避免冲击数据库也是非常重要的。值得庆幸的是,Erlang提供了一个叫做ETS的内存表存储,我们用它来存储数十万行的数据。

在与一些数据存储进行通信时,Erlang标准库也很方便。特别是,Snowflake平台需要ODBC连接。百事公司团队建立了一个名为Snowflex的库,设计在Erlang的内置OBDC驱动之上。

Elixir生态系统很好地补充了Erlang的生态系统。用React编写的前端,通过运行在Phoenix网络框架之上的Absinthe GraphQL工具包与服务器对话。Ecto数据库库负责管理与PostgreSQL的通信。他们还使用esamlSamly库来提供百事公司组织内部的认证--这是利用Erlang和Elixir社区内的工具的另一个例子。

最后,该团队还认可了Erlang生态系统基金会的努力,百事公司是该基金会的赞助商,特别是可观察性工作组。David说:"生态系统对Telemetry的采用对我们的系统带来监测的可见性和指标有很大的帮助。现在,当我们在一个地方看到尖峰时,我们可以很容易地将它们与其他系统部分联系起来。

雇用

今天,百事公司大约有40多名Elixir工程师,分布在六个团队。其中八个工程师属于搜索营销和销售智能平台团队。

虽然该团队认识到,与JavaScript等社区相比,Elixir工程师的数量并不多,但他们在招聘合格的Elixir候选人方面很有效。百事公司的软件工程经理Chase Gilliam解释说。"我们遇到过很多工程师,他们和我们一样,由于被以前的经历所累而找到了Elixir。因此,在招聘时,许多Elixir候选人的心态与我们相似,这最终加快了招聘过程。"

这群最初的Elixir工程师为该语言在百事公司内部的发展铺平了道路。大卫补充说。"起初,我们寻找有Elixir经验的工程师,以帮助我们建立一个可以指导其他开发者的团队。然后,我们把人才库扩大到任何有函数式编程背景的人,现在又扩大到有Ruby或Erlang经验的开发者。然而,如果有人是合适的人选,即使他们没有Elixir经验,我们也会接纳他们,并对他们进行培训"。他继续说道。"我们还广泛利用社区中的学习资源,如会议、书籍、在线课程等"。

随着团队的成长,他们采用了最佳实践,同时看到代码库的质量也在提高。切斯总结说。"一开始,我们的应用程序中有一些大型模块。幸运的是,由于不变性和有限的副作用,在函数式编程语言中重构是很简单的。采用像Credo、ExDoc和代码格式化器这样的工具对于规范我们内部使用Elixir的方式也是至关重要的。"对于那些有兴趣了解更多关于Elixir在百事公司内部的不同使用案例并帮助其继续发展的人,他们正在招聘