在Duffel将旅行与Elixir结合起来

172 阅读5分钟

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

Duffel正在建立旅游行业的新软件骨干。他们的第一个产品是Flights API,这是一个对开发者友好的平台,使任何企业都能即时搜索航班、进行预订、保留座位,并出售托运行李等付费附加服务。Duffel与世界上最大的20多家航空公司相连,包括美国航空、阿联酋航空和汉莎航空。该公司成立于2017年11月,2019年它开放了他们的API的私人测试版,并已筹集了5600万美元的资金总额。它现在在伦敦和纽约的办公室里有40名员工。这篇文章讨论了Duffel如何使用Elixir作为他们的首选技术,使建立在旧标准和过时堆栈上的行业现代化。如果你对塑造旅游的未来感兴趣,Duffel正在招人

为什么是Elixir?

今天,为了从航空公司获得航班和价格,公司必须通过全球分销系统(GDS),通常使用几十年前的系统,如Amadeus和Sabre。Duffel的创始人/CEO Steve Domin解释说。"航空业运行的是一种叫做EDIFACT标准的传统数据交换标准,最近才转入'现代'SOAP/XML世界。与全球分销系统或航空公司的任何整合工作总是要花几个月的时间,这给新企业带来了非常高的进入门槛。

在其核心,Duffel正在建立新的旅游操作系统。对Duffel的API的一个请求可能转化为对不同航空公司的几十个请求链。每个请求的响应都需要被解析、规范化,并有可能与更多发出的请求结合起来。所有这一切,同时还要管理缓慢的响应、超时、大型数据有效载荷等等。这些挑战让Steve清楚地认识到,Elixir将是一个很好的选择。"我们正在建立一个高并发的平台,进行密集的数据贩运。从第一天起,很明显Erlang虚拟机将是一个很好的选择,因为它是为电信业设计的,有类似的要求。"他们选择了Erlang虚拟机,以及Phoenix网络框架Ecto数据库库作为他们的堆栈,推出他们最初的JSON API。他们利用Elixir的标准库进行大部分的并发工作,并利用Saxy库进行XML解析

与开源一起成长

当Steve在2017年11月共同创立公司时,他已经有了大量的Elixir经验。早在2013年,Steve在该语言达到1.0之前就开始使用它。他通过对Dynamo(Phoenix的祖先)的黑客攻击开始了他的旅程,并最终在他以前的公司引入了Elixir,将其用于一个内部项目。他还在伦敦组织聚会,并为开源项目做出贡献,包括他自己的一些项目,如Swoosh

创始人在2018年夏天加入了Y Combinator。他们一回到伦敦,就聘请了Alan Kennedy作为他们的第一个工程师。Alan第一次听说Elixir时,他和Steve是GoCardless的同事。艾伦一直关注着它,但在加入Duffel之前从未积极使用过它。艾伦回忆说,从一种提倡可变性的语言跳到像Elixir这样的不可变性语言,他感到很纠结。一旦一切就绪,他承认新的编程模型在概念上要简单得多。

从那时起,公司就在新鲜和经验丰富的工程师的混合作用下成长起来,包括近70%的工程组织用Elixir编程。

Johanna Larsson是最近加入Duffel的工程师之一。在被录用之前,她已经在Elixir会议上发言,并对生态系统做出了有意义的贡献,如HexDiff项目。在她看来,Elixir最大的资产之一是社区,她认为这个社区很受欢迎,也很支持。

Duffel经常能够利用生态系统,接触到现有的解决方案。然而,他们并不回避创建自己的解决方案,并在有意义的情况下将其开源化。总的来说,Duffel团队对生态系统的许多领域都有贡献。除了前面提到的Swoosh和HexDiff项目,他们的团队成员还创建了HammoxBigflake、公司自己的Paginator库,以及其他项目。

即将到来的挑战

Duffel的工程师们面临着许多有趣和令人兴奋的挑战。例如,随着越来越多的开发人员开始使用该产品,他们将开始遇到航空公司施加的一些费率限制,而他们还没有行使过。正如人们所期望的,不同的航空公司有不同的规则和各种限制,提供一个统一的解决方案有其障碍。

一些即将到来的改进与他们对伞形项目的使用有关。Duffel开始时是一个单体,但他们最终在Phoenix v1.4发布后就迁移到了Elixir的伞状项目--在Elixir的工具中实现单体repo。他们的主要动机是将与不同航空公司的通信分离成不同的服务。一开始,这些服务在Steve的头脑中是清晰的,但随着团队的壮大,他们在执行这些边界时遇到了摩擦,这导致了循环的依赖性。

幸运的是,Elixir v1.11开始对应用程序之间的循环和未声明的依赖关系发出警告,这迫使Duffel团队重新审视那些过去不严格的地方,以长期提高代码库的质量。

团队也一直在探索如何通过带来新的方法和技术来改善他们的API,比如流媒体和GraphQL,以及优化集成的智能方法。如果你有兴趣在重塑旅游行业的同时解决这些和其他许多挑战,你可以了解更多关于Duffel的工程机会