pig's diary

何でも忘れるので万年初心者ね

HASURA、AWS AppSync - GraphQL PaaS比較

あくまで現状の理解です。加筆、修正すると思います。

HASURA

  • GraphQL PaaS
  • DBにテーブルを作るとQuery/Mutationエンドポイントを自動生成するスタイル
  • Actionsは独自エンドポイント。スキーマを拡張し、HTTP経由で処理する。AWS Lamda相当を自前で用意する感じに見える。
  • PostgreSQL, MySQL, SQL Server, Google BigQuery, Oracle, MongoDB
  • カスタマイズされたGraphiQLが使いやすい
  • Subscriptionが動くのかが試せてない。できるらしいけど、どうやってDBの変更を検知するんだ?
  • Free tier 60 requests per minute らしいけど、すぐ止まる。実験が全然進まない。サブスクは$99/月からで敷居が高い。
  • 他GraphQLをガッチャンコ(Schema Stiching)できる。ApolloでいうFederation
  • 全く試してないがAuthenticationはアクセスごと、JWTでなど選べるようだった。Authorizationはテーブルごと、カラムごと、行ごとに、MongoDB風のJSONベースのマッチャーで許可させるよう。画面でコチコチやるしかないのか?
  • 使い始めやすく高機能な印象。DB直挿しエンドポイント+ブラウザクライアントである程度まで作れ、Actions拡張もし易そう。ただユーザ管理、Actionsの構築は別でやる必要がある。サービスを跨いだとき、スピードが出るのだろうか?

AWS AppSync

  • GraphQL PaaS
  • スキーマを画面でぽちぽち作る。
  • ResolverはVTL(Apache Velocity Template Language)。 Lamda、DynamoDBアクセスなどご自由に
  • AppSyncはAmplify推し。AmplifyはAWSの様々なサービスを初期化できる入り口だが、AppSyncに対しては、独自ディレクティブを交えた正規化スキーマを書かせ、それが展開されると(それが実際のスキーマ)、エンドポイントや、DB Table(Dynamo限定)の型設定を自動生成する。これが強力だが、恐らく一度ejectすると威力が失われ管理が一気に大変になる
  • 独自ディレクティブの中でも @auth は鬼そうで、Cognito User Poolと連携した、GraphQL Fieldごと x ロールごとの権限管理が可能そう。
  • "AppSync" というだけありSubscription周りが強力、DynamoDBと連携したSubscriptionエンドポイントを簡単に作れる。
  • アクセス単位課金で実験できたので、安く試せた。
  • AWS AppSyncは「AWS API GatewayのGraphQL版」という感じで、VTLさえわかれば動きもシンプル、使い始めやすい印象。AmplifyこそAppSyncの価値を引き出すフレームワークと思うが、正直初見では仕様が広大すぎて、影響が把握しづらい印象。(AWS初心者の感想です)