Closed10

重たすぎる腰を上げてHasuraを触ってみる

meijinmeijin

Hasura / GraphQLに期待していること

素人なので、まずは期待していることをまとめる

自社サービスに導入する

マナリンクに導入したい。すでに稼働しているMySQLがあるので、そいつをGraphQL移行したり、部分的に対応してみたりできると嬉しい

リアルタイム通信が実装できる

噂で聞いたけど、リアルタイム通信が実装できるっぽいので、そしたらFirebase卒業とかも検討できるので知りたい。

検索系のユースケース実装が改善できる

一覧系のページは、検索クエリが乱立してSQLだったり、RESTful APIが負債化しがちなイメージが有る。

更新系の処理はDDD的にやりたいので、Laravelで実装したいけど、閲覧系は割と別でもいいんじゃないのかなぁ・・・

Nuxt.jsのasyncDataをBFF的な扱いにして、Nuxtから直接GraphQL実行して検索系のユースケースをそれで済ませられないか?

meijinmeijin

ローカルで動いたところまで

自社のDBがdocker-composeですでに動いているので、以下のようにdocker-composeを設定した

docker-compose network設定は面倒なので割愛した。host.docker.internalってHostを書くのが肝

    command:
    - graphql-engine
    - --mysql-host 
    - host.docker.internal
    - --mysql-user 
    - root
    - --mysql-port 
    - '3306'
    - --mysql-dbname 
    - XXX
    - --mysql-password 
    - ''
    - serve 
meijinmeijin

MySQLバージョン

8以上に対応らしい。弊社はAurora使っている関係でまだ5.7なので、ここは我慢かな。

meijinmeijin

現時点でわかっていないこと

  • リアルタイム通信ができるのか
  • 認証済みのユーザーしかアクセスできない、はどう実装するか?
  • 外部キー等で関連しているデータの引っ張り方(GraphQL自体の知識の問題)

追加

  • デプロイはどうするのか?AWSとかに上げれる?ECS上で動くと嬉しいんだけど
meijinmeijin

Subscriptionとかいうやつ、API Explorerで動かせられないものかね

うーん、まあこれNuxtでも動かしてみるかー

meijinmeijin

Subscription is not supported

"message": "Subscriptions over MySQL not supported"

meijinmeijin

現状

  • リアルタイム通信はMySQL経由だと未対応
  • 認証はWebhook実装したらいけそうだが、実際動かさないと感覚がわからない。ただ可能は可能
  • デプロイは未調査
  • 外部キーも未調査

総じて、Postgres使ったほうがまだ扱いが安定してそう。やってみた途端未対応なんですってなる可能性があるので。Preview版のうちはGraphQL自体の勉強とかに当てるほうがいいかな。

このスクラップは2020/12/09にクローズされました