Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TypeScript x GraphQLで2年開発してみて

yutank34
February 28, 2024

TypeScript x GraphQLで2年開発してみて

イベント「【タイミー/Voicy/令和トラベル】Backend LT〜技術選定における“見極める力”とは〜」での登壇資料
https://reiwatravel.connpass.com/event/306794/

yutank34

February 28, 2024
Tweet

Transcript

  1. き む ら  ゆ う た 
 木村 祐太 => きむにゃん


    
 ▪略歴
 2018.1 - 2022.12: リクルートでエンジニア
 2023.1 - : 令和トラベルでエンジニア <- イマココ
 
 ▪やりたいこと
 人生を豊かにするプロダクトを作って生きていきたい 
 
 ▪仕事内容
 開発業務(バックエンドを中心に)
 P. 2 自己紹介
  2. - NEWT - カスタマー用アプリ - iOS (Swift) - Android (Kotlin)

    - Web (TypeScript) - 管理システム - ツアー造成・予約・手配管理用のシステム - Web (TypeScript) <- Backendチームで開発 前提:扱うプロダクト
  3. - 開発言語: TypeScript - API Layer: GraphQL - GraphQLのAPIをCloud Run上で動作

    - 実装にはApollo GraphQLを利用 - GraphQLをいわゆるAPIアグリゲーションの層として使っているわけではなく、単体で 機能するもの Backend Stack
  4. - NEWT - カスタマー用アプリ - iOS (Swift) - Android (Kotlin)

    - Web (TypeScript) - 管理システム - ツアー造成・予約管理システム - Web (TypeScript) Backendチーム構成 Before
  5. - NEWT - カスタマー用アプリ - iOS (Swift) - Android (Kotlin)

    - Web (TypeScript) - 管理システム - ツアー造成・予約管理システム - Web (TypeScript) Backendチーム構成 After
  6. クエリモニタリングをApllo Studioから自前のものに移行 - 前提 - GraphQLのエンドポイントは一つ - クエリはクライアントで決定 - エンドポイント単位ではなくクエリ単位でのモニタリングが必要

    - Apollo Studioは強力だった - Apollo ServerにLogging Pluginを組み込むことでモニタリン グできた - 無料枠を超えてプラン変更が必要に - Enterprise - 料金が。。🥹 - Serverless - ApolloのクラウドサービスにAPI Gatewayをおくこ とに。。。 苦労したこと
  7. - TypeScript - ライブラリの追従が大変(もうちょっと枯れて欲しい) - GraphQL - N+1問題(後述) - クエリの自由度がたかすぎる

    - 性能の悪いクエリの存在 - 負荷をかける攻撃的なクエリの実行 TypeScript x GraphQLでの開発における現状の課題
  8. - Pros - TypeScript - 少ない人数でWebもBackendもってなるとTypeScriptは良い選択 - GraphQL - SchemaDrivenな開発で自然とドキュメンテーションされる

    - 各プラットフォーム(App/Web)からBFFなしで最適なFetchができる - Cons - TypeScript - ライブラリはもうちょっと枯れてほしい - Worker Threadsが難しい(Go比較、個人的な感想です) - GraphQL - 性能の悪いクエリの解決が必要 - 攻撃的なクエリの防御が必要 まとめ1