サーバーレスで個人サイトを運用するための技術選定
個人サイトの運営はここ数年で大きく変わりました。レンタルサーバーやVPSを契約するのが当たり前だったのが、サーバーレス構成を選ぶ人が増えています。私も東京で働きながら福岡のサイトを継続する中で、運用負荷の少ない構成へと移行しました。
サーバーレスの魅力は、サーバー管理からの解放と、スケーラビリティにあります。本稿では個人サイトでの技術選定の基準と、運用の実感を整理します。
サーバーレスアーキテクチャの基本概念
サーバーレスは、文字通り「サーバーがない」を指すのではなく、サーバーの管理を開発者が意識しないアーキテクチャを指します。FaaSやBaaS、マネージドサービスを組み合わせ、インフラ運用から解放されます。
個人サイトはアクセスの変動が大きい傾向があります。ブログやポートフォリオの場合、月に数える程度しかアクセスがない日も珍しくありません。常時起動のサーバーはコストがもったいないと感じるようになり、サーバーレスとの相性が良いと判断しました。
静的サイトジェネレータの比較
SSGはビルド時にHTMLを生成するため、配信時のサーバー処理がほぼ不要になります。選定では次の点を重視しました。
| ジェネレータ | 言語 | ビルド速度 | 特徴 |
|---|---|---|---|
| Hugo | Go | 非常に高速 | テンプレート独自 |
| Next.js | JavaScript | 中速 | 動的統合容易 |
| Astro | JavaScript | 高速 | Islands Architecture |
Hugoはビルドが圧倒的に速い点が魅力ですが、テンプレートの習得が必要です。Next.jsは動的ページとの併用が容易で多機能、Astroは部分的なJavaScript読み込みで軽量な配信が可能です。
ホスティングとデプロイ
Cloudflare Pages、Netlify、Vercelの三つを試しました。落ち着いたのはCloudflare Pagesです。理由は、CDNのエッジが広域で無料枠も十分だったこと、GitHub連携の自動デプロイが容易だったことです。
事例紹介サイトでも触れられている通り、個人用途では無料枠で十分なケースが多く、コスト負担なく始められます。デプロイはGitで完結するため、サーバーへのアップロードという従来の概念から解放されました。
バックエンドAPIとデータ管理
お問い合わせフォームのような動的な要素にはCloudflare Workersを使っています。エッジで処理が完結するためレイテンシも小さく済みます。
データはFirestoreに保存しています。タグや閲覧数のような非構造化データと相性が良く、スケーラビリティも担保されます。ただし読み書き回数で課金されるため、無駄な呼び出しは減らす設計が必要です。
コストとパフォーマンス
従量課金のサーバーレスでは、アクセスがほぼない日はコストがゼロになる反面、想定外のスパイクで思わぬ請求が発生するリスクがあります。アラートの設定を必ず有効化しておくべきです。
パフォーマンス面ではキャッシュが鍵です。CloudflareのエッジキャッシュやCDNを活用すれば、オリジンへの負荷を大幅に抑えられます。私の場合は静的ファイルを優先配信し、動的部分のみWorkersで賄う構成で運用しています。
セキュリティと継続運用
サーバーレスの環境でもセキュリティ対策は必須です。ファンクション内の認証情報の管理、環境変数の扱い、IAMでの権限最小化、定期的なキーのローテーションが基本となります。
運用を通して感じたのは「思ったほど落ちないが、思った以上に手を加えたくなる」という点です。記事数の増加でビルド時間が伸びるため、Incremental Buildへの対応が後々の負荷を左右します。
サーバーレス運用の要点
振り返りを踏まえ、個人サイトへのサーバーレス導入を成功させるための要点を整理します。
- SSGはコンテンツ量とビルド頻度を考慮して選ぶ
- ホスティングはGit連携と無料枠で判断する
- 動的要素は最小限にWorkersで補完する
- 従量課金のアラート設定を必ず有効化する
- シークレット管理を初期段階で整備する
- Incremental Buildの対応可否を確認する
- 定期的にコストとパフォーマンスを見直す
これらのポイントを押さえれば、リリースから時間が経っても無理なく運用が継続できます。技術選定は一度で終わらず、自分の使い方に合わせて見直す姿勢が大事です。
個人サイトへのサーバーレス導入は、運用負荷とのバランスを取るための現実的な選択肢です。アクセスパターンが変動しやすい個人サイトこそ、サーバーレスとの相性が良いと感じています。あなたのサイトにも、ぜひ導入を検討してみてください。
Xcodeビルドの事例も、選定時の参考になります。