Jamstackの利点と欠点

ここではJamstackによるWebサイト実装に関する利点および欠点について解説します。

利点

Jamstackの利点を以下のポイントごとにまとめます。

  • セキュリティ
  • スケール
  • パフォーマンス
  • メンテナンス性
  • 可搬性
  • DX(開発者体験)

セキュリティ

JamstackではWebアプリケーションによる動的なコンテンツ生成をなくし、静的ファイルとしてホスティングを行っています。そのため、悪意を持った訪問者からの攻撃に強くなっています。たとえばSQLインジェクションのような攻撃は意味がありません。Jamstackの構成の場合、悪意を持った攻撃対策は主にAPIに対して考慮をすることになります。

WebサーバーやCDNから配信するコンテンツはあらかじめ生成されたもの(プリレンダリング)されたものであり、読み取り専用になります。動的コンテンツは外部の信頼できるサービスベンダーのものを利用することで、信頼性を高められます。

スケール

Jamstackを実現する多くのフレームワークやホスティングサービスではCDNを通じたキャッシュ機構を備えています。キャッシュの有効期限や仕組みについては、各サービスによって違いがありますので構築するサイトの特性に合わせて選択をするとよいでしょう。

CDNを介して配信することで高い信頼性、高速配信そして負荷分散が実現します。

パフォーマンス

ページの読み込み速度はユーザー体験やコンバージョンに直結します。Jamstackではリクエストごとにページ生成する必要がなく、あらかじめ生成されたコンテンツを配信するだけです。しかもCDNを通じて配信されるので高速です。

多くのCDNはリクエスト元の近くに配信サーバーを配備し、より高速な配信がされるようになっています。高価かつ複雑なインフラを導入することなく、非常に高いパフォーマンスを実現できます。

メンテナンス性

ホスティングの複雑さが軽減されると、Webサイトのメンテナンス作業も軽減されます。あらかじめ生成されたコンテンツが静的ホスティングシステム、またはCDNから配信されるという仕組みであれば、サーバー管理者が常時監視する必要性は低いでしょう。

必要な作業はデプロイ時に完了しており、稼働したWebサイトは非常に安定していることでしょう。サーバーのメンテナンスが不要になれば、サーバーにパッチを当てたり、アップデート作業などから解放されます。

可搬性

Jamstackで構築されたWebサイトは最終的に静的なHTMLを生成します。つまりホスティングサービスを選びません。すでに多くの静的ホスティングサービスが存在し、自由に選択できます。Jamstackならばベンダーロックインから解放されるのです。

DX(開発者体験)

Jamstackを提供するフレームワークは多種多様に存在します。オープンソースのものも多く、商用ソフトウェアに依存することはありません。多くはすでに知られているツールを組み合わせることで、広く知られている手法を利用できます。

その結果として、Jamstackを構築できるスキルを持った開発者を見つけるのは難しくありません。開発者としても一度覚えたJamstackのスキルは他のプロジェクトでも応用可能なものになります。

コスト

CMSなどを用いてWebサイトを運営する場合、Webサーバーとアプリケーションサーバー、データベースサーバーなどで3台以上の構成になるケースが多いでしょう。バックアップや複数台構成になれば、さらに台数は増えます。そして台数分、運用コストが増えていきます。

Jamstackの場合、静的ホスティングサービスやCDN、動的コンテンツ配信サービスを利用するコストは圧倒的に安価になるはずです。

SEO

Googleはページ速度を重視したランキングを行っています。2021年6月からはCore Web Vitalsもランキング指標になります。Jamstackの高速度なコンテンツ配信はSEOにとって効果的です。動的部分についてはSEO上、不利になることもありますが、GoogleはJavaScriptについても解釈できるようになっているのでさほど問題にはならないでしょう。

欠点

前提となる技術スタックがある

Jamstackを実現させるための技術スタックとして、JavaScriptと静的サイトジェネレータおよびAPI、CDNなどの知識が必要になります。これらの技術を知らない開発者は、必ず習得しなければなりません。

とはいえ、静的サイトジェネレータを除けば、他の技術は一般的なWebサイトやWebアプリケーションを構築する際にも必要な技術になります。また、習得は決して難しくありません。

ビルドに時間がかかる

Jamstackではデプロイ時に静的HTMLを生成(プリレンダリング)します。つまりコンテンツが大量にあると、ビルドに時間を要するようになります。数ページであれば気にしないでしょうが、数万ページになると数十分かかるようになるかも知れません。

例えば静的サイトジェネレータのGatsbyでは変更されたページだけを生成し直すIncremental buildsという機能があります。これによってビルド時間の短縮が可能です。このように静的サイトジェネレータを選定することで解決できる問題になるでしょう。

サイト修正の工数

動的サイトを提供するCMSの場合、管理画面で文言やコンテンツの作成ができるでしょう。開発者ではない運用担当者がちょっと並び替えを行ったり、文言修正できます。しかしJamstackの場合はテンプレートを修正してデプロイし直す必要があるかも知れません。

開発者の工数を減らす場合には、運用担当者が修正する部分を動的コンテンツにする必要があります。静的な部分と動的な部分とを見極め、運用担当者の運用負荷を減らす工夫が必要でしょう。

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。