はじめに
ハッカソンでWebサービスを開発するときの技術スタック比較第2弾、インフラ・デプロイ編です!
最近ハッカソンにたくさん出て、いろんな人の技術スタックを見てきたので、ハッカソンで成績を残しやすい という観点から、Webサービスの技術スタックについてまとめていこうと思います!
注意:自分の中で技術スタックはある程度固まっていて、採用しないスタックについても書いています。それらについては、採用しなかった理由 として参考にしていただけると。
デプロイ
バックエンドの話の前にデプロイの話をしておいた方がわかりやすいです。
デプロイというのは、webサーバーを立てたりドメインを作ったり、あるいはiOSアプリをApp Storeにリリースしたりの、広い意味でデプロイ、だと思っていただければ。
Vercel
正直これだよね。
GitHub(は使ってる前提とする)pushでデプロイできるのは、CI/CDの観点からもすごくいい。あと サービス名のドメインがもらえる (project.vercel.app)ので、分かりやすさにもつながりますね。デプロイが失敗した時にもエラーログが充実してて対応しやすい。CLIもよい!
欠点を挙げるとすれば無料だと若干重いところとか。あと環境変数の扱い(特に環境変数の追加や削除、DBと自動連携のものを使うとなんかあった時に編集しにくい)とか。
でもやっぱり便利で、BaaSとの連携 も強い点です。Neon、Supabaseとはワンクリックで連携できるのが強い。NeonはEdge functionとかないけど、DBが十分高速なのと、ブランチごとにDB分けられる(これはVercelでもできることだけど)ので便利です。
最初からSupabaseを取り込む設計にしてるなら、Supabase採用の方がいいのかなと。
ここの比較はいろんな人がやっているので、ぜひ参考に。
AWS・GCP
ここで言っているのは、Amplifyとかでないガチデプロイのこと。
Open Hack Uとか、geekみが強くなると湧いてくる。すげぇよ。
この際AWSとGCPどっちを使うべきかって話は置いておきます。(terraformが使えるって観点からはAWSなのかも。技術スタックを豪華にしたいだけなら、Supabaseでもterraformは使えますよ。)
おすすめはしない。 でもちゃんと使えてたらブッ刺さる。そんな存在。
あと、AI基盤活用として、AWSならBedrock、GCPならVertex AIがあります。ここだけ使うためにLambda・cloud functionと連携するくらいならいいのかなと思います。
Firebase・Supabase
BaaSという意味でデプロイに含めました。Cloud Function / Edge Functionによってサーバーレスを可能にし、バックエンド開発コストを大幅に下げます。
2週間くらいのハッカソンならぜひ積極的に使うべきだと思っています。ハッカソンってプレゼンが一番って言っていいほど大事で、そのためには見た目(デザイン・UI/UX)に最後は尽力したり、発表の見せ方にリソースを割くべきなので。足りない時間はバックエンドを削って生み出しましょう。
構成としても不自然でなくモダンなので、審査員から選定理由について深ぼられすぎないのも良いところ(あと使用言語とかも問題にあがらない)
FirebaseとSupabaseどっちを使うのか についてはすごく難しい話で(ここに関しては審査員からすごいつめられるわけではない)、RDBが使いたいからSupabase、使わないからFirebase とかでいいかと。StorageやFunctionが有料化したFirebaseじゃなくてSupabaseを使うとか、同接人数とかを考えてFirebaseって話もあるかもしれません。あとSQL書きたくなかったらFirebaseとか?
まとめ
デプロイに関しては悪いこと言わないからFirebase/SupabaseとVercel選んどけ。