爆速爆安の正規表現サービスの構築(React + Firestore + Rails)
正規表現サービスの構築
正規表現サービスの構築を行いました。
よく忘れるので正規表現を体系立ててどこかに保存しておきたいと思ったのが構築の始まりです。
Railsのキャッチアップをする必要もあったので勉強も兼ねて構築してみました。
その名も正規表現チェッカー。
自分好みの正規表現を保存しておけます。よかったら活用してみてください。
正規表現サービスの構成
構成は以下になっています。
- フロントエンド
- React
- バックエンド
- Rails
- データ部分
- Firestore
- 認証部分
- FirebaseAuth
- バックエンドサーバー
- Clound Run
- フロントエンドサーバー
- Firebase Hosting
爆安ランニングコスト
本サービスのランニングコストは安く、月々にほとんどかかりません。
サーバーにサーバーレスを選べばサーバー代はかなり抑えることができます。
通常個人サービスのランニングコストでネックになるのがDB代です。
有名な所では以下のブログが有名でしょうか。
VPSでレプリケーションして、定次バックアップを取る。
そのような構成にすればDB代はかなり抑えられます。
ですがバックアップ関連に不具合があれば死亡ですし、スケールもさせにくいです。
他ではsqliteでDBファイルごとにリアルタイムでバックアップする。
というのが一番楽そうではあります。
今回は正規表現サービスというサービス特性とランニングコスト面からFirestoreを選びました。
爆速サービス
Clound Runなどのサーバーレスにはコールドスタートの問題がありますが、Google クラウドの「モニタリング」の「稼働時間チェック」をする事などでその問題は解消されます。
https://sleepless-se.net/2021/04/19/keep-cloud-run-always-warm/
爆速はちょっと盛っていますが普通に早いです。
Cloud Runはデフォルトで同時80アクセス、最大で1000までアクセスさばけるようです。
Firestoreは勝手にスケールするので同時接続数などは性能要件としては通常考慮にいれなくて大丈夫です。
構成の詳細
Rails に Firestore を組み合わせた開発については以前投稿した下記記事などを参考にしてみてください。
ソースはそれぞれ以下になります。
- サーバーサイド:Rails + Firestore + Firebase Emulator + Docker
- フロントエンド:React + Nodejs + Docker
次はRustでサーバーサイド部分を作ってRust版の正規表現ページを追加しようかなと思ってます。
Discussion