Kaka Notes

Description about Blog Author


Cấu trúc và Kiến trúc Dự án Nodejs

Dưới đây là bản dịch tiếng Việt cho phụ đề video:


**03. Cấu trúc và Kiến trúc Dự án Node.js **

0:00
Nếu bạn đã nắm vững kiến thức cơ bản về Node.js và từng xây dựng các ứng dụng nhỏ như API, đây là lúc bạn cần học cách thiết kế kiến trúc và tổ chức dự án một cách chuyên nghiệp.


Three-Layer Approach (Kiến trúc 3 tầng)

0:12

  • Three-Layer Approach là gì?
  • Ví dụ: Client gửi request tạo đơn hàng → Route chuyển request tới controller → Controller giao tiếp với database để tạo bản ghi mới.

0:53

  • Vấn đề: Cách tiếp cận này đơn giản nhưng không scalable.
  • Giải pháp: Sử dụng kiến trúc 3 tầng:
    1. Controller: Nhận request và trả response.
    2. Service: Xử lý logic nghiệp vụ.
    3. Model (Data Layer): Giao tiếp với database.

1:55

  • Ưu điểm:
    • Tách biệt rõ ràng các nhiệm vụ.
    • Dễ dàng mở rộng và bảo trì.
    • Service có thể tái sử dụng cho nhiều controller.

Cấu trúc thư mục dự án

2:09

  • Controllers: Xử lý request/response.
  • Models: Giao tiếp với database (ORM).
  • Services: Xử lý logic nghiệp vụ.
  • Schemas: Định nghĩa cấu trúc database (ví dụ: MongoDB).
  • Utils: Các hàm tiện ích chia sẻ.
  • Subscribers: Xử lý sự kiện (Event-driven).

4:17

  • Monorepo với nhiều microservices:
    • Mỗi service (ví dụ: orders, payments) có cấu trúc tương tự.
    • Thư mục libs chứa các thư viện dùng chung (ví dụ: logging).

Pub/Sub Pattern (Mẫu Publish/Subscribe)

5:02

  • Mục đích: Xử lý sự kiện (ví dụ: tạo user).
  • Cách triển khai:
    • Đăng ký các subscriber để lắng nghe sự kiện.
    • Tách biệt logic xử lý sự kiện vào file riêng.

Testing (Kiểm thử)

5:36

  • Unit tests: Kiểm thử từng phần nhỏ (controller, service).
  • Contract tests: Đảm bảo giao tiếp giữa các microservice ổn định.
  • Integration tests: Kiểm thử tích hợp giữa các service.

Logging và Monitoring

6:20

  • Logging: Sử dụng thư viện như Morgan để ghi log (debug, pháp lý).
  • Monitoring: Theo dõi hiệu suất, sức khỏe ứng dụng với Sentry, AppSignal, hoặc Datadog.

Best Practices

7:01

  • Code sạch: Sử dụng linter (ESLint) và công cụ phân tích code (SonarQube).
  • Style guide: Tuân thủ quy tắc code (Google, Airbnb).
  • Tái sử dụng code: Tách biệt logic, tránh lặp code.

👉 Video đầy đủ
📚 Tài liệu ESLint
📚 Tài liệu Sentry