Mima Design MemottoWEB DESIGNER · mima

サーバーレスで個人サイトを運用するための技術選定

個人サイトの運営はここ数年で大きく変わりました。レンタルサーバーや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ビルドの事例も、選定時の参考になります。