JAMstack で構築されたプロジェクトは、次の3つの条件を満たしています:
リクエスト/レスポンスのサイクルを処理する動的なプログラミングは JavaScript が実行し、クライアントサイドで完結します。そうするためのフロントエンドのフレームワークやライブラリは何を使っても構いませんし、ただの JavaScript でも構いません。
すべてのサーバーサイドのプロセスやデータベース操作は再利用可能な API に抽象化され、HTTPS を通じて JavaScript からアクセスします。これは自前で実装してもよいですが、サードパーティのサービスを活用しても構いません。
テンプレートに埋め込まれる markup はデプロイ時にビルド済みになっているべきです。通常は、コンテンツを見せる Web サイトであればサイトジェネレーターを使い、Web アプリであればビルドツールを使います。
例を見たいですか?
クライアントとサーバーの密な結びつきに依存したプロジェクトは、JAMstack で構築されたとはいえません。たとえば次のようなプロジェクトです:
ページの生成がデプロイ時にできるとしたら、わざわざ実行時にビルドして待たせる必要があるでしょうか? 最初のページビューまでの時間を最小化するには、ビルド済みファイルを CDN で配信するのに勝る方法はありません。
サーバーサイドのプロセスがマイクロサービスの API に抽象化されるため、攻撃者が外部からアクセスできる部分が減ります。セキュリティの専門技術をサードパーティのサービスに任せることもできます。
デプロイが大量のファイルを置いてどこかに配信するだけであれば、スケールで問題になるのはそのファイルをより多くの場所に送ることだけです。CDN がこの問題の完璧な答えです。一般的な CDN サービスにはすべてのプランにスケールが含まれています。
クライアント/サーバー間の結合を弱め、分離することによって、開発とデバッグにより集中できるようになり、サイトジェネレーターに使える CMS の選択肢を広げることで、コンテンツとマーケティングの管理を分離する必要がなくなります。