みなさんこんにちは。massu159
です。
今回はJAMstack構成のWebサイトを作りましたので、そのお話です。
使用技術
- Next.js
- React
- Typescript
- TailwindCSS
- eslint
- prettier
システム構成
基本的な流れとしては、microCMS
でコンテンツを更新した時に、Webhookを利用してGitHub Actions
が動作します。GitHub Actions
でCI/CDを構築しており、ビルド時の静的ファイル生成からデプロイまで自動で行うことで、常に最新のコンテンツを高速かつ快適にユーザーに届けることができます。
ホスティング先
当初、ホスティング先としてはVercel
を選択していましたが、再度検討を行いFirebase Hosting
を採用しました。
他の候補に、
- レンタルサーバー
- Netlify
- AWS Amplify
- AWS S3
- Firebase
...
等があり、いろいろと比較しました。
まずVercel
をやめた理由としては、
- サーバー費用を抑えるためです。今回は商用利用でしたので、商用利用可を条件にサーバーを選択する必要がありました。(
Vercel
は商用利用の場合$20/月かかる ←ヤダ) - サーバーサイドでのデータフェッチ・レンダリングを行わず、すべてのページにSSGを採用したこと。
次にFirebase Hosting
を選んだ理由としては、
- 無料枠が大きいこと。DAU(デイリーアクティブユーザー)を確認して、費用感を算出しました。他の候補としては
AWS Amplify
やS3
×CloudFront
があるが、費用面で若干Firebase Hosting
が優位でした。今後DAUが大幅に増加するようであれば、AWS
へ移行した方がメリットが大きいので、移行も視野に入れています。 - 全世界にCDNがあること。すべてのページが静的コンテンツで作成するので、自動的にCDNでキャッシュに保存してくれるので、レスポンスが高速になることはありがたいです。また、
Firebase Hosting
の場合デプロイ時に自動でCDNのキャッシュをクリアしてくれるので、常に最新の情報を公開できます。AWS S3
×CloudFront
の場合、デプロイ時に自動ではキャッシュがクリアされないので、自分でクリアする必要があり、率直に言うと、、面倒なので今回はラクさせていただきました(笑)。
GoogleのCDNのキャッシュについてはこちらを参照。
他にもドメイン費用が無料であったりと色々メリットが多かったので、Firebase Hosting
にしました。
みなさんも、脳死でVercel
を選んでしまう自分をぶん殴って、クライアントの要件に寄り添いながらベストを尽くしましょう。
まとめ
次回は実際にNext.jsのプロジェクト作成からCI/CDの構築までサンプルコードを使って紹介できたらと思います。