Kiến trúc phần mềm là gì?
Kiến trúc phần mềm là bản thiết kế tổng thể mô tả cách các thành phần của ứng dụng được tổ chức và giao tiếp với nhau. Giống như bản vẽ kiến trúc nhà — bạn cần biết phòng khách ở đâu, nhà bếp nối với phòng ăn thế nào — trước khi bắt tay xây.Tổng quan kiến trúc: 2 tầng chính
Một ứng dụng web hiện đại được chia thành 2 tầng rõ ràng:Frontend — Giao diện
Backend & Database — Hậu trường
Sơ đồ kiến trúc tổng thể
Luồng hoạt động:- Người dùng mở trình duyệt, truy cập ứng dụng (ví dụ
app.congty.com) - Next.js hiển thị giao diện tương ứng (trang login, dashboard, danh sách task…)
- Khi người dùng thao tác (đăng nhập, tạo task, upload file), Firebase SDK gửi yêu cầu lên Firebase
- Firebase xử lý: kiểm tra quyền, lưu/đọc dữ liệu, trả kết quả về
- Giao diện cập nhật ngay lập tức — không cần reload trang
Tầng 1: Frontend — Next.js
Next.js đảm nhận những gì?
Next.js là framework xây dựng giao diện web, chịu trách nhiệm mọi thứ người dùng nhìn thấy và chạm vào.Pages — Các trang trong ứng dụng
Pages — Các trang trong ứng dụng
page.tsx = một trang web. Không cần cấu hình routing phức tạp.Layouts — Khung chung cho nhiều trang
Layouts — Khung chung cho nhiều trang
Components — Khối xây dựng giao diện
Components — Khối xây dựng giao diện
TaskCard? Sửa ở một chỗ duy nhất — tất cả task card trong ứng dụng cập nhật theo.Server vs Client Components
Server vs Client Components
Vai trò của Next.js trong kiến trúc
Tầng 2: Backend & Database — Firebase
Firebase đảm nhận những gì?
Firebase cung cấp toàn bộ hạ tầng phía sau mà ứng dụng cần — do Google vận hành, không cần tự quản lý server nào.Firestore — Database
Authentication — Đăng nhập
Cloud Storage — Lưu file
Cloud Functions — Logic tự động
Firestore — Cơ sở dữ liệu
Firestore là nơi lưu toàn bộ dữ liệu của ứng dụng. Dữ liệu được tổ chức theo Collection → Document, tương tự thư mục chứa các file.Authentication — Xác thực người dùng
Firebase Authentication xử lý toàn bộ bài toán đăng nhập/đăng ký — bạn không cần tự xây dựng:Cloud Storage — Lưu trữ file
Firestore lưu text, số, ngày tháng — nhưng không phù hợp cho file lớn. Cloud Storage giải quyết điều đó:Cloud Functions — Logic tự động hóa
Một số tác vụ cần chạy “phía sau” — không thể để trình duyệt người dùng xử lý:Trigger từ database
Trigger theo lịch
Trigger từ HTTP
Cách 2 tầng giao tiếp với nhau
Đây là phần quan trọng: Frontend (Next.js) và Backend (Firebase) hoạt động hoàn toàn độc lập nhưng giao tiếp qua Firebase SDK — bộ công cụ được cài trong dự án Next.js.Luồng dữ liệu chi tiết
Ví dụ: Luồng tạo task mới (từng bước)
Người dùng mở form
Người dùng điền thông tin
users), chọn deadline.Gửi dữ liệu lên Firebase
addDoc() để ghi dữ liệu vào Firestore collection tasks.Firestore lưu và phát sự kiện
Giao diện cập nhật tự động
Cloud Function chạy tự động (nếu có)
Cấu trúc dự án thực tế
Khi Claude Code tạo ứng dụng theo kiến trúc này, dự án sẽ có cấu trúc thư mục:lib/ là cầu nối giữa Frontend và Backend. Các file trong đây chứa code gọi Firebase SDK — được import vào components và pages khi cần.So sánh: Kiến trúc truyền thống vs kiến trúc này
Khi nào nên dùng kiến trúc này?
Phù hợp
- Ứng dụng web startup, MVP
- Ứng dụng nội bộ doanh nghiệp
- Dashboard quản lý
- Ứng dụng cần realtime (chat, cộng tác)
- Task management, CRM, LMS
- Prototype nhanh để validate ý tưởng
Cân nhắc thêm
- Ứng dụng cần query SQL phức tạp (JOIN, GROUP BY nặng)
- Hệ thống xử lý giao dịch tài chính quy mô lớn
- Ứng dụng yêu cầu latency cực thấp ( dưới 10ms)
- Hệ thống cần xử lý hàng triệu write/giây liên tục
Dùng Claude Code để xây dựng ứng dụng theo kiến trúc này
Quy trình làm việc gợi ý
Thiết lập dự án
Thiết kế cấu trúc dữ liệu
Xây dựng Authentication
Xây dựng giao diện từng trang
Cấu hình bảo mật
Deploy lên Vercel
Câu hỏi thường gặp
Tại sao chọn Next.js mà không phải React thuần?
Tại sao chọn Next.js mà không phải React thuần?
Firebase có phải chỉ dành cho dự án nhỏ?
Firebase có phải chỉ dành cho dự án nhỏ?
Chi phí vận hành bao nhiêu?
Chi phí vận hành bao nhiêu?
Có thể thêm mobile app sau này không?
Có thể thêm mobile app sau này không?
Có thể chuyển sang công nghệ khác sau này không?
Có thể chuyển sang công nghệ khác sau này không?
lib/ để việc migration dễ hơn — Claude Code có thể giúp làm điều này.Tóm tắt
Điểm mấu chốt: Kiến trúc Next.js + Firebase cho phép bạn xây dựng ứng dụng web hoàn chỉnh mà không cần quản lý bất kỳ server nào. Frontend lo giao diện, Firebase lo toàn bộ backend — bạn chỉ cần mô tả yêu cầu cho Claude Code và tập trung vào sản phẩm.