YAPC::Japan::Online 2022 Track B
![じわじわとPerlからGoに移行しようとしている俺達のマイクロサービシーズの紹介 / The migrating to microservices in Go from Monolith in Perl](https://cdn-ak-scissors.b.st-hatena.com/image/square/6930f1f72dd5b1454c330eb65f64f990810c59cb/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F288c259e8bf84018aaf78337ec8d45ec%2Fslide_0.jpg%3F20684204)
「AWS Amplify Advent Calendar 2021」 19日目の記事となります 記事の概要 2021/11/23に、Amplify GraphQL Transformer v2(以下v2と表記)が発表されました[1]。以前のGraphQL Transformer v1(以下v1と表記)から大幅なアップデートがいくつも入っており、Breaking Changeも少なからずあります。この記事では GraphQL Transformer v2の主な変更点 GraphQL Transformer v1からのMigration時の注意事項 の2点についてまとめてみました! 想定読者 Amplify CLIでGraphQL APIを利用している人 これから利用を検討しているが、既存のブログ記事などがv1で記述されており差分が知りたい人 話さないこと(及び参考資料) Amplify 自体
Today marks the first release of the GraphQL spec ratified by the GraphQL Foundation. This is the culmination of three years of work, both technical and procedural. This is a proud moment and one worth celebrating. What took so long?The last ratified spec release was over three years ago, in June 2018. What took so long for this release? Certainly a worldwide pandemic didnʼt help our collective fo
今週、10月23日(土)に発売されるWEB+DB PRESS Vol.125に掲載される、特集記事「GraphQL完全ガイド」を執筆しました。よろしくおねがいします。 桃栗三年、GraphQL 6年 原稿を書く過程で、知っているはずのことでも改めて調べなおしたりする。特に歴史みたいなのが好きで、GraphQLは2015年6月に発表されて、2018年に安定版になって、みたいなのをずっと調べてしまう。GraphQLってなんかすごい最近っぽく感じていたけど、発表されてからもう6年経つらしい。 ちなみにjQuery 1.0は2006年8月にリリースされていて、Reactは2013年5月に公開されたらしい。6年というのはだいたいそれくらい。 6年で、GraphQLはよく普及した。Facebookはもちろん、GitHubもTwitterもNetflixも、GraphQLを使っている。GitHubの新し
GraphQL クライアントの選び方について 現状大きく次のような選択肢があります。 Apollo Client Relay Urql 他に react-query や SWR などの GraphQL に特化していないものを使うこともできるらしいがあまりメリットがピンときていない GraphQL クライアントにやってもらいたいこと 上記は Web の GraphQL クライアントの比較しか書いておらず、他のプラットフォーム(Flutter とか)でも選定軸が持てるように、もう少し "GraphQL クライアント" と呼ばれるものに何を期待しているのかを書き出してみる。 graphql リクエストを送れる 最低限の機能です。 エンドポイント、認証トークン は共通のものとして準備して、あとはクエリをのっけたらリクエストが作れたらいいでしょう。 キャッシュを保ってくれる キャッシュの正規化ってな
by Ben Kraft Kevin has written about our multi-year project to replace our Python 2.7 monolith with services written in Go. As part of the transition to a service-oriented architecture, we decided to migrate all our REST APIs to GraphQL—including new APIs for service-to-service communication. Even with Apollo Federation handling much of our fan-out, we have over 300 distinct GraphQL requests from
aini_graphql_vuln.md GraphQL採用サービスに追加で脆弱性を報告した話 前置き 個人の活動であり文責は全てmalaにあります。 網羅的に調べているわけではないので、自分が利用していたり、調査したサービスに他の脆弱性が無いことを保証するものではないです。 概要 ainiというサービス https://helloaini.com/ のGraphQLでの情報露出の脆弱性に関する記事を見て、追加で調べたところ、Webサイトやアプリ上から参照できない他のユーザーのフォロー/フォロワー関係をGraphQL経由で取得することが出来ることを発見した。 9月24日(金)の日付変わったころに報告したところ、迅速に修正された。修正されたようなので開示して良いか訪ねたところ、問題ないとの返信をもらった。 malaから問い合わせ 報告内容と、脆弱性が修正された旨をブログ、Twitter等で公
ソウゾウの Software Engineer をやっています、@mookjp です。 8/10 の記事「メルカリShopsの技術スタックと、その選定理由」では、メルカリ Shops のアーキテクチャについて、その全体像を紹介しました。 この記事では、そのうちの BFF(Backend for Frontend) レイヤとして用意した GraphQL サーバについて、NestJS を使った実装例を交えて紹介します。 GraphQL とは GraphQL サーバ周辺の構成 NestJS とは GraphQL Module NestJS で Code First なスキーマ定義をする Object types の定義 Query と Mutation の定義 GraphQL スキーマの生成 スキーマの Breaking Change (破壊的変更)を防ぐ DataLoader を使って Bat
By Andrew Nguonly, Armando Magalhães, Obi-Ike Nwoke, Shervin Afshar, Sreyashi Das, Tongliang Liu, Wei Liu, Yucheng Zeng BackgroundOver the next few years, most content on Netflix will come from Netflix’s own Studio. From the moment a Netflix film or series is pitched and long before it becomes available on Netflix, it goes through many phases. This happens at an unprecedented scale and introduces
最近調べていた Apollo Federation についてのメモです。 Apollo Federation の概要と、Next.js の API Routes で Apollo Federation を使う例をまとめています。 Apollo Federationとは? 以前 Netflix の GraphQL マイクロサービスアーキテクチャが話題になりました。その構成を支えているのが Apollo Federation です。 Apollo Federation は、複数の GraphQL マイクロサービスをゲートウェイでまとめて、1 つの GraphQL エンドポイントとして提供するものです。 Apollo Federation を使うことで、それぞれのマイクロサービス間で依存する処理を良い感じに統合してくれます。 例えば、投稿情報は Post マイクロサービスにあり、その投稿の投稿者
2018年の初めくらいから、仕事でGraphQL APIを何度も作っている。サーバーサイドもクライアントサイドも実装している。 最近クライアント側にRelayを使ってみている。 GraphQLのクライアントとしてはApolloを使う場合が多いと思うが、Facebook製のRelayもかなりよくできている。以前はTypeScriptに対応していなかったが、今はTypeScriptも使える。最近のバージョンではhooksのAPIがexperimentalではなくなり、ReactのSuspense API(Suspense for Data Fetchingは使わずに)と合わせて使える。 RelayはGraphQLのスキーマに制約を設けることで、クライアント側のAPIがデータの再取得やページネーションなどを抽象化している。換言すると、Relayからデータの再取得やページネーションに必要なスキーマ
GraphQLの静的解析ライブラリgqlanalysis 副業をしているAppify TechnologiesにてGraphQLの静的解析ツールをGoで書けるライブラリgqlanalysisを作りました。またそれに合わせクエリのセレクションにidの追加忘れを指摘するlackidとgqlgoオーガナイゼーションで開発した静的解析ツールをまとめて実行できるgqlintも公開されています。 gqlanalysisを用いるとGraphQLのスキーマやクエリファイルに対するLinterを簡単に作ることができます。gqlanalysisはGoの静的解析ツールライブラリのgo/analysisに似た構造で作ってあります。 go/analysisと同様にAnalyzerという単位で解析を行います。Analyzerは別のAnalyzerの解析結果を用いることができるため、静的解析ツールをモジュール化できます
この記事で紹介している機能はApollo Sandboxという名称でログインなしで利用可能となりました。 複数のエンドポイントをダッシュボードで管理したい場合などはこの記事の手順でログインして利用した方が便利ですが、とりあえずクエリ発行してレスポンス見たい!という場合は上記の Apollo Sandbox を利用した方が便利そうです。 Apollo Studioで Graph 作成時に設定していたエンドポイントはサイドメニューから設定してください。 Apollo Studio? ブラウザ上から指定したエンドポイントへ向けて GraphQL クエリを発行し Response を確認できる無料のツールです(有料プランも有り)。 Apollo チームが開発しているものですが、クエリを実行して Response を見るだけなので、 ApolloServer, ApolloClient などのライブ
Backends for Frontends的に、1画面につき1つずつAPIを作っていると、画面のリストを作って、それぞれ1画面につき1個ずつAPIを作っていくことになるので、進捗の把握がやりやすかった。10画面あって3APIできてたら進捗30%ということになる。 グラフをたどって開発することになる GraphQLでAPIを作っていると、「実はこの画面を組み立てるためのクエリは、あちらの画面の条件を変えたものである」みたいなことが起きるようになる。たとえば、トップページではサマリを表示していて、もっと見るを押すと全件表示するような場合とか。 このように、着手しようとするともう作るものがなかったりとか、逆に、作るときに、他の画面から使う想定でパラメータの設計をするなど、考えることが増えたりもする。 スキーマに沿ってグラフをたどるだけで画面を組み立てられるのは良いことだけど、開発内容の依存関係
Netflix is known for its loosely coupled and highly scalable microservice architecture. Independent services allow for evolving at different paces and scaling independently. Yet they add complexity for use cases that span multiple services. Rather than exposing 100s of microservices to UI developers, Netflix offers a unified API aggregation layer at the edge. UI developers love the simplicity of w
React.Suspenseの力を最大化する、GraphQLの次世代ディレクティブ @ defer と @ stream ReactのSuspense、素敵ですよね。 この記事ではGraphQLのワーキンググループで仕様の策定が進んでいる@deferと@streamについて解説します。@deferと@streamはReactのSuspenseの力を引き出す、注目すべきディレクティブです。 なお、これらのディレクティブの仕様はワーキンググループでほぼ合意できていますが確定した仕様ではないことに注意してください。 Suspenseは最高だ! あるブログの記事の一覧ページを例に見てみます。 記事一覧ページを表示するためのGraphQLのクエリは次のようになります。1 query { articles(page: 1) { # 記事一覧(1ページ目) title # タイトル body # 文章(
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く