FaunaをServerlessFrameworkで管理してみた

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

お久しぶりです、hisayukiです。

見返してみるとこの記事で5記事目、全然書けてないですね😇
同時に勉強も少なかった気がします、ガツガツ書いてた次期のが学びも多かった気がします。

来年はきちんと勉強時間を取るスタイルにしないとですね。

スポンサーリンク

久しぶりにFaunaのお話

さて、本題に戻ります。
久しぶりにFaunaのお話をしようかなと思います。

あっというまにもうすぐ2年で、サービス名もFaunaDBからFaunaに変更になりました。
Faunaについてはずっと追っかけてて、やれることも増えてきたんですが・・・
日本ではあまり流行らないですね🤔

QiitaでもZennでも記事は増えないですし、日本語情報は相変わらず少ないですし。
サービスとしては競合いなくてNoSQLとRDSのいいとこ取っててイケてるように見えてるんですけど

魅力を伝えることに苦戦してますが、ある意味日本語情報を他で伝えてるページが少ないのでここで日本語情報どんどん発信するのはありかもと思ってます😂

FaunaのIaC化

僕も久しぶりにブログを追っていて、少し前のこちらの記事。

Implementing Fauna as infrastructure as code with Serverless Framework
Fauna combines the relational power, strong consistency, and schema capabilities of a relational database with the flexibility and scalability of documents, all...

なんとFaunaで使用するDBリソースをServerless Frameworkでコードとして管理することが出来るようになりました!
コンソールからでもCLIからでも手作業で作成していた部分がコード管理できて、CI/CDとして回せるようになるのは非常にありがたいです!

というわけで実際にやってみたコードはこちらになります。

GitHub - mori-hisayuki/serverless-fauna
Contribute to mori-hisayuki/serverless-fauna development by creating an account on GitHub.

詳しいコードの説明とかは別途Zennとかに書こうかなと思います。
とりあえず雑に書いてFaunaのリソースだけを管理できるようにしました。

やってみた感じ

よかったところ

インフラリソースのコード化

やはりコード管理出来るの楽!!!

出来たこととしては

  • Collectionの作成
  • Indexの作成
  • Roleの作成
  • Functionの作成

までが今回お試しで出来ることがわかりました。

加えて消したくないCollectionも設定1つ加えることでremove時に消さずにリソースとして残して置ける仕組みになってます。
マスターとかではなくトランザクションデータなどは誤って消さないように設定を追加しておくことでCI/CDで回すことも出来そうです!

懸念点

AWSのアカウントが必要

ServerlessFrameworkを使う以上は避けられれないですね・・・
AWSのリソースを1つも作らない場合でもCloudFormationで管理するためAWSアカウントが必要となります。

個人的にはFauna部分だけでやれたら嬉しかったのですが、それは今後に期待したい。

全リソース管理ではない

ほとんどのリソースが管理可能なのですが、Faunaの一番大きい単位であるDatabaseは含めることができませんでした。
Faunaの特徴でもありますが、Faunaを操作するシークレットキーがはアカウントに紐付いてるのではなくDatabaseごとに紐付いています。
CLIでも同様で一旦アカウントログインコマンドでメールアドレス&パスワードかDatabaseのシークレットキーでのログインしたあとに、各Databaseへの操作が出来るようになります。

Serverless Frameworkでも同様にDatabaseのシークレットキーが必要になるためDatabaseは既に作られてることが前提となっています。

リリースが止まってる

このプラグインなんですが、まだ正式リリースではないんですよね
バージョンも0.2.0です。

ですが、どうも開発が進んでない気がしています。
リリースも1回のみ(今年の8月)なので採用するにはちょっt勇気がいりますね。

まとめ

気持ち的には複数環境で全く同じインフラリソースを作ることができるIaC化は本当にありがたい機能です。
コードに残すことで自動化し、人の手で作業する部分を減らすことで人的ミスも減りリスクも減らせます。
そのためFaunaのリソースが自動で作れる仕組みが出来た事自体にはとても喜ばしいのですが、現状のままでは採用するの結構難しいのかなって思ってしまいます。

せめて正規リリース、欲を言えばAWSとの切り離しが出来ると尚使いみちがあると思います。

ひとまずは正規リリースを楽しみにしてます❗

コメント