Dành cho ai? Bạn không cần biết code hay quản trị server. Bài viết giải thích bằng ngôn ngữ đời thường, dùng ví dụ thực tế từ ứng dụng quản lý công việc (task management). Mục tiêu: giúp bạn hiểu Firebase hoạt động thế nào để mô tả yêu cầu cho Claude Code chính xác hơn.
Tổng quan: 5 thành phần trong hệ sinh thái Firebase
Firebase không phải một công cụ duy nhất — nó là bộ công cụ gồm nhiều dịch vụ, mỗi dịch vụ giải quyết một bài toán backend cụ thể.Firestore
Cơ sở dữ liệuLưu trữ toàn bộ dữ liệu ứng dụng. Cập nhật realtime.
Authentication
Xác thực người dùngĐăng nhập, đăng ký, quản lý phiên. Google, Email, Phone.
Cloud Storage
Lưu trữ fileẢnh, video, PDF. Kiểm soát quyền truy cập.
Cloud Functions
Logic phía serverCode chạy tự động khi có sự kiện hoặc theo lịch.
Security Rules
Bảo mật dữ liệuQuy tắc ai được đọc/ghi dữ liệu nào.
Bố cục backend trong dự án
Phần backend Firebase được tổ chức trong dự án Next.js qua 2 nơi:Thư mục
services/ nằm trong dự án Next.js (frontend gọi Firebase). Thư mục functions/ là dự án riêng chạy trên server Google — có package.json và dependencies riêng.1. Firestore — Cơ sở dữ liệu
Firestore là gì?
Firestore là nơi lưu toàn bộ dữ liệu của ứng dụng. Không giống database truyền thống (bảng với hàng và cột), Firestore tổ chức dữ liệu theo Collections (bộ sưu tập) chứa Documents (tài liệu).Thiết kế cấu trúc dữ liệu
Trước khi viết code, bạn cần thiết kế cấu trúc dữ liệu — quyết định lưu gì, ở đâu, liên kết thế nào. Ví dụ — Ứng dụng quản lý công việc:Các loại dữ liệu Firestore hỗ trợ
| Loại | Mô tả | Ví dụ |
|---|---|---|
| string | Chuỗi văn bản | "Nguyễn Văn A", "in_progress" |
| number | Số | 42, 99.5 |
| boolean | Đúng/Sai | true, false |
| timestamp | Ngày giờ | 2026-04-30T08:00:00 |
| array | Danh sách | ["user_001", "user_002"] |
| map | Đối tượng lồng nhau | { street: "123 ABC", city: "HCM" } |
| reference | Tham chiếu đến document khác | users/user_001 |
| null | Giá trị rỗng | null |
Subcollections — Dữ liệu lồng nhau
Firestore hỗ trợ subcollection — collection nằm bên trong document. Dùng khi dữ liệu thuộc về một document cụ thể.| Subcollection | Collection riêng |
|---|---|
| Dữ liệu chỉ có ý nghĩa trong context document cha | Dữ liệu cần truy vấn độc lập |
| Comments của 1 task | Tasks (cần lọc, tìm kiếm tất cả tasks) |
| Activity log của 1 task | Users (cần hiển thị ở nhiều nơi) |
| Không cần query chéo giữa các document cha | Cần query chéo (tất cả comments của user X) |
Realtime — Cập nhật tức thì
Firestore cập nhật dữ liệu theo thời gian thực. Khi một người thay đổi dữ liệu, tất cả người dùng khác đang mở ứng dụng sẽ thấy thay đổi ngay lập tức — không cần reload.2. Authentication — Xác thực người dùng
Authentication đảm nhận những gì?
Authentication quản lý toàn bộ vòng đời người dùng: từ đăng ký, đăng nhập, quên mật khẩu, đến đăng xuất. Mọi thứ phức tạp phía sau (mã hóa mật khẩu, quản lý session, chống tấn công) đều do Firebase xử lý.Luồng xác thực trong ứng dụng
Các phương thức đăng nhập
Email & Password
Email & Password
Phương thức truyền thống — người dùng đăng ký bằng email và mật khẩu.Firebase tự động xử lý:
- Mã hóa mật khẩu (không lưu plain text)
- Gửi email xác minh tài khoản
- Link “Quên mật khẩu” → gửi email reset
- Chống brute-force (khóa sau nhiều lần nhập sai)
Google Sign-In
Google Sign-In
Người dùng bấm “Đăng nhập với Google” → chọn tài khoản → xong. Không cần nhớ mật khẩu thêm.Firebase tự động xử lý:
- Mở popup chọn tài khoản Google
- Xác minh token từ Google
- Tạo hoặc cập nhật user trong Firebase Auth
- Trả về thông tin: tên, email, ảnh đại diện
Phone OTP
Phone OTP
Gửi mã OTP qua SMS → người dùng nhập mã → đăng nhập. Phù hợp khi cần xác minh danh tính thực.Firebase tự động xử lý:
- Gửi SMS với mã 6 số
- Xác minh mã OTP
- Chống spam (reCAPTCHA)
UID — Chìa khóa liên kết dữ liệu
Sau khi đăng nhập, Firebase cấp cho mỗi người dùng một UID (User ID) duy nhất, ví dụ:xK9mNp2QrLo5vWcT8uEd.
UID là chìa khóa liên kết giữa Authentication và Firestore:
3. Cloud Storage — Lưu trữ file
Storage đảm nhận những gì?
Cloud Storage lưu trữ file lớn mà Firestore không phù hợp: ảnh, video, PDF, Excel. Tổ chức file theo đường dẫn (path), tương tự thư mục trên máy tính.Cấu trúc lưu trữ file
Quy trình upload file
Kiểm soát quyền truy cập file
| Loại file | Ai được xem | Cách cấu hình |
|---|---|---|
| Ảnh avatar | Tất cả người dùng đã đăng nhập | Read: auth != null |
| File đính kèm task | Thành viên cùng project | Read: kiểm tra membership |
| File xuất báo cáo | Chỉ admin | Read: role == "admin" |
4. Cloud Functions — Logic phía server
Cloud Functions là gì?
Cloud Functions là đoạn code chạy trên server Google, được kích hoạt bởi sự kiện. Bạn không cần thuê server — Google tự động chạy code khi có sự kiện xảy ra, rồi tắt đi khi xong.Cấu trúc thư mục Cloud Functions
3 loại Cloud Functions
Firestore Triggers — Phản ứng với dữ liệu
Firestore Triggers — Phản ứng với dữ liệu
Tự động chạy khi dữ liệu trong Firestore thay đổi. Có 4 loại trigger:
Ví dụ — Khi tạo task mới:
| Trigger | Khi nào chạy | Ví dụ |
|---|---|---|
| onCreate | Document mới được tạo | Task mới → gửi thông báo cho assignee |
| onUpdate | Document được cập nhật | Task đổi status → log activity |
| onDelete | Document bị xóa | Task bị xóa → xóa file đính kèm trong Storage |
| onWrite | Bất kỳ thay đổi nào | Đếm lại tổng số tasks trong project |
Scheduled Functions — Chạy theo lịch
Scheduled Functions — Chạy theo lịch
Tự động chạy vào thời điểm đặt sẵn, giống cron job. Phù hợp cho báo cáo, nhắc nhở, dọn dẹp dữ liệu.
Ví dụ — Nhắc deadline hàng ngày:
| Function | Lịch chạy | Công việc |
|---|---|---|
| weeklyReport | Thứ Hai 8:00 sáng | Tổng hợp tasks tuần qua, gửi email cho manager |
| dailyReminder | Mỗi ngày 8:00 sáng | Nhắc tasks sắp đến deadline (còn 1-2 ngày) |
| cleanupOldData | Mỗi ngày 1:00 sáng | Xóa notifications đã đọc quá 30 ngày |
| monthlyStats | Ngày 1 mỗi tháng | Tính thống kê tháng, lưu vào collection “reports” |
HTTP Functions — API endpoints
HTTP Functions — API endpoints
Tạo URL mà frontend hoặc dịch vụ bên ngoài có thể gọi. Phù hợp khi cần xử lý logic phức tạp phía server hoặc tích hợp dịch vụ thứ 3.
Ví dụ — Tạo báo cáo PDF:
| Function | URL | Công dụng |
|---|---|---|
| sendEmail | POST /sendEmail | Gửi email qua SendGrid/Resend |
| generateReport | POST /generateReport | Tạo file PDF báo cáo |
| webhookHandler | POST /webhook | Nhận webhook từ Stripe, Slack |
Luồng hoạt động Cloud Functions
5. Security Rules — Bảo mật dữ liệu
Security Rules là gì?
Security Rules là bộ quy tắc xác định ai được đọc/ghi dữ liệu nào. Chúng chạy trên server Firebase — không thể bị bypass từ phía client.Các mức bảo mật
Các cấp độ bảo mật phổ biến
| Cấp | Quy tắc | Dùng khi nào |
|---|---|---|
| Public | Ai cũng đọc được | Trang công khai, landing page data |
| Authenticated | Đã đăng nhập mới đọc/ghi được | Mặc định cho hầu hết data |
| Owner only | Chỉ chủ sở hữu đọc/ghi | Thông tin cá nhân, cài đặt riêng |
| Role-based | Theo vai trò (admin, member) | Quản lý users, xóa dữ liệu |
| Team-based | Theo nhóm/project | Tasks chỉ thấy bởi team members |
| Deny all | Chặn hoàn toàn từ client | Data chỉ Cloud Functions truy cập |
Mô tả Security Rules cho Claude Code
Cách 5 thành phần phối hợp
Tất cả 5 thành phần Firebase hoạt động phối hợp nhịp nhàng. Đây là ví dụ luồng hoàn chỉnh khi tạo task mới:Firebase Console — Bảng điều khiển
Firebase Console (console.firebase.google.com) là giao diện web cho phép bạn xem và quản lý tất cả dịch vụ Firebase — không cần code.
| Tab | Bạn có thể làm gì |
|---|---|
| Firestore Database | Xem/sửa/xóa dữ liệu trực tiếp, tạo index |
| Authentication | Xem danh sách users, xóa user, reset password |
| Storage | Xem/upload/xóa file, quản lý thư mục |
| Functions | Xem logs, kiểm tra lỗi, theo dõi thời gian chạy |
| Rules | Sửa Security Rules trực tiếp |
| Usage & Billing | Theo dõi chi phí, đặt budget alerts |
Khi phát triển, bạn có thể vào Firebase Console để kiểm tra dữ liệu mà Claude Code tạo ra — xem document đúng chưa, field nào bị thiếu, data có hợp lệ không.
Chi phí Firebase
Gói Spark (miễn phí)
| Dịch vụ | Giới hạn miễn phí |
|---|---|
| Firestore | 50.000 reads/ngày, 20.000 writes/ngày, 1 GB storage |
| Authentication | Không giới hạn số users |
| Cloud Storage | 5 GB storage, 1 GB download/ngày |
| Cloud Functions | Không có (cần gói Blaze) |
Gói Blaze (trả theo dùng)
| Dịch vụ | Chi phí |
|---|---|
| Firestore | 0.18/100K writes |
| Cloud Storage | $0.026/GB/tháng |
| Cloud Functions | 2 triệu lượt/tháng miễn phí, sau đó $0.40/triệu |
| Authentication | Miễn phí (Phone OTP có phí SMS) |
Mô tả backend cho Claude Code
Khi hiểu cấu trúc backend Firebase, việc mô tả yêu cầu cho Claude Code trở nên chính xác hơn: Thiết kế database:Câu hỏi thường gặp
Firestore khác SQL database thế nào?
Firestore khác SQL database thế nào?
| Tiêu chí | Firestore (NoSQL) | MySQL/PostgreSQL (SQL) |
|---|---|---|
| Cấu trúc | Collections + Documents | Tables + Rows |
| Schema | Linh hoạt, không cần định nghĩa trước | Cố định, phải tạo bảng trước |
| Relationships | Lưu ID tham chiếu | JOIN nhiều bảng |
| Realtime | Có sẵn | Cần thêm thư viện |
| Scale | Tự động | Tự cấu hình |
| Query phức tạp | Hạn chế (không có JOIN) | Linh hoạt |
Cloud Functions có chạy liên tục không?
Cloud Functions có chạy liên tục không?
Không. Cloud Functions chạy theo kiểu event-driven — chỉ chạy khi có sự kiện, xong thì tắt. Bạn không trả tiền khi function không chạy.Thời gian chạy tối đa mặc định: 60 giây (có thể tăng lên 540 giây).Nếu function cần chạy liên tục (ví dụ WebSocket server), Cloud Functions không phù hợp — dùng Cloud Run hoặc server truyền thống.
Có cần viết Security Rules ngay từ đầu không?
Có cần viết Security Rules ngay từ đầu không?
Khi tạo Firestore lần đầu, Firebase cho phép chọn test mode (mở hoàn toàn trong 30 ngày). Đây là đủ cho giai đoạn phát triển.Trước khi deploy cho người dùng thật, bạn bắt buộc phải viết Security Rules. Không có Rules = ai cũng đọc/ghi/xóa được tất cả dữ liệu.Yêu cầu Claude Code viết Rules khi ứng dụng đã có đủ tính năng cơ bản và chuẩn bị deploy.
Firebase Emulator là gì?
Firebase Emulator là gì?
Firebase Emulator là phiên bản Firebase chạy trên máy tính của bạn — mô phỏng Firestore, Auth, Storage, Functions mà không cần kết nối internet hay ảnh hưởng dữ liệu thật.Dùng khi nào:
- Phát triển và test trên local
- Test Cloud Functions trước khi deploy
- Test Security Rules mà không sợ ảnh hưởng production
Dữ liệu có mất khi Firebase gặp sự cố không?
Dữ liệu có mất khi Firebase gặp sự cố không?
Firebase có SLA 99.95% uptime — trong một năm, thời gian ngừng hoạt động tối đa khoảng 4 giờ. Dữ liệu được replicate trên nhiều data center của Google.Firestore cũng hỗ trợ backup tự động — bạn có thể cấu hình backup hàng ngày để khôi phục khi cần. Yêu cầu Claude Code cấu hình Export/Import nếu cần.
Tóm tắt
Điểm mấu chốt: Firebase cung cấp toàn bộ backend mà ứng dụng cần — database, authentication, file storage, server logic, và bảo mật — tất cả do Google vận hành. Bạn chỉ cần mô tả cấu trúc dữ liệu, quy tắc bảo mật, và logic tự động cho Claude Code. Không cần thuê server, không cần cài database, không cần lo bảo trì.