JAMstack とは
JAMstack は JavaScript・API・Markup の頭文字を取ったアーキテクチャの考え方です。従来のようにリクエストのたびにサーバーが HTML を生成するのではなく、あらかじめビルドした静的ファイルを配信し、動的な部分だけを JavaScript と API で補う構成を指します。
それぞれの役割は次のとおりです。
- JavaScript + API — 動的なコンテンツを扱う
- リクエスト/レスポンスのサイクル中の動的な制御は JavaScript が担う
- サーバーサイドの処理やデータベースへのアクセスは、再利用可能な API 経由で行う
- Markup — 静的なコンテンツを扱う
- デプロイ時にビルドされる、テンプレート化されたマークアップ(HTML)
サーバーサイドのレンダリングをなくし、CDN から静的ファイルを配信するのが基本形です。
JAMstack のメリット
- 高いパフォーマンス — 事前ビルド済みのファイルを CDN から配信するため高速
- 高いセキュリティ — 攻撃対象になりやすいサーバーやデータベースが常時稼働していない
- 低コストなスケーラビリティ — 静的ファイル配信なので、アクセス増にも CDN でスケールしやすい
- 優れた開発者体験 — フロントエンドとバックエンド(API)を疎結合に開発できる
補足
このサイト自体も、Next.js の静的エクスポートを GitHub Pages で配信するという、JAMstack 的な構成で運用しています。静的サイトジェネレータ(Next.js、Gatsby、Hugo、Jekyll など)や、ヘッドレス CMS との組み合わせが JAMstack の典型的な構成です。