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

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