FaunaDBというDatabaseサービスを使ってみた

技術ネタ
この記事は約5分で読めます。

こんにちわ、hisayukiです。

先日JSFrameworkのまとめを書きました。

JS含めフロントまわりを勉強していると、フロントJSからバックエンドを通らず直接DBを操作するアーキテクチャを目にすることが増えました🤔
そのなかでよく見たのがFirebaseのFireStore、もう一つ個人的にいいなと思ったのがFaunaDB

あんまり日本では流行ってる感ないんですが、結構凄いので紹介しようと思います❗

スポンサーリンク

FaunaDBとは?

ACID特性を持ちつつスケーラビリティも備えた分散データベースに属するものです。
Twitterの元インフラディレクターのEvan Weaverと元DB技術担当のMatt Freelsが先導して発足した、サーバレス時代のために作られたクラウドデータベースサービスです。

  • スケーラブル
  • グローバル
  • セーフティ
  • 信頼性
  • 強い整合性
  • 一貫性

これらを保持したまま、データの正確性と規模を犠牲にすることなく、アプリケーション開発からデータベースというボトルネックを排除する事を目的としています。

「動的アプリケーションを作るためのデータベースは FaunaDB だけあればいい」

Faunaは世界からこう言われることを目指してます!

FaunaDBのいいところ!

登録・ログインなど

Githubアカウントでログインが可能なので、登録手続きは特に無いです。
また無料分を使う分にはクレッジットカードの登録も不要です。

とりあえず使ってみよう!がすぐに出来ます。

細かく設定しなくてもDBが作れる

Databaseを作るのに細かい設定や専用言語も特に必要ありません。
コンソール画面から2分くらあれば出来ます。

作り方はQiitaに纏めました❗

【FaunaDB】ドキュメントデータベースの新規作成 - Qiita
FaunaDBのデータベースの**コンソール**での作り方について書き残します! 今回は**ドキュメント型**のモデルのでの作成になります。 <font color="Red">**今回は書き残しな...

スケーリングの意識が不要

インフラについてはすべてmanagedになっているため、アクセス数に応じたスケーリングについて考える必要はありません。
ユーザーはDatabaseの事を意識せずにアプリケーションの製造に注力できます❗

CLIも完備

コンソール画面からでもすぐ準備可能ですが、CLIも完備してます❗
CLIからの場合は基本メールアドレスとパスワードでの認証になります。

普段Githubアカウントで利用している場合は、AccountAPIKeyを発行してログイン時に使います。

細かい権限設定

権限についてはDatabaseごとに設定することができます。
更にそこから、Collection単位、Index単位、スキーマ単位で制限をかけることが出来ます❗

GraphQL APIを搭載

デフォルトでGraphQLが使えるようになっているため、GraphQL API用のサーバーを建てる必要がありません。

DBが速攻出来て、GraphQLでデータを引けるようにしたら簡易的なCRUDなら即完成。
マイクロサービスなら更新系がそれだけで出来上がってしまいます。

Functionすら書かずに出来てしまうことも出てきますね🤔

ローカル環境も作れる

Container環境や、オンプレへのインストールすることも出来ます❗

FaunaDB Account | Release Notes

見えてないところ

Teams機能

無料枠では1つのAccountに付き1つのコンソールで、招待機能的なのは見つからなかったです。
GUIは1人でしか使えないのかもしれない・・・🤔

CLIからのアクセスについては複数のAPIKeyを発行できます。
なので複数人でデータを操作できないわけではないです。

有料プランとかだと、Teams機能的なのがあるかもなのですがココについては未確定です💦

セキュリティ面の懸念

ここもまだ分かってないのですが、シークレットキーの保持方法です。
参照系のシークレットキーをフロントエンドに持つのはそこまで問題ないのですが・・・

登録系のキーをJSに埋め込みたくないですよね〜🤔
FireStoreもそうなのですが、フロントJSから直接登録が出来るというのも1つのメリットなんですよね。

このあたりはまだ勉強中なので、セキュアにわたす方法はあるかもしれないです。
Netlifyとかは環境変数渡せるので、そこから引っ張れたら解決ですね。

独自言語「FQL」

なぜ独自言語使っちゃったの?w

まだ使ったこと無いけど、独自言語使っちゃうと学習コスト上がっちゃうんですよね・・・w
Firebase同様にFunction作成も出来るのですが、どうもFQLでしか書けないっぽい
ただ、慣れ親しんでるSQLの代わりのような事もできるためRDBを使ってきた側としては使いやすさも増すかもしれないですね。

SQLの代わりにもなり、FunctionもかけるFQLという独自言語ですがFaunaDBを本格的に使うなら習得したほうがよさそうです。
まだ、このアタリも追々調べていこうかなって感じです。

FireStoreとの差

無料枠としてスペックとしては以下の通り

FaunaFireStore
Storage容量10G1G
ドキュメントの書き込み5万/日2万/日
ドキュメントの読み取り10万/日5万/日
データ転送(下り)50MB/日無料(リージョン内)

圧倒的にFaunaのが無料枠が多いです❗

加えて、Faunaの特徴はデータモデルをDocuments以外にもすることが出来る点です。
Relational型としてもDocument型としてもGraph型としても使えるようになってます。

まとめ

今回はFaunaDBでいいなって思ったところを並べてみました!
個人的にはDocumentDBGraphQLも使ったことないですが、Databaseとしては今後の展望が楽しみなサービスです!

残念なことにまだまだ日本語情報が少なく、Qiitaに至ってはまだ1件とかでした・・・w
たくさんの人が使って情報が増えていくと言いなと思います❗

次なにか作る時には使ってみようと思っているので、また記事を新しく書くかこの記事を更新していきます❗

コメント