【ポエム】無料で運営したい個人開発の技術スタックで思うこと
結論
最悪消えても良いデータ&センシティブなデータを扱わないのであれば下記がいいかなと思ってます。
以下ポエム
筆者はサーバーサイドエンジニアなので、処理をGo・Pythonで書きたいけど、無料の範囲内でCloudRunやCloud Functionに上げたところで永続化手段は?という課題があります。
当然、RDBMSを使えばいいのですが、Free Postgres Databasesにあるように、DBの無料化は簡単じゃないんやでということがわかります。
実際の運用でもクラウドでお金がかかりやすいのはデータベースです。
NoSQL
NoSQL、例えばFirestore(ドキュメント型)を使えば、おおよそ無料枠で運営できそうですが、デメリットとしてはSQLライクな文法の運用となってしまいます。
またスキーマレスなので、型付き言語とORMを併用してできるだけフリーダムな値が入らないように配慮は必要です。
また、筆者がFirestoreをあまり触ったことがないので言いにくいのですが、トランザクションを貼るのも少し面倒そうな印象です。
一番嫌なのは、やっぱりRDBMSだよねになった際、移行作業が辛いことです。
CloudRun+SQLite+Litestream
ストレージサービスに、SQLiteをレプリケーションさせる構成です。
メリットはSQLiteなのでSQLは問題なのですが、初期構築がやや面倒という印象です。
ぱぱっと作りたい初期の個人開発で、これを用意する時間が取られてしまうと本末転倒です。
ポスグレが無料(xGB制限あり)のPaaS
上記であげたfly.io
などを使うのが慣れた構成でできるので早いと思います。
DB無料の課題は解決するのですが、HTMLのテンプレートで書いていく部分がなかなか辛いです。
動きをつけようとすると、jsで手続き的な記述が必要です。
jQueryを入れると多少は簡易に記述できるにしても、個人的にはメンテナンスするのに気が進まなくなります。
ただし今はChatGPTがあるので、「このボタンをローディング中はdisableにするには」等である程度は生成してくれると思います。
最後に
色々と書きましたが、SQLiteをいい感じにレプリケーションしてくれる+宣言的にコンポーネントを書きたいという筆者の需要を満たすのは、下記なのかなと思いました。
実際にローカル開発と本番デプロイするのは簡単でした。
色々デメリットを書きましたが、何を選択するかは要件に依るので、これが最強というものはありません。
ポエムを読んでいただきありがとうございました。
追記
下記はCloudRun使えるので嬉しい😍
Discussion