Frontend vs Backend khác nhau ở đâu? Phân biệt 2 nửa của mọi web và app
Frontend là 'phòng khách' bạn thấy, Backend là 'bếp' bạn không thấy — hiểu ranh giới này giúp bạn thuê đúng dev, biết lỗi nằm ở đâu, và chọn đúng dịch vụ.
Mục lục bài viết(20)
Sơ đồ kiến trúc 3 tầng của mọi web/app hiện đại: Frontend (tầng trình diễn — khách thấy) ↔ Backend (tầng ứng dụng — chạy ở server) ↔ Database (tầng dữ liệu — kho lưu). Mỗi tầng có vai trò riêng và giao tiếp qua API. Nguồn: Wikimedia Commons (public domain).
Hiểu đơn giản nhất
Mọi web và app đều có hai nửa, giống như một nhà hàng:
- Frontend = phòng khách. Bạn (người dùng) nhìn thấy, chạm vào: menu, bàn ghế, đèn, không gian. Nếu phòng khách bẩn hay menu rối, bạn không vào quán lần thứ hai.
- Backend = bếp. Bạn không thấy, nhưng nó quyết định món có ngon không, có đúng giờ không, có đúng giá không. Bếp lộn xộn thì dù phòng khách đẹp, quán vẫn lụn bại.
Cả hai bắt buộc phải có. Web chỉ có frontend (không có backend) như nhà hàng chỉ có phòng khách, không có bếp — không phục vụ được khách thật.
Tại sao bạn cần biết
- Thuê đúng người. Web 5 trang giới thiệu công ty chỉ cần frontend developer. Web có đăng nhập, giỏ hàng, thanh toán bắt buộc cần thêm backend. Thuê sai vai trò là tốn tiền không hiệu quả.
- Báo lỗi đúng người. "Nút Đặt hàng không bấm được" → frontend. "Đặt xong không thấy email xác nhận" → backend. Biết lỗi ở đâu giúp dev fix nhanh hơn 5-10 lần.
- Chọn đúng platform. Shopify, WordPress, Webflow tự lo backend cho bạn. Custom code bắt buộc build cả hai.
- Hiểu báo giá. Agency báo giá web 30 triệu vs 80 triệu — chênh lệch lớn nhất thường ở backend (có/không có DB, có/không có authentication, có/không có thanh toán).
So sánh nhanh
| Tiêu chí | Frontend (phòng khách) | Backend (bếp) |
|---|---|---|
| Người dùng có thấy? | Có | Không |
| Chạy ở đâu | Trình duyệt người dùng (Chrome, Safari) | Máy chủ ở data center |
| Ngôn ngữ chính | HTML, CSS, JavaScript | Node.js, Python, Go, Java, PHP |
| Framework (bộ khung lập trình có sẵn) điển hình | React, Vue, Next.js, Svelte | Express, Django, Laravel, Spring Boot |
| Lưu dữ liệu | Tạm thời (localStorage, cookie — lưu trữ nhỏ trong trình duyệt) | Vĩnh viễn (PostgreSQL, MongoDB, MySQL) |
| Quan tâm chính | Đẹp, mượt, dễ dùng | Đúng, nhanh, an toàn |
| Lỗi điển hình | Layout vỡ, animation lag, không responsive (giao diện co dãn theo màn hình) | Mất data, lỗi 500, đặt đơn 2 lần |
| Lương VN 2026 (mid) | 15-30 triệu | 15-35 triệu |
Frontend — phòng khách của web
Frontend làm gì
- Hiển thị nội dung mà backend trả về: text, ảnh, video, bảng giá
- Nhận tương tác của bạn: bấm, gõ, kéo thả, scroll, swipe
- Validate dữ liệu cơ bản trước khi gửi backend: "email sai định dạng", "password phải 8 ký tự"
- Animation và hiệu ứng: nút bấm "nhún" xuống, modal mở từ giữa màn hình, loading spinner
Công nghệ chính
- HTML — khung sườn nội dung (heading, paragraph, list, link)
- CSS — vẽ giao diện (màu, font, layout, responsive)
- JavaScript — thêm tương tác (bấm là gì, validate form, gọi API)
- Framework: React (Facebook), Vue (Evan You), Svelte, Next.js, Nuxt — giúp viết code có cấu trúc, tái sử dụng
- Chạy trong: trình duyệt người dùng — Chrome, Safari, Firefox, Edge
Ai làm frontend
- Frontend developer (chuyên về HTML/CSS/JS)
- UI/UX designer (làm Figma, không code, cộng tác với frontend dev)
Backend — bếp của web

