Soumettre la recherche
Mettre en ligne
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
•
Télécharger en tant que PPTX, PDF
•
0 j'aime
•
401 vues
洵
洵貴 佐川
Suivre
https://ibm-developer.connpass.com/event/302483/ 勉強会資料です。
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 65
Télécharger maintenant
Recommandé
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
NTT DATA Technology & Innovation
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
NTT DATA Technology & Innovation
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
Guide To AGPL
Guide To AGPL
Mikiya Okuno
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
Recommandé
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
NTT DATA Technology & Innovation
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
NTT DATA Technology & Innovation
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
Guide To AGPL
Guide To AGPL
Mikiya Okuno
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
[GKE & Spanner 勉強会] GKE 入門
[GKE & Spanner 勉強会] GKE 入門
Google Cloud Platform - Japan
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
Kohei Tokunaga
オープンソースのAPIゲートウェイ Kong ご紹介
オープンソースのAPIゲートウェイ Kong ご紹介
briscola-tokyo
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
Google Cloud Platform - Japan
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
gree_tech
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
Takeru Maehara
例外設計における大罪
例外設計における大罪
Takuto Wada
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
DockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐる
Kohei Tokunaga
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
SQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォーク
ke-m kamekoopa
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NET
Takayoshi Tanaka
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
Shiroyagi Corporation
Contenu connexe
Tendances
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
[GKE & Spanner 勉強会] GKE 入門
[GKE & Spanner 勉強会] GKE 入門
Google Cloud Platform - Japan
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
Kohei Tokunaga
オープンソースのAPIゲートウェイ Kong ご紹介
オープンソースのAPIゲートウェイ Kong ご紹介
briscola-tokyo
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
Google Cloud Platform - Japan
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
gree_tech
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
Takeru Maehara
例外設計における大罪
例外設計における大罪
Takuto Wada
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
DockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐる
Kohei Tokunaga
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
SQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォーク
ke-m kamekoopa
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
Tendances
(20)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
[GKE & Spanner 勉強会] GKE 入門
[GKE & Spanner 勉強会] GKE 入門
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
オープンソースのAPIゲートウェイ Kong ご紹介
オープンソースのAPIゲートウェイ Kong ご紹介
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
例外設計における大罪
例外設計における大罪
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
DockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐる
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
SQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォーク
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Similaire à REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NET
Takayoshi Tanaka
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
Shiroyagi Corporation
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Takuya Iwatsuka
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
DeNA
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
拓将 平林
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
Microsoft Tech Summit 2017
20200807勉強会~gRPCに入門しよう~
20200807勉強会~gRPCに入門しよう~
TatsuyaKono1
Node-REDのノード開発容易化ツールNode generator
Node-REDのノード開発容易化ツールNode generator
BMXUG
【初心者向け】API を使ってクラウドの管理を自動化しよう
【初心者向け】API を使ってクラウドの管理を自動化しよう
富士通クラウドテクノロジーズ株式会社
2016 06-30-deep-learning-archi
2016 06-30-deep-learning-archi
Daisuke Nagao
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
ゆるふわAzure Functions
ゆるふわAzure Functions
Keiji Kamebuchi
FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係
moai kids
Microsoft Graph API Library for Go
Microsoft Graph API Library for Go
yaegashi
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa
Takahiro Tsuchiya
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Kazuya Sugimoto
Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18
Masatomo Ito
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
Developers Summit
Similaire à REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
(20)
20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NET
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
20200807勉強会~gRPCに入門しよう~
20200807勉強会~gRPCに入門しよう~
Node-REDのノード開発容易化ツールNode generator
Node-REDのノード開発容易化ツールNode generator
【初心者向け】API を使ってクラウドの管理を自動化しよう
【初心者向け】API を使ってクラウドの管理を自動化しよう
2016 06-30-deep-learning-archi
2016 06-30-deep-learning-archi
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
ゆるふわAzure Functions
ゆるふわAzure Functions
FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係
Microsoft Graph API Library for Go
Microsoft Graph API Library for Go
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
Dernier
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperleger Tokyo Meetup
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
Akihiro Kadohata
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
瑛一 西口
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
Ayachika Kitazaki
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
keikoitakurag
情報を表現するときのポイント
情報を表現するときのポイント
onozaty
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
iwashiira2ctf
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
Toru Tamaki
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
Toru Tamaki
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
iPride Co., Ltd.
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
Sadaomi Nishi
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
Satoshi Makita
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
kokinagano2
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
atsushi061452
Dernier
(14)
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
情報を表現するときのポイント
情報を表現するときのポイント
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
1.
クラウドネイティブの旅に出よう: REST API、gRPC、GraphQL触ってみた IBM Tech/Developer
Dojo 2023/12/06 Copyright ©2023 NS Solutions Corporation, IBM Corporation. 1
2.
Beyond the Twelve-Factor
App回の再掲 Copyright ©2023 NS Solutions Corporation, IBM Corporation. 2
3.
本日の目標 • REST API、gRPC、GraphQLの違いと使いどころ が、なんとなく分かり、語れるようになる! Copyright
©2023 NS Solutions Corporation, IBM Corporation. 3
4.
本日のアジェンダ 1. オープニング 2. REST
APIのご紹介 3. gRPCのご紹介 4. GraphQLのご紹介 5. QA・クロージング Copyright ©2023 NS Solutions Corporation, IBM Corporation. 4
5.
はじめに 当イベントは日本IBMおよび日鉄ソリューションズの有志エンジニアによって企画された勉強会です。 クラウドネイティブやマイクロサービスなどのテーマを中心に、今後も色々な勉強会・イベントを開催する予定です。 本勉強会の内容は、エンジニア個人の見解であり、所属する企業の公式見解ではありません。 セッション中はマイクミュートでの参加にご協力お願いします。 本イベントは録画してアーカイブ公開する予定ですので、その点ご了承ください。 本発表で利用している製品の名称およびロゴは下記の個人、組織または企業の商標となります。 OpenAPI(旧Swagger)・gRPCは、米国及びその他の国におけるThe Linux Foundationの商標または登録商標である。 GraphQLは、米国及びその他の国におけるGraphQL
Foundationの商標または登録商標である。 Javaは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。 IBM、WebSphere MQ は、IBM Corporation の登録商標または商標です。 NS(ロゴ)、NSSOL、NS Solutions は、日鉄ソリューションズ株式会社の登録商標です。 その他本文記載の会社名及び製品名は、それぞれ各社の商標又は登録商標です。 Copyright ©2023 NS Solutions Corporation, IBM Corporation. 5
6.
自己紹介 <所属> 日本IBM システムズ・エンジニアリング <経歴> 2016年に日本IBMシステムズ・エンジニアリングに入社 スクラムマスターとしてweb/モバイルアプリ開発を経験 し、2021年からIBMでカスタマーサクセスマネージャー <趣味など> ペットの猫と遊ぶ、ハッカソン参加 Copyright ©2023
NS Solutions Corporation, IBM Corporation. 佐川 洵貴(さがわ じゅんき) 6
7.
自己紹介 <所属> 日鉄ソリューションズ システム研究開発センター <経歴> 2019 年に日鉄ソリューションズに新卒入社。 スクラムでのクラウドネイティブ案件においてアーキテ クト兼開発者を経験。 <趣味など> 日本酒、(非電源含む)ゲーム、ごま豆腐 Copyright
©2023 NS Solutions Corporation, IBM Corporation. 喜多 司(きた つかさ) 7
8.
Copyright ©2023 NS
Solutions Corporation, IBM Corporation. 望月 雄登(もちづき ゆうと) <所属> 日鉄ソリューションズ システム研究開発センター <経歴> 2022 年に日鉄ソリューションズに新卒入社。 BFF(Backend For Frontend)構成全体の監視を導入す る案件を担当。 <趣味など> アニメ、ゲーム、将棋 自己紹介 8
9.
本日のアジェンダ 1. オープニング 2. REST
APIのご紹介 3. gRPCのご紹介 4. GraphQLのご紹介 5. QA・クロージング Copyright ©2023 NS Solutions Corporation, IBM Corporation. 9
10.
REST API Copyright ©2023
NS Solutions Corporation, IBM Corporation. 10
11.
APIとは • Application Programing
Interface – インターフェース:二つの物事の間を仲介する窓口となるもの – アプリケーションとミドルウェアを繋げるインターフェース(やりとりを行うために作られた受け口) • Web API – 外部サービスとの連携できる(同一システムではなく、他のシステムの機能を使う) – 種類はいろいろあるが、web APIという場合はほぼ【REST API】のこと – 他のサービスの機能を使うインターフェース Copyright ©2023 NS Solutions Corporation, IBM Corporation. 11 サーバー 外部サービスA A P I ブラウザでアクセス! ページどうぞ これに関するデータくれ! どうぞ〜 受け取ったインプット をもとに処理を行い、 結果を返す A P I 外部サービスB
12.
データ通信の歴史 Copyright ©2023 NS
Solutions Corporation, IBM Corporation. 12 1960 RPC リモートプロシージャコール ネットワークを通じ、 別のコンピュータ上で処理 1999 SOAP マイクロソフト発 Simple Object Access Protocol(SOAP) HTTPプロトコルを用い、XML形式メッセージを通信 2000 REST REpresentative State Transfer 本日説明 2015 2016 GraphQL 本日説明 gRPC 本日説明
13.
REST APIとは? • コンピューター同士を接続し、分散処理を実現するための設計思想の一つ •
REpresentative State Transfer • 4原則 1. アドレス可能性 (Addressability) 2. 統一インターフェース (Uniform Interface) 3. ステートレス性 (Stateless) 4. 接続性 (Connectability) Copyright ©2023 NS Solutions Corporation, IBM Corporation. 13
14.
REST APIの基本 • HTTP通信でリクエストを送信 •
リクエスト先はURLで指定 • JSONデータを返却 Copyright ©2023 NS Solutions Corporation, IBM Corporation. 14 ステータス 意味 200番台 正常時 300番台 リダイレクト時 400番台 クライアント側でのエラー時 500番台 サーバー側でのエラー時 HTTPメソッド 利用用途 GET リソースの取得 POST リソースの新規追加 PUT リソースの更新 DELETE リソースの削除 http://test.com:8443/user/age?name=sagawa GETリクエストの例) scheme ホスト名 パス クエリパラメーター http方式で【scheme】、test.comサーバー【ホスト名】に通信し、ユーザーの 年齢情報をください(パス)、インプットとして、name=sagawaを渡します。 HTTPリクエストを受け取ったサーバーは、インプット情報を使い、 データベースなどの検索をした結果【age】を200番と一緒に返す
15.
ExpressにおけるREST API開発例 Copyright ©2023
NS Solutions Corporation, IBM Corporation. 15 var express = require('express'); var router = express.Router(); //api/profileにリクエストがきたときの処理 router.get('/profile', function(req, res, next) { res.json({ 'name': 'Junki Sagawa', 'age': 29 'hobby': 'football' }); }); router.get ('/hoge', function(req, res, next) { //todo }); module.exports = router; /api/hogeにきたときの処理。 各APIをURLおよびメソッドごとに作成して いく メソッドが異なれば同じURLで指定可能 router.get(‘/hoge’)とrouter.post(‘/hoge’)は異 なるAPI /api/profile(URI)にHTTPリクエストがきた ときの処理。 返すデータはjson形式で記載
16.
REST APIで実装 Copyright ©2023
NS Solutions Corporation, IBM Corporation. 16 フロント開発チームA API1 API2 API開発チームB API1 API開発チームC このデータも返却してほしい! Excel仕様に則ったリクエスト エラーになる...。 昨日デプロイした更新を Excel定義書に更新忘れてた フロント – バックエンド通信 バックエンド間通信、マイクロサービス間通信 アプリ/BFF 追加仕様がどんどんくる。 Python Node.js
17.
REST APIで実装 Copyright ©2023
NS Solutions Corporation, IBM Corporation. 17 フロント開発チームA API1 API2 API開発チームB API1 API開発チームC このデータも返却してほしい! Excel仕様に則ったリクエスト エラーになる...。 昨日デプロイした更新を Excel定義書に更新忘れてた フロント – バックエンド通信 バックエンド間通信、マイクロサービス間通信 アプリ/BFF 追加仕様がどんどんくる。 Python Node.js スキーマ駆動開 のススメ
18.
OpenAPI概要 • OpenAPI仕様(OAS) – プログラミング言語にとらわれない 標準的なインタフェース記述の定義 •
OpenAPIドキュメント – OpenAPI仕様に準拠して APIまたはAPIの要素を定義したテキストファイル – yaml形式、json形式で記述 • OpenAPI周辺ツール – OpenAPIドキュメントのエディター – OpenAPIドキュメントの可視化ツール – 定義からコードの自動生成! Copyright ©2023 NS Solutions Corporation, IBM Corporation. 18 <OpenAPIドキュメント> <可視化>
19.
スキーマ駆動開発の流れ Copyright ©2023 NS
Solutions Corporation, IBM Corporation. 19 OpenAPI仕様可視化 stab API API1 API2 バックエンド開発B&C フロント開発A スタブ自動生成 雛形自動生成 • FastAPI • Django • Express なんでもござれ API開発を待たずにスタブと通信しながら開発 コール先を スタブから本APIへ 切り替える ダミーデータ スキーマに従い リクエスト アプリ v1.0 OpenAPIエディター
20.
REST API –
スキーマ駆動開発 まとめ Copyright ©2023 NS Solutions Corporation, IBM Corporation. 20 RESTはHTTP通信でGETやPOST、DELETEといったリクエストを送信して、JSON形式のデータを受け取る APIの定義は、ExcelではなくOpenAPIという仕様で書くと調子が良い スタブAPIや、APIの雛形コードは自動生成できちゃう フロント – バックエンドの通信だけでなく、マイクロサービス間のやり取りもREST APIで実装できる
21.
ところがどっこい、 REST APIにも課題があります。 Copyright ©2023
NS Solutions Corporation, IBM Corporation. 21
22.
RESTの課題 オーバーフェッチ: 過剰な取得 • 例:
https://swapi.co/api/people/1/にGETリクエストを投げる Copyright ©2023 NS Solutions Corporation, IBM Corporation. 22 { "birth_year": "19BBY", "created": "2014-12-09T13:50:51.644000Z", "edited": "2014-12-20T21:17:56.891000Z", "eye_color": "blue", "films": [ "https://swapi.co/api/films/2/", "https://swapi.co/api/films/6/", "https://swapi.co/api/films/3/", "https://swapi.co/api/films/1/", "https://swapi.co/api/films/7/" ], "gender": "male", "hair_color": "blond", "height": "172", "homeworld": "https://swapi.co/api/planets/1/", "mass": "77", "name": "Luke Skywalker", "skin_color": "fair", "species": [ "https://swapi.co/api/species/1/" ], "starships": [ "https://swapi.co/api/starships/12/", "https://swapi.co/api/starships/22/" ], "url": "https://swapi.co/api/people/1/", "vehicles": [ "https://swapi.co/api/vehicles/14/", "https://swapi.co/api/vehicles/30/" ] } 本来欲しいデータ { "gender": "male", "hair_color": "blond", "height": "172", "name": "Luke Skywalker", }
23.
RESTの課題 アンダーフェッチ: 不足する取得 • 前の例で、出演映画タイトルの一覧を取得する場合 •
https://swapi.co/api/people/1/にGET ↓ • 以下のそれぞれにGET "films": [ "https://swapi.co/api/films/2/", "https://swapi.co/api/films/6/", "https://swapi.co/api/films/3/", "https://swapi.co/api/films/1/", "https://swapi.co/api/films/7/" ] 23 filmからのレスポンス { "title": "The Empire Strikes Back", "episode_id": 5, "opening_crawl": "……", "director": "Irvin Kershner", "producer": "Gary Kurtz, Rick McCallum", "release_date": "1980-05-17", "characters": [ "https://swapi.co/api/people/1/", "https://swapi.co/api/peole/2/", "https://swapi.co/api/people/3/", "https://swapi.co/api/people/4/", "https://swapi.co/api/people/26/" ], "planets": [ //…… 大量のルートのリスト ], "starships": [ //…… 大量のルートのリスト ], "vehicles": [ //…… 大量のルートのリスト ], "species": [ //…… 大量のルートのリスト ], "created": "2014-12-12T11:26:24.656000Z", "edited": "2017-04-19T10:57:29.544256Z", "url": "https://swapi.co/api/films/2/" }
24.
RESTの課題 エンドポイント管理 • 過大・過小の過大を解決しようとユースケース毎にAPIを作ると、エンドポイントがどんどん増える • 多くの大規模アプリケーションでは、HTTPリクエストの回数を減らすための最適化されたエンドポイントを作 成しています •
このデータも欲しい!→ 既存APIはすでに利用されているから別でAPI一本増やすかあ • /api/movie/title • /api/movie/detail • /api/movie/charactors • ..... Copyright ©2023 NS Solutions Corporation, IBM Corporation. 24 図足す
25.
RESTの課題 双方向通信は無理 • 通常、HTTP 1.1に基づいて構築されており、リクエスト・レスポンス型の通信モデルとなる •
HTTP2でサポートされている双方向のストリーミング通信はできない Copyright ©2023 NS Solutions Corporation, IBM Corporation. 25
26.
本日のアジェンダ 1. オープニング 2. REST
APIのご紹介 3. gRPCのご紹介 4. GraphQLのご紹介 5. QA・クロージング Copyright ©2023 NS Solutions Corporation, IBM Corporation. 26
27.
gRPC Copyright ©2023 NS
Solutions Corporation, IBM Corporation. 27
28.
gRPC 概要 • Google
製の RPC で、OSS – gRPC の g は、general-purpose の g? • gRPC – Wikipedia • 型定義に Protocol Buffers を使用していて、各言語毎に型定義のソースコードを生成できるため、 サービス間で異なる言語を使っていたとしても翻訳が不要 • HTTP/2 を使っているため高速 Copyright ©2023 NS Solutions Corporation, IBM Corporation. 28
29.
REST の課題(再掲) • パフォーマンス低下に繋がる –
オーバーフェッチング – アンダーフェッチング • エンドポイントの数が多くなり管理が大変 • 双方向通信はできない Copyright ©2023 NS Solutions Corporation, IBM Corporation. 29
30.
gRPC のアプローチ • JSON
のような人間に分かりやすい形式ではなく、バイナリをやり取りすることで通信を軽量化 • エンドポイントは一つ • HTTP/2 に則ることで双方向通信もカバー Copyright ©2023 NS Solutions Corporation, IBM Corporation. 30
31.
GraphQLとの差異 • GraphQL も
gRPC もどちらも、REST API よりもパフォーマンスを改善するが – GraphQL はフロントエンド開発寄りの発想 – gRPC はバックエンド開発寄りの発想 • ブラウザから gRPC リクエストを送る技術は発展途上 – grpc-web Copyright ©2023 NS Solutions Corporation, IBM Corporation. 31
32.
gRPC の開発フロー概要 • .proto
ファイルを作成 – Protocol Buffers というスキーマ言語を使ってスキーマを定義 • .proto ファイルから各種言語の型定義を生成 – Protoc コマンドが各種言語に対応したファイルを自動生成 • 生成されたファイルを import してアプリケーションを実装 Copyright ©2023 NS Solutions Corporation, IBM Corporation. 32
33.
Unary RPC • 使用例 –
通常の REST API と同様 • GET、POST、PATCH、DELETEメ ソッドなどで問題なく実現されて いたもの Copyright ©2023 NS Solutions Corporation, IBM Corporation. 33
34.
Server Streaming RPC •
使用例 – ファイルのダウンロード – バッチ処理 – サーバからのリアルタイム通知 Copyright ©2023 NS Solutions Corporation, IBM Corporation. 34
35.
Client Streaming RPC •
使用例 – ファイルのアップロード – サーバが逐次処理可能なもの Copyright ©2023 NS Solutions Corporation, IBM Corporation. 35
36.
Bidirectional Streaming RPC •
使用例 – リアルタイム性を要求する処理 • オンラインゲーム • チャット Copyright ©2023 NS Solutions Corporation, IBM Corporation. 36
37.
デモ・ハンズオン • https://killercoda.com/tofuchic/scenario/grpc-quickstart – 次のような流れを体験できるハンズオンです •
gRPC のサンプルアプリをサーバ・クライアントでそれぞれ動かす • スキーマである .proto ファイルを編集する • 新しいスキーマに沿ってクライアントアプリを更新して動かす • サーバアプリも更新して動かす – 時間の都合上ハイペースで進めるため、 まずはデモとして見ていただき、 後からゆっくりハンズオンに取り組んでいただいても大丈夫です Copyright ©2023 NS Solutions Corporation, IBM Corporation. 37
38.
gRPC のまとめ REST API
の課題 gRPC のアプローチ 備考 パフォーマンスが出な い場合がある バイナリ通信によって 高速化 ネットワークレイテンシは削減できるものの、様々なサービス に向けた汎用的なメソッドを実装するとデータ量が増え、各 サービス内の処理時にメモリ不足に陥る可能性もある エンドポイント管理が 大変 1 つのエンドポイント に対して複数のメソッ ドを実装していく エンドポイントは 1 つで済むが、代わりに様々なサービス向け に独自のメソッドを実装することになる可能性もある また、ブラウザからの呼び出しはまだ発展途上 双方向通信ができない HTTP/2によって4つの 通信パターンを網羅し、 双方向通信も可能 general-purposeというだけあってあらゆるユースケースに対応 できるポテンシャルがある Copyright ©2023 NS Solutions Corporation, IBM Corporation. 38
39.
本日のアジェンダ 1. オープニング 2. REST
APIのご紹介 3. gRPCのご紹介 4. GraphQLのご紹介 5. QA・クロージング Copyright ©2023 NS Solutions Corporation, IBM Corporation. 39
40.
GraphQL Copyright ©2023 NS
Solutions Corporation, IBM Corporation. 40
41.
GraphQLとは APIのための問い合わせ言語 使用例:
SWAPI(https://graphql.org/swapi-graphql/) query { person(personID:5) { name birthYear created filmConnection { films { title } } } } { "data": { "person": { "name": "Leia Organa", "birthYear": "19BBY", "created": "2014-12-10T15:20:09.791000Z", "filmConnection": { "films": [ { "title": "A New Hope" }, { "title": "The Empire Strikes Back" }, { "title": "Return of the Jedi" }, { "title": "Revenge of the Sith" } ] } } } } Copyright ©2023 NS Solutions Corporation, IBM Corporation. 41
42.
GraphQLの設計原則 階層構造 GraphQLのクエリは階層構造になっています。フィールドは他のフィールドの入れ子になり、クエリはレスポ ンスと同じ構造を取ります。
プロダクト中心 GraphQLは、データを必要とするクライアントの言語やランタイムに従って実装されます。 強い型付け GraphQLサーバはGraphQLの型システムに保証されています。それぞれのフィールドは固有の型を持ち、 バリデーションされます。 自己参照 GraphQL言語はGraphQLサーバ自身の型システムを問い合わせられるようにできています。 Copyright ©2023 NS Solutions Corporation, IBM Corporation. 42
43.
GraphQLの性質 GraphQLは仕様にすぎず、それ以上のアーキテクチャの決定権は開発者にあります。 エンドポイントは1つです。
クエリで参照できるすべてのフィールドが型で定義されています。 クエリが入れ子になっている場合は、実行時に関連するオブジェクトをすべて探し出します。つまり、1回のHTTPリクエ ストで2つの異なる種類のデータを受け取ることができます。 多様な言語でのサーバー実装のライブラリが存在します。(C#、Clojure、Elixir、Erlang、Go、Groovy、Java、 JavaScript、.NET、PHP、Python、Scala、Ruby、...) Copyright ©2023 NS Solutions Corporation, IBM Corporation. 43
44.
構成例 Copyright ©2023 NS
Solutions Corporation, IBM Corporation. 44 クライアント (エンドユーザ等) graphQLサーバ マイクロサービス 実行、DB REST API 実行、DB クエリ クライアント (エンドユーザ等) graphQLサーバ DB クエリ gRPC 実行、DB
45.
GraphQLの現状 採用企業 GitHub、ニューヨーク・タイムズ、IBM、X(旧Twitter)、Yelp
カンファレンス GraphQL Summit、GraphQL Finland、GraphQL Europe クライアントツール - Relay(https://facebook.github.io/relay/) - Apollo(https://www.apollographql.com/) Copyright ©2023 NS Solutions Corporation, IBM Corporation. 45
46.
GraphQL実現のための構成 リゾルバ var photos =
[] const resolvers = { Query: { totalPhotos: () => photos.length }, Mutation: { postPhoto(parent, args) { photos.push(args) return true } } } スキーマ type Photo { id: ID! name: String! url: String! description: String } type Query { totalPhotos: Int! allPhotos: [Photo!]! } type Mutation { postPhoto( name: String! description: String category: PhotoCategory=PORTRAIT ): Photo! } schema { query: Query mutation: Mutation } クエリ query { totalPhotos allPhotos } Copyright ©2023 NS Solutions Corporation, IBM Corporation. 46
47.
GraphQLのクエリの書き方 ルート型 - オペレーションに対応する型。最上位階層に必ず存在する型。 -
Query(取得), Mutation(操作), Subscription(監視) フィールド 選択セット クエリ引数 Copyright ©2023 NS Solutions Corporation, IBM Corporation. 47 query { person(personID:5) { name birthYear created filmConnection { films { title } } } } サブスクリプション WebSocketによるリアルタイム通信で、該当のミューテーションを検知すると変更後のデータを取得 (クエリとミューテーションはHTTP通信) 例: 新規投稿のプッシュ通知
48.
GraphQLの導入時に意識すること セキュリティ - 1つのクエリで膨大なリクエストが可能 -
対策例 - タイムアウト、データ量制限、深さ制限、複雑度制限 - モニタ (Apollo Engine) Copyright ©2023 NS Solutions Corporation, IBM Corporation. 48
49.
GraphQLのデメリット 学習・実装コスト - スキーマの定義など、従来よりも大変な面がある
パフォーマンス - 膨大なリクエストに対するサーバ側のパフォーマンス維持を考慮する必要がある セキュリティ - 従来のAPIよりも自由度が高い分、不正なクエリが実行される可能性が高くなる キャッシュ - 毎回異なるクエリが実行されると、キャッシュが使えない Copyright ©2023 NS Solutions Corporation, IBM Corporation. 49
50.
ハンズオン SWAPI (https://graphql.org/swapi-graphql/)
スキーマ: https://github.com/graphql/swapi-graphql/blob/master/schema.graphql Copyright ©2023 NS Solutions Corporation, IBM Corporation. 50
51.
適当なクエリ a Copyright ©2023 NS
Solutions Corporation, IBM Corporation. 51
52.
すべての人を取得 query { allPeople { people
{ name } } } Copyright ©2023 NS Solutions Corporation, IBM Corporation. 52
53.
複数のクエリ query { allPeople { people
{ name } } } query { allFilms { films { title } } } Copyright ©2023 NS Solutions Corporation, IBM Corporation. 53
54.
該当する人のみを取得 query { person(personID:5) { name birthYear created } } Copyright
©2023 NS Solutions Corporation, IBM Corporation. 54
55.
クエリの入れ子 query { person(personID:5) { name birthYear created filmConnection
{ films { id title } } } } Copyright ©2023 NS Solutions Corporation, IBM Corporation. 55
56.
複数の入れ子 query { person(personID:5) { name birthYear created filmConnection
{ films { id title characterConnection { characters { name } } } } } } Copyright ©2023 NS Solutions Corporation, IBM Corporation. 56
57.
GraphQLの名前の由来 Copyright ©2023 NS
Solutions Corporation, IBM Corporation. 57 person person person film film film name Leia Organa title A New Hope ・・・ ・・・
58.
GraphQLの名前の由来 Copyright ©2023 NS
Solutions Corporation, IBM Corporation. 58 person film film name Leia Organa title A New Hope ・・・ ・・・
59.
GraphQLの名前の由来 Copyright ©2023 NS
Solutions Corporation, IBM Corporation. 59 person film film name Leia Organa title A New Hope ・・・
60.
GraphQL のまとめ REST API
の課題 GraphQL のアプローチ 備考 パフォーマンスが出な い場合がある クエリとその階層構造の 自由度によってオーバー フェッチとアンダー フェッチを解決 たとえば膨大な計算量を要する危険なクエリが実行できないよ う、複雑度制限をかけるなど、GraphQL サーバに対してセ キュリティ設定を施すといった対応が必要 エンドポイント管理が 大変 1 つのエンドポイントに 対して複数のリゾルバを 実装していく リゾルバ実装に関する学習コストが必要 双方向通信ができない Subscription によるサー バからクライアントへの リアルタイム通知をサ ポート gRPC における Server Streaming RPC 相当の機能。そのため、 Client Streaming RPC や Bidirectional Streaming RPC 相当の 通信は実現できない Copyright ©2023 NS Solutions Corporation, IBM Corporation. 60
61.
本日のアジェンダ 1. オープニング 2. REST
APIのご紹介 3. gRPCのご紹介 4. GraphQLのご紹介 5. QA・クロージング Copyright ©2023 NS Solutions Corporation, IBM Corporation. 61
62.
本日のまとめ “12 Factor
App” をクラウドネイティブに対応できるように発展させた15 項目の方法論である “Beyond the Twelve-Factor App” には、API First が追加されています APIと一口に言っても、最近はREST APIだけでなく、gRPCやGraphQLもよく耳にします そこで本日は、REST API、gRPC、GraphQLの概要をデモを交えながらお伝えしました Call to Action! - アプリケーション開発時にREST API以外も選択肢として持ちましょう - 興味がある方は手を動かしてみましょう Copyright ©2023 NS Solutions Corporation, IBM Corporation. 62
63.
Q&A • GraphQL を利用する際は、メソッドの共通化などは難しいのでしょうか?それともよく利用する形のものは、 スキーマ層に別途用意するなどの手法を取るのでしょうか? –
クエリの共通化という意味であれば、fragment という機能があります。これは、いくつかのクエリで共通 して取得するデータを一度だけ定義すれば、各クエリからその定義を参照することのできる機能です。 – 型に関する共通化で言うと、interface や union、その他 directives といった共通化に使える機能が用意され ています。詳しくは GraphQL のスキーマについて調べてみてください。 • REST API には 4 つの課題があり、gRPC や GraphQL はその内いくつかの課題を解決している、とおっしゃっ ていましたが、具体的にそれぞれどの課題を解決していますでしょうか? – gRPC が解決している点 • パフォーマンス:オーバーフェッチとアンダーフェッチを直接的に解決することはしませんが、バイナ リ通信によってパフォーマンスを向上できます。 • エンドポイント管理: エンドポイントは1つです。 • 双方向通信は無理: 双方向通信を含む4 つの通信パターンを紹介しました。 – GraphQL が解決している点 • オーバーフェッチ: クエリで取得するデータを絞り込めます。 • アンダーフェッチ: クエリを入れ子にして呼び出し回数1回のみで欲しいデータを取得できます。 • エンドポイント管理: エンドポイントは1つです。 Copyright ©2023 NS Solutions Corporation, IBM Corporation. 63
64.
Q&A • GraphQL にはセキュリティ上の課題がある、とのお話でしたが、プロダクトやサービスの開発において、どの ような対策をされているでしょうか? –
一例としてこちらの記事をご紹介いたします。 • 「リスクを伴う設定」「悪意のあるクエリ」に対して然るべき対策を取った上で、GraphQL 対応の WAF を利用することで多層防御することが挙げられています。 • セキュリティの問題に関連して、プロダクトやサービスの開発では、フロントエンド(React など)から直接 GraphQL を呼び出すのが一般的でしょうか?それともセキュリティを考慮してサーバを 1 つ挟むなどの対応が 必要でしょうか? – フロントエンドから GraphQL サーバを呼び出すのが一般的です。 – 但し、上述したように「リスクを伴う設定」「悪意のあるクエリ」への対策を GraphQL サーバに施した上 で、場合によっては間に WAF を挟むというアーキテクチャにすることもあるようです。 Copyright ©2023 NS Solutions Corporation, IBM Corporation. 64
65.
We are hiring!! •
日鉄ソリューションズでは、 クラウドネイティブ技術を用いて お客様の DX を推進する仲間を募集中です。 • ご興味ある方は、 ぜひお問い合わせください。 弊社人事より、ご連絡を差し上げます。 • 🔍「NSSOL キャリア採用」 • 採用ページ: • https://www.nssol.nipponsteel.com/re cruit/careers/ Copyright ©2023 NS Solutions Corporation, IBM Corporation. 65
Télécharger maintenant