Rapha は、初心者からワールドツアーのプロまで、世界中のサイクリストに向けて快適さ、パフォーマンス、そしてスタイルを再定義することに専念している企業です。Prisma が Rapha が様々なチームやプラットフォームにわたって一貫性のあるデータ API を構築するのにどのように役立つかをご覧ください。

概要
Prisma は、ユーザーデータへのアクセスを容易にすることで、Rapha がウェブ、モバイル、および実店舗の場所全体で一貫したユーザーエクスペリエンスを提供できるよう支援します。
- Prisma は、Android および iOS アプリケーションの両方で PostgreSQL データへのアクセスを簡素化します。
- Prisma Migrate は、開発環境および本番環境におけるスキーマ変更を管理および適用します。
- Prisma は、Rapha が柔軟性を維持し、一貫した開発者エクスペリエンスを維持しながら、データストレージのオプションを評価できるように支援します。
Rapha は、初心者からワールドツアーのプロまで、世界中のサイクリストに向けて快適さ、パフォーマンス、そしてスタイルを再定義することに専念している企業です。サイクリストは、彼らの製品と、コミュニティとスポーツへのコミットメントを愛しています。
アクティブウェアブランドであることに加えて、Rapha はサイクリングコミュニティ内のリソースでもあります。彼らは定期的にユニークなライドやイベントを企画・後援し、サイクリストを結びつけるために 2015 年に Rapha Cycling Club を設立しました。一方、Rapha Foundation は、次世代のレーサーを支援することでスポーツのより良い未来を築くために、非営利団体への資金提供に専念しています。
Rapha のプラットフォームとデータインフラストラクチャ
Rapha のコミュニティへの関与は、多くのユニークな機会と課題を提供します。オンラインと世界中の Rapha Clubhouses の両方で製品とサービスを提供することで、ユーザーがどこにいてもつながることができます。これらのユーザーとの接点には、Android および iOS アプリケーション、e コマースウェブサイト、およびブログ投稿などのさまざまなウェブコンテンツが含まれます。
非常に多くのユニークな媒体でユーザーとやり取りすることの副作用は、ユーザーデータの管理にさまざまなシステムが関与することです。彼らのデータインフラストラクチャはこれを反映しています。
Rapha のウェブチームは、主に以下のものを使用してデータ要件に対応しています。
- SAP Hybris および Commerce Cloud: 購入に関連するユーザー情報を含む、e コマースウェブサイトのデータを管理します。
一方、Rapha のモバイルチームは、以下を含むスタックを使用しています。
- PostgreSQL: Amazon RDS でホストされているメインデータベース
- Prisma 2: Node.js および TypeScript 用の次世代 ORM
- Nexus Schema: GraphQL API を生成するための TypeScript および JavaScript タイプ定義
- Apollo Server: 生成された API を提供する GraphQL サーバー
- Contentful: チームがブログ投稿やその他のコンテンツを処理するために使用する API 駆動型コンテンツ管理ソリューション
Rapha は、モバイルアプリケーションが依存するデータ API を開発および管理するために Prisma を使用しています。
チームのデータの大部分は、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 は、これらの両方の懸念に対処するためのデータ API を構築する方法として Prisma を評価しました。
Prisma が Rapha のデータインフラストラクチャを抽象化するのにどのように役立つか
Rapha のモバイルチームは、PostgreSQL データ用の GraphQL API の開発を支援するために Prisma を使用しています。この 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 のモバイルおよびウェブプラットフォームは、常に新たなサービス、製品、イベントが視野に入り、成長を続けています。開発チームは、e コマースプラットフォーム、モバイルアプリ、および実店舗の Rapha Clubhouses のユーザーに、統一されたパーソナルなエクスペリエンスを提供することができます。
次の投稿をお見逃しなく!
Prisma ニュースレターに登録する