2021 年 7 月 6 日

从 Sequelize 迁移到 Prisma 如何让 Invisible 实现规模化发展

Invisible 是一家 B2B 生产力初创公司,它允许用户通过 Worksharing 自动化和外包任何复杂的工作流程或业务流程。Prisma 在帮助 Invisible 确保其技术栈的未来可行性并支持其规模化发展方面发挥了关键作用。

How migrating from Sequelize to Prisma allowed Invisible to scale

Invisible:运营效率和自动化的解决方案

在过去一年中,许多公司越来越清楚地认识到,仅仅数字化以实现业务转型是不够的。企业需要建立一个专注于运营效率和自动化的数字化转型战略。这对于提高生产力和效率,并在一个要求越来越高客户体验的市场中保持竞争力至关重要。

Invisible 出现之前,企业依靠 BPO(业务流程外包)实现运营效率,并依靠 RPA(机器人流程自动化)及其他工具实现自动化。

然而,仅凭这两种解决方案本身是不够的。每个企业都有定制且复杂的业务流程,许多 RPA 的一刀切方法无法解决这些问题。同样,外包给 BPO 可能会避免为内部资源创建新工作流程、培训计划等的需求,但它只适用于支持相对简单、大规模的工业流程。

Invisible 通过 Worksharing 解决了这个问题。它结合了 BPO 和 RPA 的最佳元素,同时保留了人工判断的关键组成部分。

Invisible 的基因中就包含卓越运营和自动化。我们正在将知识工作工业化,将所有事物分解为最小的组成部分,将一切转化为流程,构建工具,并协调激励机制。这通过 Invisible 的数字装配线完成:客户可以在 Invisible 在线门户上选择预构建的业务流程,或使用我们提供的可用“构建块”构建自己的自定义流程。

Scott DownesScott Downes,Invisible 首席技术官

选择 Prisma 提升内部效率

Invisible 通过确保内部遵循相同的原则来确保为其客户提供运营效率和自动化:他们选择能够让开发人员节省时间,同时也能确保其技术栈面向未来的技术。

这就是高级软件工程师 Pieter Venter 在设计 Invisible 新技术栈时选择 Prisma 的原因。当 Pieter 加入 Invisible 并评估其技术栈时,他认为需要进行一次全面的重构,以便为平台未来多年的发展奠定坚实基础。

使用 Prisma 将使 Invisible 团队能够

  • 根据市场需求快速演进其模式,添加新功能和流程
  • 灵活编写后端所需的自定义逻辑
  • 对所使用的工具充满信心,无需担心持续的维护和故障排除

最初,Invisible 使用 Sequelize,它为他们提供了强大的 TypeScript 类型,但创建模型需要大量的样板代码。此外,类型定义和类型不会根据查询选择而更新。他们还研究了 Hasura,但最终它没有达到他们的预期,缺乏后端自定义逻辑所需的灵活性。

Prisma 是理想的解决方案

  • 它专为 GraphQL 实现而构建
  • 它在客户端使用基于查询选择的推断类型提供自动生成的类型
  • 流畅的 API 非常易于开发人员学习,从而实现了一种新的现代化查询引擎开发方式

在实际应用中从 Sequelize 迁移到 Prisma

对于 Invisible 来说,从 Sequelize 迁移到 Prisma 的过程是轻松无痛的

该团队创建了一个 Prisma 客户端,与他们的 Sequelize 客户端并行使用,该客户端用于托管在 Heroku 上的 API 服务器单体应用中。他们使用 Prisma introspect 根据他们的数据库构建了一个新的 Prisma 文件,该文件最终与他们之前的模式非常相似。

与此同时,他们还创建了一个新的无服务器 GraphQL API(托管在 Vercel 上并使用 Postgres),该 API 只使用 Prisma,没有 Sequelize 的负担。简单的数据模型和业务逻辑被快速轻松地迁移到新的后端。

