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 俱乐部会所提供产品和服务,帮助他们与用户无论身在何处都能建立联系。这些用户接触点包括 Android 和 iOS 应用程序、电子商务网站以及各种网络内容,如博客文章。

以如此多独特媒介与用户交互的一个副作用是,多种系统参与到用户数据的管理中。他们的数据基础设施反映了这一点。

Rapha's data architecture

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

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

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

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

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

团队的大部分数据存储在 Amazon RDS 上运行的 PostgreSQL 数据库中。他们不直接与数据库交互,而是使用 Prisma 来构建和管理作为其数据 API 基础的模式。然后他们可以使用 Apollo Server 将 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 Server 提供,并被其 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 俱乐部会所的用户提供统一、个性化的体验。

不要错过下一篇文章!

订阅 Prisma 新闻通讯

© . All rights reserved.