2022年にwebアプリ開発するにあたっての技術選定

2022/02/04に公開

もともと得意だったのはrails + vueでの開発。pythonではflaskを使ったことがある程度。
今回の開発でのポイントは

  • 全文検索が必要
  • ほかは一般的な小規模webアプリケーション
  • seoは求められない。

技術(フレームワーク)選定

選定した技術スタックは

  • next.js(reactにssrを追加し設定も代わりにやってくれるフレームワーク)
  • nest.js(railsみたいなバックエンド用フレームワーク
  • graphql (apollo clientとapollo server)
  • mysql (全文検索を安く実装するため)

候補となった技術は

  • rails (今後消えていくと考え選ばなかった。かつてはssrなかったのでcmsとかではviewを早く表示できて一意のurlで同じhtmlを返せるrailsはSPAに対して優位性があったが、現在はssrで良いので、バックエンドはただのapiサーバーに成り下がった。)
  • vue (書きやすいが、世界的にはreact優位である点と、より大規模な開発になったときにreactのほうが書きやすくなるとなんとなく考えたため、今回は使わないこととした。)
  • elastic search(amazon cloud search)やAlgoliaは高い

サービス(デプロイ先)選定

選定したデプロイ先

  • Vercel
  • Google Cloud Run
  • Google Cloud SQL

候補となったが選定しなかったサービス

  • Google App Engine(GAE)
  • Google Cloud Function
  • Google Firebase + Cloud Function
  • Google Apigee (聞いたことなかったので、多分人気ないと判断)
  • AWS lambda (appsyncと併用よさそうだが、コンテナにしたほうが一括で管理できるしスイッチングコストも低そうなので今回はパス。安いと思った。)
  • AWS AppSync (GraphQL API の開発を容易にする、完全マネージド型サービスだが、DBがdynamoDBになってしまい全文検索使いにくいため選ばなかった。全文検索使わないならdynamoDBとともに使ってみたい)
  • AWS Amplify (nextjsなどのフロントエンドのビルド〜ホスティングサービス。Vercelと悩んだがバックエンドがGCPなので今回は不採用)

選定理由

自動スケーリングしてほしい。Cloud Runならリクエスト数が増えても問題ない。

わくわくするポイント

  • はじめてtypescriptを本格的に使う
  • はじめてnext.jsおよびreact使う
  • はじめてneset.js使う
  • はじめてgraphql使う

Discussion