JAMstack is an architecture for building sites that can be served directly from a CDN. It stands for JavaScript, APIs, and pre-rendered Markup.
The core concept behind JAMstack are not new. Static site generators (or SSG) have been using it for more than a decade. Solutions such as Jekyll have enabled content creators to avoid the need for managing costly servers and databases. Instead, they can publish their content as static HTML, CSS and JavaScript directly through a content delivery network (CDN).
Serving static content offers several significant improvements over existing CMS solutions, such as WordPress, that are often based on the LAMP stack (Linux, Apache, MySQL, PHP/Pearl/Python). When Smashing Magazine made the transition to a JAMstack solution, they reported a 10x improvement in performance.
While the JAMStack definition includes static sites, it also supports dynamic web applications by using 3rd party API providers which are required to maintain the serverless architecture.
There are several companies such as FireBase, Netlify, Auth0, etc. which offer easy-to-use services that allow developers to access anything from user authentication, databases, and even running custom code through Lambda functions.
The benefits of using the JAMStack architecture are generally divided into four fields:
- Improved performance - pre-rendered markup and assets are served directly from a CDN.
- Cutting Costs / Easy Scaling - hosting static files is cheap, and since there are no databases or servers, there's no need to handle load balancers, and the CDN can manage the scaling process.
- Better Security - with no servers or databases to hack, many of the most common vulnerabilities simply cease to exist.
- Better development experience - Since the entire site content is static, it can be managed through version control (such as GIT). Tracking change history becomes more straightforward, and updating the site is as easy as uploading a new copy of the site and invalidating the cache.
Unlike popular development stacks like LAMP or MEAN, JAMstack is based on a much looser set of services and libraries, which can make the initial transition more complex.
An excellent place to start would be the official JAMstack website, which offers many excellent resources on the subject. Once you feel comfortable with the core concepts, it's worth reading through Awesome JAMstack which provides a long curated list of recommended 3rd party services that could be used for creating and managing JAMstack websites.