はじめに
前回(TodoBot作成|03 Azure Functions │ itnote (xsrv.jp))までは、Azure を利用したサービスを前提として考えていましたが、開発のハードルを下げたいと思い無料サービスを利用することにしました。今回は、変更後の構成について書いていきます。
全体構成

Todo Bot かつ利用ユーザーはひとまず自分のみの想定であるため、データの整合性よりもデータ取り回しのしやすさと価格が安価であることから DB は MongoDB を採用しました。NoSQL の DB を利用するのは初めてだったのですが、思っていたより使いやすくて目からうろこでした。マスタが多くて整合性をきっちり決めないと破綻してしまうようなシステムだと採用しづらいですが、今回のようにシンプルかつ開発ハードルを下げたい場合には向いていそうです。
無料のサーバーだと C# が動かせないことが多いので、採用サーバーの多い node に鞍替えしました。定期的なバッチの実行も可能そうだったので、Bot を動かすサーバーはFly.io。ライブラリを頑張って入れなくても、ルーティングや認証まわりをいいようにしてくれることから、Todo の内容を表示するプログラムは NextJS に変更。親和性の高さから、Web サーバーは Vercel にしました。
※ Discord Bot の仕組みをつくったあとに Web サイトの検討に入ったので、NextJS と Vercel を知ったのが遅かったんですが、これ全部 NextJS と Vercel でつくればよかったんじゃ…と少し後悔したりしてます。いや、Fly.io もいいんですけどね。一個にまとまってる方が楽だった。次に活かします。
進捗と今後の展望
TodoBot作成|02 BOTの要件と設計 │ itnote (xsrv.jp) ここで洗い出した機能要件からすると、現在は70%くらいの進捗といったところです。自分のための Todo Bot なので、担当者の機能を落としました。全体通知がいけば担当者も見るし。
ひとまず欲しい機能は手に入ったので、Discord Bot の開発はここで一時停止しようと思います。
今後の課題としては、これを一般公開したときにどうやって保守運用していくか、です。今は無料サービスの範囲内で問題なく賄えていますが、ユーザーが増えたらそうはいかないので…。アクセスを捌くためのリソースの準備とかもそうですが、自分が使っていないときに使う人が出てくるということは、モニタリングも考えないといけないですしね。
お金を稼ぎたいわけじゃない(お金は欲しいけど確定申告は面倒だからいやだ)ので、運用するためのちょうどいい金額をユーザーから回収できる手段はないか考えたりしています。