こんにちわ、hisayukiです。
先日JSFrameworkのまとめを書きました。
JS含めフロントまわりを勉強していると、フロントJSからバックエンドを通らず直接DBを操作するアーキテクチャを目にすることが増えました
そのなかでよく見たのがFirebaseのFireStore、もう一つ個人的にいいなと思ったのがFaunaDB
あんまり日本では流行ってる感ないんですが、結構凄いので紹介しようと思います❗
FaunaDBとは?
ACID特性を持ちつつスケーラビリティも備えた分散データベースに属するものです。
Twitterの元インフラディレクターのEvan Weaverと元DB技術担当のMatt Freelsが先導して発足した、サーバレス時代のために作られたクラウドデータベースサービスです。
- スケーラブル
- グローバル
- セーフティ
- 信頼性
- 強い整合性
- 一貫性
これらを保持したまま、データの正確性と規模を犠牲にすることなく、アプリケーション開発からデータベースというボトルネックを排除する事を目的としています。
「動的アプリケーションを作るためのデータベースは FaunaDB だけあればいい」
Faunaは世界からこう言われることを目指してます!
FaunaDBのいいところ!
登録・ログインなど
Githubアカウントでログインが可能なので、登録手続きは特に無いです。
また無料分を使う分にはクレッジットカードの登録も不要です。
とりあえず使ってみよう!がすぐに出来ます。
細かく設定しなくてもDBが作れる
Databaseを作るのに細かい設定や専用言語も特に必要ありません。
コンソール画面から2分くらあれば出来ます。
作り方はQiitaに纏めました❗
スケーリングの意識が不要
インフラについてはすべてmanagedになっているため、アクセス数に応じたスケーリングについて考える必要はありません。
ユーザーはDatabaseの事を意識せずにアプリケーションの製造に注力できます❗
CLIも完備
コンソール画面からでもすぐ準備可能ですが、CLIも完備してます❗
CLIからの場合は基本メールアドレスとパスワードでの認証になります。
普段Githubアカウントで利用している場合は、AccountAPIKeyを発行してログイン時に使います。
細かい権限設定
権限についてはDatabaseごとに設定することができます。
更にそこから、Collection単位、Index単位、スキーマ単位で制限をかけることが出来ます❗
GraphQL APIを搭載
デフォルトでGraphQLが使えるようになっているため、GraphQL API用のサーバーを建てる必要がありません。
DBが速攻出来て、GraphQLでデータを引けるようにしたら簡易的なCRUDなら即完成。
マイクロサービスなら更新系がそれだけで出来上がってしまいます。
Functionすら書かずに出来てしまうことも出てきますね
ローカル環境も作れる
Container環境や、オンプレへのインストールすることも出来ます❗
見えてないところ
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との差
無料枠としてスペックとしては以下の通り
Fauna | FireStore | |
Storage容量 | 10G | 1G |
ドキュメントの書き込み | 5万/日 | 2万/日 |
ドキュメントの読み取り | 10万/日 | 5万/日 |
データ転送(下り) | 50MB/日 | 無料(リージョン内) |
圧倒的にFaunaのが無料枠が多いです❗
加えて、Faunaの特徴はデータモデルをDocuments以外にもすることが出来る点です。
Relational型としてもDocument型としてもGraph型としても使えるようになってます。
まとめ
今回はFaunaDBでいいなって思ったところを並べてみました!
個人的にはDocumentDBもGraphQLも使ったことないですが、Databaseとしては今後の展望が楽しみなサービスです!
残念なことにまだまだ日本語情報が少なく、Qiitaに至ってはまだ1件とかでした・・・w
たくさんの人が使って情報が増えていくと言いなと思います❗
次なにか作る時には使ってみようと思っているので、また記事を新しく書くかこの記事を更新していきます❗
コメント