Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Hasura とは何者か メリット・デメリット
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yudai Shinnoki
August 28, 2020
Programming
3k
10
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Hasura とは何者か メリット・デメリット
Yudai Shinnoki
August 28, 2020
More Decks by Yudai Shinnoki
See All by Yudai Shinnoki
AWS “““触って””” みた
shinnoki
0
150
体に馴染む開発環境 ~ghqはいいぞ~
shinnoki
0
1.9k
組織戦略と GraphQL、Hasura
shinnoki
2
4.9k
TypeScript と React Hooks と GraphQL のステキな関係性
shinnoki
2
520
リリース前に知りたいネイティブのあれこれ
shinnoki
0
1.6k
外部委託の立場から半ば強引にLaravelを導入した話
shinnoki
0
740
Other Decks in Programming
See All in Programming
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
690
GKE で Pod の見方を変えたら、スケールアウト時の挙動を真に捉えられた話
stkk
0
130
Agents on Rails - Rails at Scale 2026
irinanazarova
0
120
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
260
What We Talk About When We Talk About XP
m_seki
2
660
Heart of Swift Concurrency
koher
0
930
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
3k
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
130
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
280
すこし踏み込む CancellationToken
htkym
2
650
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
190
Java 27新機能 / Java 27 new features
kishida
2
150
Featured
See All Featured
Building an army of robots
kneath
307
46k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
500
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Visualization
eitanlees
152
17k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
430
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
540
Facilitating Awesome Meetings
lara
57
7.1k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Bash Introduction
62gerente
615
220k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
Transcript
Hasura とは何者か メリット・デメリット 2020/08/27 GraphQL Tokyo Meetup #10 shinnoki (@konoki_nannoki)
自己紹介 shinnoki (@konoki_nannoki) - WASD Inc. CTO - デジちゃいむ https://digichime.com/
というサービスを開発しています - Hasura / React / React Native - なりゆきで Hasura を本番投入したので 日本に布教しないと詰むマン
Hasura 概要 - 正式名称は Hasura GraphQL Engine - だけど今回は Hasura
って呼びます - 2019/12 に v1.0.0、現在 v1.3.1 - PostgreSQL から GraphQL API が生えてくるやつ - MySQL 対応も開発中らしい - GraphQL リクエストを 1 つの SQL に変換して DB に投げる - バックエンドと DB 間の N+1 問題は原理的に発生しないのでパフォーマンスが良い - SQL としてのパフォーマンスまではわからない - JWT ベースの認証認可 - Websocket を使った GraphQL Subscription - 中身はイベントベースではなく Live Query
GraphQL 界隈における Hasura
vs Prisma (間違っていたらすみません ) - GraphQL 自動生成系のくくりでよく比較される - 実際に Prisma
v1 はサーバーを立てる必要があり割と似ていた - Prisma v2 は ORM ライブラリっぽい感じ - Prisma は裏方だが Hasura はリクエストを直接受ける前提 Frontend Database Server Prisma Frontend Hasura PostgreSQL graphql-yoga / Apollo Server/ GraphQL Nexus など MySQL / PostgreSQL
Schema First vs Code First Schema First - Apollo Server,
gqlgen など - メリット - スキーマに従ってフロントエンド、バックエンド を並行して実装できる - スキーマを設計してしまえば、バックエンドも codegen の恩恵を得られる - デメリット - 自分たちで GraphQL スキーマを設計するに は知識が求められる - スキーマ設計を誤ると後から実装しづらいこと に気づく Code First - graphql-ruby, TypeGraphQL, Nexus など - メリット - ライブラリに従っていれば知識がなくてもある 程度ベストプラクティスに沿ったスキーマにな る - デメリット - フロントエンドはバックエンドの実装を待つ形 になる
GraphQL 界隈での Prisma, Hasura の立ち位置 - Prisma は Model First
(勝手に命名) - Schema First の発展型 - Model を定義すると CRUD を自動生成してくれるので設計の負担が少ない - AWS Amplify CLI とかも同じ感じ - Hasura は Database First (勝手に命名) - Code First の発展型 - あくまで定義するのは PostgreSQL のテーブル - 開発スタイルは Code First と同じだが DB と密結合で App 層が極限まで薄い - graphql-codegen と組み合わせると DB の定義をフロントまで引っ張ってこれる!! - ここまで徹底しているのは唯一無二? - どちらも Schema First や Code First の弱点を補っている
mBaaS 界隈における Hasura
現代 Web 開発に求められるもの - 新規開発においてブラウザ/ネイティブアプリ両対応と リアルタイム通信は初期要件になくても必ず話に出てくる - なるだろうなと思ったら実際そうなった - なんとか回避するか、頑張って実装するかの二択
- Firebase や AWS Amplify などの mBaaS を使うと比較的楽にこの要望を叶えられる - つらみも多い - Hasura も mBaaS (の DB) っぽい使い方ができる - 複数クライアント対応しやすい GraphQL API - GraphQL Subscription によるリアルタイム通信 チャット つけられる? Webと アプリ両方 できるよね
cf) 3factor App - Hasura 社が提唱しているアーキテクチャパターン https://3factor.app - Realtime GraphQL,
Reliable eventing, Async serverless - The Twelve-Factor App とはレイヤーも違うしちょっとイキリすぎ
Firebase vs AWS Amplify vs Hasura Firebase AWS Amplify Hasura
動作環境 マネージド マネージド Docker コンテナ / マネージド (Hasura Cloud) 認証 Firebase Authentication Amazon Cognito 任意の JWT 認証 (Auth0, Firebase Authentication, AWS Cognitoなど) / Webhook 認証 データベース NoSQL (Cloud Firestore / Realtime Database) NoSQL (Amazon DynamoDB) RDB (PostgreSQL) クライアント gRPC (Firebase SDK) GraphQL (Amplify SDK / AppSync SDK) 任意のGraphQLクライアント
mBaaS 界隈での Hasura の立ち位置 - Docker で動かせる - docker-compose を使って気軽にローカル環境を立てられる
- デプロイ先の選択肢が多い - データベースが PostgreSQL - RDB のノウハウをそのまま流用できる - スキーマがあるので設計に秩序を保ちやすい - Rails と Hasura で同じ DB を参照するとかもできる - Firestore や DynamoDB に比べてしまうとスケーラビリティは - 金で殴れば毎秒100万回の更新を100万ユーザーが受け取れるらしい https://github.com/hasura/graphql-engine/blob/master/architecture/live-queries.md
デモ(時間があれば)
実際使ってみて
Hasura のデメリット - 実装の中身まで把握するには Haskell がわかる必要がある - ビジネスロジックが最初から複雑な場合メリットは少ない - パーミッションが複雑になるとしんどい
- フィールド名が snake_case なのは受け入れる必要がある - 設定でフィールド名を上書きできるが設定の手間より受け入れたほうが楽 - 日本語の情報が少なすぎる!!
もし Hasura が流行ったら - Database First な開発 - Foreign Key
制約や Not Null 制約をはじめ PostgreSQL の機能をフルに使う必要があるので、 データベースを設計できるエンジニアが重宝される - 嫌われがちな SQL Function や Database Trigger が見直される世界線があるかも ...?
Follow Me shinnoki (@konoki_nannoki) - 最近ひたすら Hasura 成分多めです - 時間あるときは木曜朝にもくもく会やってます
- 少しでも Hasura に興味が湧いたらぜひフォローください! - みんなも Hasura 使って!!