🏹

【ポエム】無料で運営したい個人開発の技術スタックで思うこと

2023/11/04に公開

結論

最悪消えても良いデータ&センシティブなデータを扱わないのであれば下記がいいかなと思ってます。
https://zenn.dev/yusukebe/articles/e8ff26c8507799

以下ポエム

筆者はサーバーサイドエンジニアなので、処理をGo・Pythonで書きたいけど、無料の範囲内でCloudRunやCloud Functionに上げたところで永続化手段は?という課題があります。
当然、RDBMSを使えばいいのですが、Free Postgres Databasesにあるように、DBの無料化は簡単じゃないんやでということがわかります。
実際の運用でもクラウドでお金がかかりやすいのはデータベースです。
https://fly.io/blog/free-postgres/

NoSQL

NoSQL、例えばFirestore(ドキュメント型)を使えば、おおよそ無料枠で運営できそうですが、デメリットとしてはSQLライクな文法の運用となってしまいます。
またスキーマレスなので、型付き言語とORMを併用してできるだけフリーダムな値が入らないように配慮は必要です。
また、筆者がFirestoreをあまり触ったことがないので言いにくいのですが、トランザクションを貼るのも少し面倒そうな印象です。
https://zenn.dev/yucatio/articles/7c4ba0d0138ca9#更新がトランザクションで行われることを保証するセキュリティルール
一番嫌なのは、やっぱりRDBMSだよねになった際、移行作業が辛いことです。

CloudRun+SQLite+Litestream

ストレージサービスに、SQLiteをレプリケーションさせる構成です。
メリットはSQLiteなのでSQLは問題なのですが、初期構築がやや面倒という印象です。
ぱぱっと作りたい初期の個人開発で、これを用意する時間が取られてしまうと本末転倒です。
https://qiita.com/faable01/items/ac7418d671c6db5b966f

ポスグレが無料(xGB制限あり)のPaaS

上記であげたfly.ioなどを使うのが慣れた構成でできるので早いと思います。
DB無料の課題は解決するのですが、HTMLのテンプレートで書いていく部分がなかなか辛いです。
動きをつけようとすると、jsで手続き的な記述が必要です。
jQueryを入れると多少は簡易に記述できるにしても、個人的にはメンテナンスするのに気が進まなくなります。
ただし今はChatGPTがあるので、「このボタンをローディング中はdisableにするには」等である程度は生成してくれると思います。

最後に

色々と書きましたが、SQLiteをいい感じにレプリケーションしてくれる+宣言的にコンポーネントを書きたいという筆者の需要を満たすのは、下記なのかなと思いました。
実際にローカル開発と本番デプロイするのは簡単でした。
https://zenn.dev/yusukebe/articles/e8ff26c8507799

色々デメリットを書きましたが、何を選択するかは要件に依るので、これが最強というものはありません。
ポエムを読んでいただきありがとうございました。

追記

下記はCloudRun使えるので嬉しい😍
https://zenn.dev/sapuri/articles/f03027f4d66792

Discussion