NerdWallet 使用一个图表构建更好的应用程序,速度更快

生活中没有什么比个人财务安全更重要的了,但没有什么比个人财务更让人迷惑和复杂的了。NerdWallet 提供客观的建议、专家信息和工具,帮助人们更好地理解和管理自己的财务,从而应对这一挑战。

NerdWallet 一直在寻找如何改善用户体验并为客户提供更多价值的方法。去年,他们仅向移动应用程序推出了许多主要新功能。明年,他们希望发展得更快,为其应用程序增加新功能并提高速度和可靠性。

为了实现这些目标,工程团队启动了一项代码检修,重点是实现 Apollo GraphQL 堆栈。

NerdWallet 的高级软件工程师尼尔·洛卡雷表示:“在这一计划的早期研究阶段,我们逐渐意识到我们没有在可能的情况下行动得足够快。”“一个很好的例子是基于 cookie 的身份验证,它建立在复杂的代码之上,其中客户端向不同的服务发出了过多的请求——高达 7 个!而且,基础设施缺乏灵活性,后端 API 问题与网页的展示问题紧密耦合。很难对代码进行更改,最糟糕的是,它对用户来说容易出错。”

这种基础设施也难以在用户体验中执行一致性。前端工程师利用了广泛的服务,从全局身份验证到诸如获取最新抵押贷款利率之类的专门服务。这些集成存在于使得跨代码库进行依赖关系管理具有挑战性的库中。这个模型在一定程度上实现了目的,但它涉及平台之间的大量冗余、中间件和状态管理。

BEFORE ADOPTING A GRAPH: REDUNDANCY AND COMPLEXITY

转向图形

覆盖现有服务基础架构并且可通过 GraphQL 被客户端访问的图形非常适合 NerdWallet 希望实现的目标。通过跨越许多服务构建中心化数据菜单,他们可以锚固前端团队和后端团队如何共同努力构建功能。

AFTER ADOPTING A GRAPH: SIMPLIFIED, PERFORMANT INFRASTRUCTURE

正如 Lokare 所解释,“数据图形提供了一个编写良好的跨功能 API,整个工程团队可以轻松使用或扩展。它不仅能让我们的工作速度更快,而且还可以直接改善应用体验——在互联网速度变慢时更可靠地工作,并且占用更少的设备 CPU 和内存占用空间。”

试用图形

早在 2019 年初,NerdWallet 就将其网上购物和奖励平台代码库确定为数据图形的第一个使用案例。它还借此机会开始逐步淘汰 Redux 并使用 GraphQL 替换现有的 API 集成。

作为相对较新的代码库,利用用 Python 编写的单一后端服务,NerdWallet 的奖励体验是理想的试用候选,正如NerdWallet 工程博客所述。

选择 Apollo 的 GraphQL 服务器和客户端实现。Lokare 解释说,“Apollo 是事实上的标准 GraphQL 实现,但我们也很惊喜地发现它内置支持缓存、去重和错误处理等功能。你只需编写与后端交互所需的特定代码,Apollo 就会处理其余部分。”

团队立即看到了好处。Lokare 解释说:“数据图表很容易阅读。网络往返次数更少,客户端代码更少,错误更少。”“此外,使用 GraphQL 的产品没有 Redux 状态管理,这意味着更少的代码,而且不需要任何特殊考虑来导航,以便其他人能够介入代码工作中。”

现在,Web 和原生移动代码库都引用同一图表。

实施管理

NerdWallet 最初计划让后端团队(最熟悉服务本身的人)拥有数据图表层。但 Lokare 解释说:“我们越认识到数据图表支持解耦且产品优先的方法,我们就越决定让产品工程团队拥有这些内容。” 按照Principled GraphQL指南,这帮助团队确保拥有需求导向的架构,该架构始终针对实际产品需求构建,并随产品一同发展。

NerdWallet 还选择使用 Apollo 的平台来管理图表层。Lokare 表示:“Apollo 为我们提供了跨团队操作图表而不创建并维护另一个内部产品的工具,“图表管理器”尤其允许我们利用构建的 Apollo Server 基础设施,并使用服务信息、错误和归因丰富架构。对于确保我们没有重大更改影响到生产这一方面,它非常好用。”

培养 GraphQL 文化

实施时间是采用背后的主要动力,帮助团队快速运送代码。现在,NerdWallet 的下一步是扩大图表的用处并在 GraphQL 周围营造一种文化。

NerdWallet 的高级软件工程师 Sarah R. 正在帮助教育其他工程组织了解 GraphQL 以及如何利用该图表。

莎拉说道:“现在,任何人都可以参与数据图。当团队了解到 Rewards 体验所做的事情后,他们都非常想了解如何集成,开始在 Apollo GraphQL 层实现自己的获取逻辑。团队还发现,该图有利于新工程师的入门,他们可以更快地上手并参与代码基础。”

莎拉补充说,鼓励全公司了解该图的优势的最有效方法之一是 NerdWallet 成立的内部工作组。该小组每周开会,讨论最佳实践、分享工具、探讨问题和集思广益制定策略。正如莎拉所解释的,“GraphQL 之所以能在 NerdWallet 取得成功,是因为这是一个团队努力的结果。”

莎拉说,展望未来,我们预计各个团队将全面采用 GraphQL:“在内部,我们努力推广该技术,使经理、产品经理、开发人员和质量保证人员都能理解该图对他们自己的角色和业务需求的价值。”

NerdWallet 内部培训,主讲人尼尔·洛卡雷

随着该图堆栈的切实好处不断累积,其价值也变得更容易解释。莎拉举例说道:“比如,转向该图的团队可以更快地将产品和服务推向市场,更快、更非常规地处理缺陷。工程师们很兴奋!”

莎拉说:“我们绝不会回到以前的复杂状态。数据图更加精简和直接。它只是更容易、更快地使用。”

下一篇故事

分享文章

Instagram