技術っぽいことを書いてみるブログ

PythonとかVue.jsとか技術的なことについて書いていきます。

Scrum Roomの構成とデプロイ先を紹介します!

はじめに

『Scrum Room』というWebサービスを個人開発し、公開しましたので、
どのようなPaaSを使って、構成したかや背景などをまとめておきます。

なお、『Scrum Room』については、こちらにまとめていますので、
スクラム開発実践者は参考にしてみてください。

構成図

フロントエンド

  • フロントエンドは、Nextjsを用いて実装しています。
  • デプロイ先は、Vercel です。
  • NextjsとVercelは非常に相性が良いので、デプロイで詰まる部分はほとんどありませんでした。
    • そもそもNextjsの開発元がVercelっぽいので、当然のことでしょう。
  • なお、コンソール画面の動きは遅いです。たまに動いているのかな?と不安になること多々。また、画面の構成もよくわからないです。

vercel.com

バックエンド

  • バックエンドは、Nestjsを用いて実装しています。
  • デプロイ先は、Renderです。
  • バックエンドもVercelにデプロイしたかったのですが、VercelはWebServiceをフリーでは提供していないので、別のPaaSを探した結果Renderにしました。
  • ORMは、prismaを使用しています。
    • データベースはMongoDBですが、特にNoSQLということを意識せず利用することができます。
  • コンソール画面に関しては、特に違和感はなかったです。

render.com

データベース

  • データベースは、MongoDB Atlasを使用しています。
  • VercelかRenderで用意したかったのですが、DBを準備するとなると概ね有償版に切り替えないといけないので、フリーで使用できるものとしてMongoDB Atlasを採用しました。
  • なお、MongoDB Atlasも実質はAWS等に構築しているっぽいです。

www.mongodb.com

監視

  • バックエンドのRenderは、15分ほどアクセスがないとスリープ状態になるため、定期的に死活監視としてリクエストを投げる必要がありました。
  • こちらは、appmillというサービスを利用させていただいています。
  • 最大100URLまではお試しプランで利用できるようです。

所感

  • Webサービスを公開するにあたり、無駄にコストをかけたくないという思いから、すべてフリー版で構成しました。
  • 自身のスキルアップを考えると、AWS環境での稼働も視野には入れたのですが、やはりコストをかけたくないとの思いが強く、上記をチョイスしました。
  • 他にも適切なデプロイ先があるかもしれませんので、ご教授いただけると幸いです。