開発中にFirebaseのCloud Formation使用制限にかかった話
FirebaseのNoSQLDBを使っていたら制限にかかってしまった話
早期引退してまったり生きたいと思っているWEBエンジニアのToAです。
ここ半年ほどネット副業で早期引退の足掛かりを探し続けていましたが永続的に稼げる仕組みからは程遠いなという結論に至りました。
まぁ永続的に稼げる仕組みなんてほぼ存在しないのですが、少なくとも何か大きな変化がない限りは継続できる仕組みを構築しないと早期リタイアはできません。
そして長い間考えてみたのですが良い案が浮かばなかったので、よくある方法としてWEBアプリケーションの運用を考えてみます。この長い間なにを考えていたのかはこちらの記事を参考にして頂けると嬉しいです。
稼げる自作WEBアプリを構築する方法を自分の中で考えてみる | Programming News (factoryautomation.blog)
以前作って放置していたIPO(新規公開株)の初値がいくらになるか予想するまとめサイトを復活させて運用することにします。
ただ現在2022年3月なのですが、表示されているデータは2021年12月末までのデータになっています。2か月ちょっと放置されていますがこの理由は保守がとにかく面倒だからです。ちなみに既に公開しているので皆さんもこちらのリンクからアクセスできます。
まぁこのサイトの有用性は今後Youtubeなどで動画にしてアピールしていきます。
保守が面倒になる理由は以下の通りです。
- 新規上場する企業は毎月2~15社ほど出てくる(平均すると月8社くらい?)
- 今のWEBアプリの仕組みだと新規上場会社が出てくるたびにデプロイ作業が必要
- 1回のデプロイ作業で5分ほどかかるので結構手間がある
こんな感じですね。とにかく毎月8回も作業をしないといけない、さらに作業が必要なタイミングかどうかを証券会社のサイトなどから確認する必要があります。
そうなるとほぼ毎日このサイトの維持のために作業をしないといけません。それは大変ですよね。
それを回避するために今回FirebaseのCloud FormationというNoSQLデータベースを使いました。
- 特定のサイトを監視して作業が必要なタイミングかどうかを監視
- 作業タイミングになったら自動で行うプログラムを準備
- 作業した結果をCloud Formationに保存する
- WEBアプリ側はその値を使って画面表示する
という流れにすれば、私はたまにサイトに行って表示がバグっていないか確認する程度で運用する事が出来るのではないかと思いました。
そうと決まれば即座に実行!Cloud Formationにダミーデータを入れて確認していたら問題が発生しました。
Cloud Formationの使用制限
前提条件としてWEBアプリに使用している言語と開発環境を書いておきます。
- 開発環境:VS Code
- 開発言語:Next.js TypeScript
まぁいわゆるReact系です。
Reactを使っている人は分かると思うのですが、プログラムをちゃんとしないと無限にページ更新をしてしまいます。
私も当然これは把握していたんですが、FirebaseのCloud Formationを操作するプログラムの書き方が新しくなっていて、その機能を確認するために他の部分を意識していませんでした。
そのため私が気付かない内に無限ページリロードをしてしまい、無料使用枠を超えてしまいました。恐らく1時間かからずに制限にかかっていますね。
読取り回数が5.1万回になっていますよね。無料使用枠が5万回までなのでアウトになっています。
ただ動作試験中に「Quota exceeded」みたいなエラーが出てきたのでアプリが動作しなくなりました。逆に言えばこれで無料使用枠を超えたら勝手に課金される心配はない事が分かりましたね。よかったよかった。
ちなみに今回の原因は非同期処理の取り扱いでした。皆さんも気を付けてください。
ただとりあえずもろもろのエラーは取れてWEBアプリケーション側はほぼ準備が整ったので、次は自動で特定のサイトを監視し、タイミングになったら必要なデータをCloud Formationに保存する仕組みを用意していきます。
それはPythonで作ろうかなぁ・・・。