Frontend, backend, database, hosting
Hãy đi sâu thêm một lớp nữa, dùng ví dụ của chúng ta: người dùng bấm "Lưu hồ sơ."
. Là ứng dụng nhìn thấy được, chạy trong trình duyệt web hoặc dưới dạng ứng dụng di động. Nó vẽ ra biểu mẫu, phát hiện cú bấm, và thu thập những gì người dùng đã gõ. Theo thiết kế, nó không đáng tin cậy: bất kỳ ai cũng có thể mở nó ra, kiểm tra nó, và thay đổi nó. Vì vậy nhiệm vụ của nó là trông đẹp và phản hồi nhanh, chứ không phải là thực thi bất kỳ điều gì quan trọng.
. Khi nút được bấm, frontend gửi dữ liệu tới backend — đoạn mã chạy trên một máy chủ. Backend kiểm tra người dùng đã đăng nhập chưa, xác thực dữ liệu ("đây có thực sự là một địa chỉ email không?"), áp dụng các quy tắc nghiệp vụ, và chỉ sau đó mới lưu lại. Đây là nơi sự tin cậy tồn tại, bởi vì người dùng không thể can thiệp vào nó.
. Backend giao dữ liệu cho database để lưu trữ. Đây không phải một hộp phép — hãy nghĩ về nó như một tập hợp các bảng tính (gọi là table, tức "bảng") cực kỳ nghiêm ngặt, có thể được tìm kiếm ngay tức thì và không bao giờ quên. Ngày mai, backend đọc hồ sơ đó ra để hiển thị lại lần nữa.
Hosting. Trong môi trường thực tế (production), không có gì trong số này chạy trên laptop của bạn cả. Nó chạy trên những chiếc máy tính đi thuê từ một nhà cung cấp dịch vụ hosting như Cloudflare, Vercel, hoặc một nền tảng đám mây. Hosting là thứ khiến ứng dụng của bạn có thể truy cập được qua một địa chỉ web thật, thay vì chỉ chạy trên máy của riêng bạn.
Một trực giác hữu ích: khi có gì đó bị hỏng, hãy hỏi lớp nào. "Cái nút không làm gì cả" là frontend. "Nó lưu sai thứ" thường là backend. "Nó quên mất dữ liệu của tôi" chỉ thẳng vào database. Gọi tên đúng lớp là đã xong một nửa việc sửa lỗi — và cũng là một nửa việc viết một câu lệnh () mà AI có thể hành động theo.