2021 年 1 月 27 日

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

Rapha 是一家致力于为全球骑行者(无论是初学者还是 World Tour 专业人士)重新定义舒适性、性能和风格的公司。了解 Prisma 如何帮助 Rapha 在各个团队和平台之间构建一致的数据 API。

How Prisma Helps Rapha Manage Their Mobile Application Data

总结

Prisma 通过简化用户数据的访问,帮助 Rapha 在 Web、移动设备和实体店位置提供一致的用户体验

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

Rapha 是一家致力于为全球骑行者(无论是初学者还是 World Tour 专业人士)重新定义舒适性、性能和风格的公司。骑行者热爱他们的产品以及他们对社区和这项运动的承诺。

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

Rapha 的平台和数据基础设施

Rapha 与其社区的互动提供了许多独特的机会和挑战。在全球各地的 Rapha Clubhouse 提供在线和店内产品与服务,有助于他们与身在各地的用户建立联系。这些用户接触点包括 Android 和 iOS 应用程序、电子商务网站以及各种 Web 内容(如博客文章)。

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

Rapha's data architecture

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

  • 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 的 Elastic Container Service。长期运行和异步任务被添加到 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 的移动和 Web 平台随着新服务、产品和活动的不断涌现而持续增长。开发团队能够为其电子商务平台、移动应用程序和实体 Rapha Clubhouse 的用户提供统一的个性化体验。

不要错过下一篇文章!

注册 Prisma 新闻通讯