2021年1月27日

Prisma 如何帮助 Rapha 管理其移动应用数据

Rapha 致力于为全球骑行爱好者(无论是初学者还是世界巡回赛专业人士)重新定义舒适度、性能和风格。了解 Prisma 如何帮助 Rapha 在不同团队和平台之间构建一致的数据 API。

How Prisma Helps Rapha Manage Their Mobile Application Data

总结

Prisma 通过简化用户数据访问,帮助 Rapha 在网络、移动端和实体店之间提供一致的用户体验

  • Prisma 简化了他们的 Android 和 iOS 应用访问 PostgreSQL 数据的过程
  • Prisma Migrate 管理并在他们的开发和生产环境中应用模式变更
  • Prisma 帮助 Rapha 保持灵活性,使他们能够评估数据存储方案,同时保持一致的开发者体验

Rapha 致力于为全球骑行爱好者(无论是初学者还是世界巡回赛专业人士)重新定义舒适度、性能和风格。骑行者喜爱他们的产品以及他们对社区和这项运动的承诺。

除了作为一个运动服品牌,Rapha 还是骑行社区的一项资源。他们定期组织和赞助独特的骑行活动和赛事,并于 2015 年创立了 Rapha 骑行俱乐部,将骑行者聚集在一起。与此同时,Rapha 基金会致力于资助非营利组织,通过支持下一代赛车手来帮助为这项运动建设更美好的未来。

Rapha 的平台和数据基础设施

Rapha 参与社区活动带来了许多独特的机会和挑战。在全球各地的 Rapha Clubhouses 提供线上和线下产品及服务,帮助他们在用户所在地与用户建立联系。这些用户接触点包括 Android 和 iOS 应用程序、电子商务网站以及各种网络内容,如博客文章。

通过如此多独特的媒介与用户互动带来的一项副作用是,许多系统都涉及用户数据管理。他们的数据基础设施反映了这一点。

Rapha's data architecture

Rapha 的网页团队主要通过以下方式满足其数据需求:

  • SAP Hybris 和 Commerce Cloud:管理他们的电子商务网站数据,包括与购买相关的用户信息

同时,Rapha 的移动团队使用的技术栈包括:

  • PostgreSQL:他们在 Amazon RDS 上托管的主数据库
  • Prisma 2:用于 Node.js 和 TypeScript 的下一代 ORM
  • Nexus Schema:TypeScript 和 JavaScript 类型定义,用于生成 GraphQL API
  • Apollo Server:一个 GraphQL 服务器,用于提供生成的 API
  • Contentful:一个 API 驱动的内容管理解决方案,团队用它来处理博客文章和其他内容

Rapha 使用 Prisma 开发和管理其移动应用依赖的数据 API。

团队的大部分数据存储在运行于 Amazon RDS 上的 PostgreSQL 数据库中。他们没有直接与数据库交互,而是使用 Prisma 构建和管理用作数据 API 基础的模式。然后,他们可以使用 Apollo 服务器将 API 提供给他们的移动应用程序。

以上所有服务都被打包到 Docker 容器中,并部署到 Amazon 的弹性容器服务。长时间运行和异步任务被添加到 Amazon 的 SQS 消息队列服务中,并由 Amazon Lambda 函数消费。Rapha 依靠边缘的 Cloudflare 来加速全球用户的访问。

Rapha 对其数据层的需求

Rapha 希望有工具帮助他们的移动团队快速安全地开发数据库。作为一个支持 iOS 和 Android 应用的小团队,他们希望以有组织的方式轻松开发和部署模式变更。这意味着在后端数据库和移动应用交互的 GraphQL API 之间同步变更。

除此以外,他们还希望随着需求的演变,有更多的控制权和灵活性来做出未来的改变。无论是出于选择还是必要性迁移到新技术,Rapha 都希望能够保持对其数据稳定的接口,无论负责管理和提供数据的是什么。

Rapha 评估了 Prisma 作为构建数据 API 的一种方式来解决这两个问题。

Prisma 如何帮助抽象 Rapha 的数据基础设施

Rapha 的移动团队使用 Prisma 来帮助他们开发其 PostgreSQL 数据的 GraphQL API。然后,该 API 由 Apollo 服务器提供服务,并被他们的 iOS 和 Android 应用消费。

借助 Prisma,团队可以通过修改 Prisma 模式文件来修改他们的数据结构。模式文件是数据模型结构的单一事实来源。它用于更新底层数据库中的表,并允许团队轻松将更改构建到 API 中。

通过将 Prisma 与其 GraphQL API 结合使用,Rapha 能够抽象数据源,并使其易于每个平台访问。Prisma 负责管理 API 层和数据库之间的更改。同时,由 Prisma 模式创建的 GraphQL API 为其应用提供了统一的接口。Prisma 的类型安全性有助于使 API 更新更容易、更安全地实现。它们共同使团队能够发展其数据模型以响应不断变化的需求。

管理迁移

随着 Rapha 移动应用的演变,必须仔细管理数据库模式的更改,以确保 API 和应用版本保持兼容。Prisma 提供了工具,可以安全地将其开发和生产环境中的更改进行部署。

由于 Prisma 在模式文件中定义了应用程序和数据库的数据结构,因此对数据模型的更改是集中的。Prisma Migrate 可用于检测模式文件的更改并生成 SQL 迁移文件。

这些文件可以存储在版本控制系统中,并针对数据库运行以转换其数据结构。当需要部署模式更改时,团队可以使用 Prisma Migrate 将更改自动应用到数据库,作为其 CI/CD 管道的一部分,或者他们可以手动对数据库运行生成的 SQL 脚本。

构建未来

Prisma 对 Rapha PostgreSQL 数据库的抽象帮助他们为未来可能拥有更多数据源做好准备。虽然他们当前的 Prisma 配置只管理单个数据库的模式,但它可以作为额外变更的框架。

在接下来的几年里,Rapha 预计随着他们提供新服务和整合跨平台体验,他们的数据 API 将会增长。Prisma 将允许他们为每项服务选择适合其需求的数据库,同时最大限度地减少对其开发者体验的影响。这在为新服务选择数据库以及重新评估他们目前依赖的数据库是否仍然是最佳选择时尤其重要。

结论

Rapha 的移动和网络平台不断发展,新的服务、产品和活动始终不断涌现。开发团队能够为他们的电子商务平台、移动应用和实体 Rapha Clubhouses 的用户提供统一的个性化体验。

不要错过下一篇文章!

订阅 Prisma 新闻通讯