Gần đây, JAM stack trở nên phổ biến hơn bên cạnh các stack hiện có như LAMP, MEAN. Trong bài viết này, mình sẽ giải thích về các thành phần của JAM stack cũng như ứng dụng của nó trong dự án phần mềm.

JAM Stack là gì?

JAM Stack là viết tắt cho Javascript, API và Markup, cụ thể:

  • Javascript (J): Front end framework, chạy hoàn toàn bên phía client, có thể dùng bất cứ framework phổ biến nào như VueJS, ReactJS, AngularJS
  • API (A): Các HTTP API tự tạo hoặc các vendor API có thể được truy cập bằng Javascript Client. Ví dụ như Disqus dùng cho chức năng comment bình luận, Stripe cho thanh toán.
  • Markup (M):Template được build trước khi deploy, sau đó push lên server và lúc nào server có thể coi như một trang web tĩnh(staticwebsite) vậy.

Deploy process phổ biến của JAM Stack: Hầu hết nội dung được viết dưới dạng markup, source code(markup)được lưu trữ trên Git, khi developer muốn thay đổi nội dung website thì thay đổi markup sau đó push lên Git. CI/CD sẽ nhận thấy thay đổi này, rebuild lại website, sau đó push lên static hosting(S3,Netlify) hoặc CDN.

Deploy Process phổ biến của JAM Stack

JAM Stack có điểm mạnh gì so với các stack khác?

  • Tốc độ load nhanh: Vì tất cả các page đã được build trước và host dưới dạng web tĩnh(staticwebsite), không cần truy cập database, không cần parse code. Thậm chí bạn có thể dùng CDN để tối ưu tốc độ truy cập trang. Bạn còn có thể dùng Service Worker để cache nội dung website trên máy người dùng. Tóm lại là tốc độ tải webpage tĩnh gần như không có gì bằng được.
  • Bảo mật tốt hơn: Tất nhiên static website thì sẽ không phải lo lắng các lỗ hổng bảo mật về database hay về framework.
  • Offline support: Với Service Worker thì người dùng vẫn có thể truy cập trang web của bạn khi không có internet.
  • Chịu tải tốt (high scalability)
  • Chi phí thấp: Chi phí để host JAM stack thì rẻ hơn so với các stack có đầy đủ cả frontend, backend, database.
  • Dễ học: Code markup đơn giản hơn phải làm việc với backend framework (Rubyon Rails, Django…)
JAM stack so sánh với LAMP và MEAN(nguồn(2))

Khi nào nên sử dụng JAM Stack

Bạn có thể sử dụng JAM stack khi xây dựng các website nghiêng về nội dung như tin tức, blog, api document, user manual.

Các trường hợp không nên dùng JAM Stack:

  • Website cần có chức năng đăng nhập, phân quyền (authentication và authorization). Tuy nhiên, bạn vẫn có thể chia website ra thành 2 phần: 1 phần cần đăng nhập mới sử dụng được, phần còn lại vẫn có thể dùng JAM Stack.
  • Website có nhiều chức năng phức tạp, cần customize nhiều.

Bắt đầu với JAM Stack như thế nào?

Hiện JAM stack đã trở nên khá phổ biến, nếu bạn muốn làm một blog thì có thể tham khảo 1 số công cụ như Jekyll, Hugo hoặc GatsbyJS. Bạn cũng có thể tham khảo Netlify, Github Pages hoặc Firebase Hosting để host nội dung website.

JAM Stack Ecosystem(nguồn(2))

Reference