高并发请求也被转移到新的无服务器功能,以减轻旧 API 服务器上 Heroku 旧 dynos 的负载,并允许他们在 Heroku 上进行缩减。

目前,所有新的核心数据模型都在新仓库的 Prisma 模式和新的 Postgres 数据库中构建,所有剩余的旧查询正在逐步从 Sequelize 和 Heroku 迁移,并计划在年内完全弃用它们。

这种渐进式方法使 Invisible 能够继续让数百名代理在全球范围内 24/7 无缝、不间断地工作,并确保他们的客户没有经历任何停机时间

虽然他们可以选择在一周内完成迁移,但他们决定逐步进行,以便能够继续开发新功能,并利用 Prisma 更快地发布它们。

Invisible 的技术栈

Invisible 在所有地方都使用 TypeScript,这使他们能够拥有从数据库到前端的 100% 类型安全代码,而无需维护类型。他们的技术栈由一些 React 应用程序 (NextJS) 和 Node.js 后端 API 服务器组成。他们使用 Prisma 和 Postgres 中的高度关系型数据模型。

他们目前的技术栈包括

与 Sequelize 甚至 TypeORM 相比,Prisma 在类型安全的 ORM 方面达到了一个新的水平。tRPC + Prisma 组合的上手难度极低!它提供了完全的类型安全,无需任何代码生成或编写和维护繁琐的类型和接口。Prisma 生成类型,tRPC 消费并传递它们,我们甚至不需要维护任何 API 服务器。借助 Next.js 和 Vercel,我们还能以通常运行自有有状态服务器所需成本的一小部分获得出色的开发体验 (DX) 和用户体验 (UX)。

Pieter VenterPieter Venter,Invisible 高级软件工程师

目前,Invisible 团队正专注于将 Heroku 单体 API 重构为托管在 Vercel 上的一系列无服务器函数。此外,他们已用 tRPC 取代了 GraphQL 和 Apollo——tRPC 是 React Query 的一个轻量级包装器,负责处理客户端和服务器的数据获取逻辑。这大大简化了他们的技术栈,并将实现更快的特性开发和更可靠的数据库增量更改

Prisma 与他们新的微服务架构无缝协作,并已被抽象成一个独立的库,可在需要数据的服务之间共享。Prisma 会根据无服务器函数的需求自动打开和关闭数据库连接。查看 Martina Welander 关于此主题的演讲:《世界上最糟糕的泳池派对:Prisma 的连接管理》!

Invisible's tech stack before and after Prisma

Invisible 的工程文化

Invisible 真正地在所有部门,尤其是工程团队中,拥抱了主人翁文化。以下是 Invisible 首席技术官 Scott Downes 对团队内部共享责任感的描述:

我们所有的合作伙伴(“员工”一词被禁止!)都同意一个透明、精英化的模式,每个人随着时间的推移都能获得有意义的股权,我们的薪资和奖金与业务绩效直接挂钩。每个人的工作都直接影响并塑造着公司的发展方向和成功。

Scott DownesScott Downes,Invisible 首席技术官

这在 Pieter 的工作中尤为明显:Pieter 独自评估了以前技术栈的缺陷,并主导设计了一个新的、可扩展且面向未来的解决方案。

如果您想加入完全远程的 Invisible 团队,请在此处查看所有空缺职位。

结论

在过去一年中,Invisible 的收入翻了两番,因为越来越多的公司认识到提高效率和自动化的重要性。依靠 Prisma 这样的技术使他们能够保持敏捷和可扩展性,并确保他们能够满足客户不断增长的需求。

采用 Prisma 使 Invisible 能够比以前更快地部署更改,确保他们可以继续提高团队效率,同时降低客户成本。

要了解 Prisma 如何帮助您的团队提高生产力,请加入Prisma Slack 社区

不要错过下一篇文章!

订阅 Prisma 新闻通讯

© . All rights reserved.