0x008 - Jamstack 👾
Hi, y’all! Welcome to the eighth issue of unzip.dev, a newsletter dedicated to developer trends through unpacking trending dev concepts. My name is Agam More, and I’m a developer generalist. I’ll be posting every few weeks, so if you haven’t subscribed yet, go for it!
This issue took me some time as I just started a new journey as a digital nomad (I’m starting in Europe, and I will then probably head to the far east), So preparations took over my life for a bit!. Wish me luck :)
- Problem: Manually building fast, reliable, and easy-to-deploy websites is difficult.
How does it work? 💡
- Calls to an API (mostly serverless or micro-services), webhooks, or 3rd-party SaaS APIs for additional functionality.
- Markup (Markdown/HTML) static site generators compile static files which are stored in a CDN.
- Everything is version controlled. On each push to your main branch, the Jamstack provider will regenerate your site, invalidate the CDN cache, and deploy your site - including any backend changes (like changes in your serverless functions). Automated rollbacks will occur on failed deployments when your deployment fails without manual intervention.
- Headless CMSs are used to publish content via a UI, which are integrated with your frontend, without you having to maintain the server components for said content. This allows teams to include non-technical content contributors as well.
✨ The main idea is to utilize static files, CDNs, and scalable server-side (via serverless, 3rd-party APIs) and bundle it all together via great developer experience on specialized Jamstack hosting providers. Removing the burden of maintaining the hard parts of server-side operations.
Use cases ✅
- Blogs are prime candidates for Jamstack.
- SEO-critical applications.
- Empowers non-technical users to control their frontend without code.
- Full-stack engineers that want to focus on delivery.
- Better DX: CI/CD via your version-controlled codebase connects seamlessly with all Jamstack deployment providers, making changes and deployment as smooth as can be. Plus, the frontend is decoupled from the backend - which means development can be done independently between the backend and frontend teams. Atomic deployments, automatic staging/production, and rollbacks which remove tedious and cumbersome operations.
- Performance & Scalability: Static files on a CDN can be sent much more quickly to the browser. When you get a spike in traffic, the CDN handles most of the load. Coupled with serverless functions (which, by design, scale horizontally), you get out-of-the-box scalability.
- Security: There is less server-side attack surface and most files are generated statically. A managed server-side is more secure than rolling and maintaining your own infrastructure.
- Lower costs: Hosting static files is cheaper than rendering them on each request. Plus, having a free tier in most Jamstack-related players makes starting out very economical.
Why not? 🙅
- New: There are only a few providers that position their offerings specifically for Jamstack projects. Vendor lock-in and missing eco-system solutions to your edge cases may be a problem.
- Proliferation of needed tools: To mimic a traditional application, you might need to use a handful of 3rd-party SaaS providers. This can be hard to manage and maintain which can also incur significant downtime if one goes down. This could also impact costs, which should always be taken into account.
- Managing moving parts: Having 3rd-party auth, search, forms, payments, etc… can seem like a hassle to manage (My personal opinion is that now you get to pick the best-of-class solutions instead of ad-hoc in-house solutions which you don’t want to reinvent the wheel for in any case).
- Critical performance: A dedicated server with custom code might be the only solution for necessary high-performance needs (CPU/IO intensive server-side).
Tools & players 🛠️
- Deployment providers: Vercel, Netlify, Render, & Fly.io.
- Independent CDNs: Cloudflare & Cloudinary.
- Serverless (most deployment providers have built-in): AWS Lambda, CF Workers.
- Visual Builders: Stackbit, Builder.io, & cloudcannon.
- Frameworks: Next.js, Remix, Blitz.js, RedwoodJS, 11ty, Hugo, Gatsby, & Astro.
- Headless CMSs: Sanity, Contentfull, Keystone, strapi, & directus.
- SaaS integrations: Auth0, clerk, Autocode, 0x001 (Magic links), 0x002 (SeaaS), getform, & snipcart.
- Market adoption: It seems like most web frameworks are going this way. I can see more and more individuals getting into web development starting with this type of architecture in mind. I can only see this idea growing even further. It could be the next LAMP stack.
- More frameworks: You can already see Svelte (SvelteKit), Angular (Scully), and others creating their own version of Jamstack. I suspect to see more news ones, or at least an increase in the ecosystem of the top frameworks.
Who uses it? 🎡
- Freecodecamp.org, web.dev (Google), TikTok, and more.
Additional related information that you should check out:
- agamm/awesome-developer-first - most products here can be great additions to your Jamstack application.
I want to thank @TomGranot, the best DevRel I know and Tamir Kfir, one of the best developers I know - both helped tremendously with this issue.
If you are on nomadlist and are also traveling hit me up on the slack.
Any questions, feedback, or suggestions are welcome 🙏
Simply reply to this email or tweet at me @agammore - I promise to respond!