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クラブハウスの両方で製品とサービスを提供することで、ユーザーがいる場所でつながることができます。これらのユーザーとの接点には、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クラブハウスのユーザーに、統合されたパーソナルな体験を提供できています。
次の投稿をお見逃しなく!
Prismaニュースレターに登録する