GraphQL における N+1 問題の解決の機構として Dataloder と呼ばれるものがあるが、Go でこれを行うときは gqlgen + graph-gophers/dataloader という組み合わせがよく使われるようだ。後者は gqlgen の公式ドキュメントからも参照されているので、gqlgen を使っていれば自然とそうなりそう。 このへんの話は 【GraphQL ×Go】 N+1問題を解決するgqlgen + dataloaderの実装方法とCacheの実装オプション - LayerXエンジニアブログ などに詳しい。 さて、この dataloaders ってのを普通に使ってコードを書いてみるとわかるのだけど、ロードのためのキーとして string を、ロードされた結果として interface{} を返すような実装になっている。つまり実際にデータベースにアクセスするよ
上の資料でも書いてるんですが、要点を言うと以下のようなことを主張している。API の設計手法として、以下の2つのパターンが考えられる ・Resource-basedAPI ・Usecase-basedAPI Usecase-based というのは要はクライアントの要求にそのまま沿った形でAPI を作るということだ。しかし、UI やその他クライアントの要求というのは変わりやすいものなので、そのたびにいちいちAPI を変更しないといけないとか、API に一貫性がなくて使いにくいとか、1つの endpoint で多数の要求に対処する "神API" が作られてパフォーマンスが悪化する、というような問題が起こる。 したがって、注意深く RESTfulAPI を設計すると Resource-based になる。ここで言っている Resource というのはテーブル設計にやや近いが、そのまま
はじめに こんにちは、ソウゾウSoftware Engineerの@sue71です。連載:メルカリShops 開発の裏側 Vol.2の13日目を担当させていただきます。 以前メルカリメルカリShopsの技術スタックと、その選定理由でBFFの実装にGraphQLを採用していることをお伝えしました。メルカリShopsをリリースしてから約半年たった今、これまでを振り返ってGraphQLサーバーを実装する上での課題やあらかじめ考えておくと良い項目をまとめてみました。また、本記事ではメルカリShopsでGraphQLの実装としてApolloを採用しているため、Apolloの利用が前提の話もいくつか混在しています。予めご容赦ください。GraphQLの説明や、メルカリShopsの実装方法に関しては以前こちらの記事で紹介しています。こちらも是非ご覧ください。 パフォーマンス課題GraphQLは、アプリ
REST,GraphQL, andgRPC are 3 popular forms client-server and server-to-server communication. Choosing can be difficult, so this conciseguide can help. In each section, an example will be provided to illustrate retrieving a user. RESTNotes HTTP paths describing data, e.g. /users as a collection of users Easily discoverable data, e.g. user ID 3 would be at /users/3. All of the CRUD (Create Read U
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く