👌
GCP Cloud RunでLitestreamを利用する
https://zenn.dev/voluntas/scraps/f4939cbe92525c を見て、Cloud Run でもホストできると個人的にはうれしいかもなーと思って実験してみた
コツとしては、
- 第二世代の実行環境 で動作させる
- コンテナ起動時にrestoreしてGCSからデータをロードするようにする
- 最大インスタンス数を1にする
-
LitestreamのGCS対応はCloud Runの実行環境のサービスアカウントでは実行されないので、サービスアカウントを作り、SecretManager経由で鍵情報をファイルとしてマウントし、
GOOGLE_APPLICATION_CREDENTIALS
としてパスで与える。
といったところだった。
litestream replicate -exec
が実行している内容を考えると、定期的にGCSへ更新する処理が走るので、Always on CPU はおそらく有効にした方がよいが、簡単なアプリで実験してみた感じではだいたいはちゃんと保存されてはいそうだった。最小インスタンス数の指定がなければアクセスがなければインスタンス数は0になるので有効にして運用してもメリットがある価格ぐらいにはなりそうな気もする
最大インスタンス数を1にしていてもデプロイ時に複数バージョン混在してしまうことがあるので不特定多数で使うには微妙そうだけど、個人の趣味ユースで雑に立てる分には安く運用できてよいかもしれない。
第二世代であれば、NFSなどもマウントできるので、sqlite自体をNFS上に設置 すれば書き込みできるインスタンスが複数台起動してもよくなるがコンテナまわりの起動のややこしさがでてくるのでどうかなーという感じである。
Discussion