Bếp của một nhà hàng — khách hoàn toàn không thấy, nhưng quyết định món có ngon và đúng giờ không. Backend của web giống y như vậy: chạy âm thầm ở data center, không có UI đẹp đẽ, nhưng nếu lỗi thì cả web sập. Nguồn: Wikimedia Commons (CC BY-SA 4.0).
Backend làm gì
- Xử lý logic nghiệp vụ: tính giá đơn hàng có khuyến mãi, áp dụng voucher, kiểm tra mật khẩu, xếp lịch giao hàng
- Lưu và truy xuất database: nhớ ai đã mua gì, ai login lúc mấy giờ, sản phẩm nào hết hàng
- Bảo mật: xác thực user (Auth — Authentication — xác thực ai đăng nhập), mã hoá password, chống tấn công SQL injection, rate-limit để chống spam
- Tích hợp dịch vụ ngoài: thanh toán VNPay/Stripe, gửi tin Zalo OA, gửi email qua SendGrid, gửi SMS qua Twilio
- Cron job: gửi báo cáo mỗi sáng 8h, sao lưu DB mỗi đêm, dọn dẹp data cũ hàng tuần
Công nghệ chính
- Ngôn ngữ: Node.js (JavaScript), Python, Go, Java, PHP, Ruby, C#
- Framework: Express, NestJS, Django, FastAPI, Laravel, Spring Boot, Ruby on Rails
- Database: PostgreSQL, MySQL, MongoDB, Redis, SQLite
- Chạy trong: máy chủ Linux ở data center (AWS, Google Cloud, DigitalOcean, hosting Việt Nam như Vinahost, Tenten)
Ai làm backend
- Backend developer (chuyên server-side)
- DBA (Database administrator) — dự án lớn cần người chuyên quản DB
- DevOps engineer — lo phần triển khai, scaling, monitoring
Cầu nối: API
Frontend và backend không nói chuyện trực tiếp với nhau. Chúng giao tiếp qua API (Application Programming Interface) — như bồi bàn trong nhà hàng:
- Bồi bàn nhận order từ phòng khách (frontend) → truyền vào bếp (backend)
- Bếp nấu xong → bồi bàn mang món ra cho khách
- Khách không vào bếp, bếp không ra phòng khách — luôn qua bồi bàn
Mọi action có ý nghĩa (đăng nhập, đặt đơn, xem giỏ hàng) đều là một lần frontend gọi API tới backend. Chi tiết về API ở bài API là gì (sắp có).
Ví dụ thực tế: đặt 1 ly trà sữa trên Shopee Food
Bạn mở app Shopee Food trên điện thoại, đặt 1 ly trà sữa Phúc Long, topping trân châu, 25.000đ. Đây là phân chia front/back:
Frontend (chạy trong app trên điện thoại bạn)
- Hiển thị danh sách quán + ảnh món (dữ liệu lấy từ backend qua API)
- Cho bạn vuốt, lọc theo loại (cà phê, trà sữa, đồ ăn nhanh)
- Bấm vào quán Phúc Long → hiện menu (1 lần gọi API nữa)
- Form đặt món: chọn size, topping, ghi chú "ít đường" — validate "phải chọn ít nhất 1 món"
- Bạn bấm "Đặt hàng" → frontend gửi API tới backend
- Backend xử lý xong → frontend hiện popup "Đặt thành công, mã đơn ABC123"
Backend (chạy ở data center Shopee)
- Nhận yêu cầu đặt món từ frontend (qua API)
- Kiểm tra quán Phúc Long có còn nhận đơn giờ này không (DB lookup)
- Tính tiền: 25.000đ + phí ship 15.000đ - khuyến mãi 10.000đ = 30.000đ
- Trừ tiền tài khoản ShopeePay của bạn (gọi sang dịch vụ thanh toán)
- Lưu đơn hàng vào DB với trạng thái "Đang chuẩn bị"
- Gửi notification cho quán Phúc Long: "Có đơn mới ABC123"
- Tìm shipper trong khu vực 2km — Grab nội bộ chọn shipper gần nhất
- Tự động update trạng thái mỗi 30 giây: "đang chuẩn bị" → "shipper đã đến quán" → "đang giao" → "đã giao"
Ranh giới: API giữa Front và Back
| Hành động | Frontend gửi | Backend trả về |
|---|---|---|
| Xem menu | GET /restaurant/phuclong/menu | JSON 50 món + ảnh URL + giá |
| Đặt món | POST /order + dữ liệu món | { order_id: "ABC123", total: 30000, eta_min: 25 } |
| Tra trạng thái | GET /order/ABC123/status | { status: "shipper_dang_giao", eta_min: 8 } |
| Huỷ đơn | POST /order/ABC123/cancel | { refunded: 30000, status: "cancelled" } |
Mỗi tương tác có ý nghĩa trong app đều là một cuộc nói chuyện giữa frontend (app) và backend (server Shopee) qua API.
Full-stack — biết cả hai nửa
Một số developer làm được cả hai (full-stack developer). Họ có lợi và hạn chế:
Lợi:
- Tự build được dự án nhỏ một mình
- Hiểu cả hai phía → thiết kế hệ thống hiệu quả hơn
- Linh hoạt khi team thiếu người, có thể chuyển đổi nhiệm vụ
Hạn chế:
- Khó giỏi đỉnh ở cả hai — mỗi phía đã rất rộng
- Dự án lớn (10+ developer) vẫn cần chuyên gia riêng từng phía
- Lương full-stack thường cao hơn mid-level một bên ~20% vì hiếm hơn
Pattern phổ biến: dùng full-stack cho MVP (Minimum Viable Product — sản phẩm tối thiểu khả dụng, phiên bản đầu để test thị trường) trong 2-3 tháng, sau đó tách thành 2 team chuyên khi product fit.
Khi nào cần ai
| Bạn cần làm | Chỉ frontend đủ? | Cần backend? |
|---|---|---|
| Landing page giới thiệu công ty | Có | Không (trừ form liên hệ) |
| Blog (đọc only) | Có (dùng CMS — Content Management System — hệ quản lý nội dung — như Sanity) | Không |
| Web bán hàng có giỏ + thanh toán | Không | Có |
| App đặt đồ ăn / gọi xe | Không | Có (rất nặng) |
| Tool cá nhân (calculator, todo) | Có | Không nếu data lưu local |
| SaaS (Software as a Service — phần mềm dạng dịch vụ) đa người dùng (Notion clone) | Không | Có (auth + DB) |
| Dashboard kết nối DB hiện có | Không | Có |
Tóm tắt 1 dòng
Frontend = phòng khách bạn thấy, chạy trong trình duyệt. Backend = bếp bạn không thấy, chạy trên server. API = bồi bàn truyền lệnh giữa hai phía. Thuê đúng vai trò = tiết kiệm và đỡ lỗi.
Đọc tiếp
- Web hoạt động thế nào — hành trình 200ms — 5 bước có cả front và back tham gia
- API là gì? Tại sao mọi app đều cần — cách bồi bàn truyền lệnh giữa hai phía (sắp có)
- HTML, CSS, JavaScript là gì — 3 ngôn ngữ cốt lõi của frontend (sắp có)
- Framework là gì? React, Vue, Next.js — bộ Lego có sẵn để build nhanh (sắp có)