2020 年,iopool 意识到他们的架构正在拖慢他们的速度并阻碍他们创新。他们决定切换到 Lambda 函数和由 Prisma 驱动的关系数据库。请继续阅读以了解这如何帮助他们充满信心地快速行动,并大大简化了他们的开发过程。

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