2020年,iopool 意识到他们的架构正在拖慢他们的速度并阻碍创新。他们决定转向 Lambda 函数和由 Prisma 支持的关系型数据库。继续阅读,了解这如何帮助他们快速且自信地前进,并极大地简化了他们的开发流程。

在炎热的夏日,没有什么比跳进美丽的蓝色泳池中降温更惬意了。同样,也没有什么比想跳进去却看到泳池泛着黏腻的绿色、长满藻类、根本不适合游泳更糟糕的了。更令人烦恼的是,还需要手动检测、了解如何调整 pH 值、校准所需添加的化学品量等等。
这就是 iopool 的用武之地。他们为私人泳池、按摩浴缸和热水浴缸提供完整的泳池管理解决方案,从精密的泳池传感器和移动应用程序开始,并包括保持泳池清洁和安全所需的所有产品。
技术债务
2020年,iopool 的工程师们意识到他们面临着严峻的技术债务挑战,这使得公司技术栈的未来岌岌可危。iopool 的首席软件工程师 Luc Matagne 认识到这些技术挑战的严重性。用他的话来说,“那简直是开发人员的噩梦”。
项目中共有16个微服务。文件结构、代码结构和工具都存在很多差异。所有数据都存储在带有“假关系”的 NoSQL 数据库中。锦上添花的是,你无法在自己的机器上本地运行所有服务。每个服务都需要部署到云端进行测试。
Luc 意识到这种架构将阻碍 iopool 未来的发展,于是他提出了一系列彻底的变革,以构建 iopool 后端的新版本。这包括移除独立的微服务、切换到关系型数据库,以及最核心的,实施 Prisma。
Prisma 之旅
Luc 并没有将 iopool 的1.0版本视为失败。相反,它展现了他们对 LIT(学习、迭代、测试)方法的承诺,使他们能够将此视为一次学习,并开始从头重构应用程序设计、后端和代码。
许多开发团队听到“重构”都会感到畏缩,考虑到所需的时间和精力,这是理所当然的,但 iopool 还有一个额外的障碍:他们需要在不到六个月的时间内重构一个耗时两年完成的产品。他们还必须及时完成,以迎接将于六月开始的下一个旺季。
iopool 在选择 ORM 时有五个要求
-
速度 → 学习曲线应该很短或几乎没有,并且应该尽快实现。在一周内,他们就拥有了一个运行中的数据库,并可以类型安全地访问所有数据。通过使用 Prisma Schema 来构建数据库,他们能够快速地在不同结构之间迭代,从而从一开始就获得最佳数据库。“如果没有 Prisma,我们不可能及时准备好 iopool 2.0。”
-
灵活性 → 他们必须发布许多新功能以保持竞争力。Prisma 和 Nexus 的结合使得解析器(resolvers)的管理变得轻而易举。所有内容始终易于访问。
-
易用性 → 他们移除了微服务之间复杂的路径,这些路径曾用于理解数据流向(或不流向)何处。Prisma 在以他们所需的方式轻松获取数据方面非常有帮助。
-
可靠性 → 在最初两年的开发中,他们遗漏了一件事:单元测试。他们最终能够为后端每个过程添加单元测试。将 Prisma Client 引入测试过程非常容易,这使得代码库更加可靠。“现在每次新提交后我们都能安然入睡,有了 Prisma,错误率非常小。”
-
舒适性 & 生产力→ 他们现在能够使用本地服务器实时测试他们的功能,这在 Prisma 中是开箱即用的。这对他们来说是巨大的生产力提升。
新版技术栈
在明确了需求之后,iopool 开始着手使用全新的技术栈开发其后端的2.0版本。
新的技术栈依赖于流行的技术,例如 React Native、GraphQL(使用 Apollo)、Postgres 和 DynamoDB。在2.0版本中,Prisma 扮演着关键角色。
iopool 大幅升级的2.0版本广泛使用了通过 AWS Lambda 实现的无服务器函数。Nexus 用于提供一个由 React Native 应用程序调用的 GraphQL API。Prisma Client 用于访问 iopool 除了水质数据之外所有数据所使用的 Postgres 数据库。对于收集到的海量水质数据,选择 DynamoDB 是因为它能够轻松处理这种大规模数据。
在2.0版本中采用 TypeScript,特别是 Prisma 和 Nexus,带来了丰厚的回报。与之前微服务架构下每两到三周发布一次相比,iopool 现在每周能够发布两次或更多次。以前需要数周开发时间的功能已缩短到数天。
因为我们发现了 Prisma,所以我们决定开始对整个项目进行重构。我们知道 Prisma 会帮助我们更快、更有信心地进行,尤其是在我们重构时间有限的情况下。
开发周期的改进,很大程度上归功于 Prisma 提供的类型安全。iopool 的开发人员在使用 Prisma Client 进行数据库访问调用时,能够获得智能感知、自动补全和类型检查,这对速度提升至关重要。
Prisma Migrate 在 iopool 的2.0版本升级中也起到了关键作用。Migrate 让团队对数据库 Schema 变更的方法充满信心,允许多个开发人员在一个中心 Schema 上协作,并使更改在不同环境中无缝应用。
当我们编辑或更改 Schema 时,我们知道如果使用 Prisma,它就能正常工作。
结论
iopool 在开发后端2.0版本时体验非常顺畅,这在很大程度上归功于 Prisma 处于核心地位。Prisma 使他们的开发人员能够更快地行动,实现1.0版本难以实现的新功能,并为公司的未来带来了新的可能性。
要了解更多关于 iopool 如何成功使用 Prisma 的信息,以及关于 Prisma 本身,请查阅以下资源
不要错过下一篇文章!
订阅 Prisma 新闻邮件