Bỏ qua menu, vào nội dung chính

NestJS + Node.js

NestJS là khung phát triển máy chủ chạy trên Node.js, viết bằng TypeScript, tổ chức mã theo mô-đun và có sẵn cơ chế tiêm phụ thuộc. ALODEV dùng NestJS để xây API cho website, ứng dụng di động và các hệ thống quản trị nội bộ.

Dùng cho

  • API chung cho web và ứng dụng di động

    Một backend phục vụ website Next.js và ứng dụng React Native: đăng nhập, phân quyền, nghiệp vụ, thanh toán.

  • Quy trình duyệt nội bộ

    Duyệt đơn hàng, hợp đồng, đề xuất theo nhiều cấp, có quy tắc chuyển tiếp khi quá hạn.

  • Thông báo và trao đổi thời gian thực

    Kết nối WebSocket, dùng Redis để phân phối khi chạy nhiều máy chủ. Có thể gửi qua Zalo OA, ZNS.

  • Tác vụ nền và lịch chạy định kỳ

    Hàng đợi BullMQ trên Redis cho đối soát, gửi báo cáo định kỳ, xử lý tệp lớn.

Năng lực kỹ thuật

Cấu trúc mô-đun của NestJS giúp mã nguồn nhất quán khi nhiều người cùng làm và dễ bàn giao cho đội kỹ thuật của doanh nghiệp. Cùng ngôn ngữ TypeScript với phần giao diện nên có thể dùng chung kiểu dữ liệu giữa hai phía.

  • Chia mô-đun theo nghiệp vụ

    Mỗi nghiệp vụ như người dùng, đơn hàng, thanh toán là một mô-đun riêng, dễ kiểm thử và tách ra khi cần.

  • Tiêm phụ thuộc

    Các thành phần ít phụ thuộc cứng vào nhau, thuận tiện thay thế và giả lập khi kiểm thử.

  • Truy vấn có kiểu với Prisma, Drizzle

    Kiểu dữ liệu sinh từ lược đồ cơ sở dữ liệu, quản lý thay đổi lược đồ bằng migration.

  • Tài liệu API tự sinh

    Tài liệu OpenAPI, Swagger sinh từ mã nguồn, giúp đội giao diện và đối tác tích hợp tra cứu.

  • Kiểm tra dữ liệu đầu vào

    Khai báo quy tắc cho từng trường dữ liệu, từ chối yêu cầu sai định dạng ngay từ đầu.

  • Kiểm thử tự động

    Jest và Supertest cho kiểm thử đơn vị và kiểm thử luồng chính, chạy trước mỗi lần triển khai.

Nên dùng khi

  • Hệ thống có nhiều nghiệp vụ và tích hợp: quy trình duyệt, thanh toán, kết nối bên thứ ba
  • Một backend phục vụ nhiều ứng dụng: web, di động, đối tác
  • Nhiều người cùng phát triển, cần cấu trúc mã thống nhất

Không phù hợp khi

  • API nhỏ, ít nghiệp vụ: phần API có sẵn của Next.js là đủ
  • Tác vụ tính toán nặng hoặc cần độ trễ rất thấp: cân nhắc Go hoặc Rust
  • Đội kỹ thuật tiếp quản chỉ quen PHP hoặc Python: nên chọn công nghệ họ bảo trì được

Công nghệ đi kèm

PostgreSQLRedisPrisma / DrizzleBullMQOpenAPI / SwaggerJestDocker

Câu hỏi thường gặp

Tất cả câu hỏi
NestJS khác Express thế nào?

Express là thư viện tối giản, để người viết tự quyết định cách tổ chức mã. NestJS quy định sẵn cấu trúc mô-đun, tiêm phụ thuộc và cách viết API. Với dự án kéo dài và nhiều người tham gia, cấu trúc sẵn có giúp mã nguồn dễ đọc và dễ bàn giao hơn.

Có nên chia hệ thống thành microservices ngay từ đầu?

Thường là không. Bắt đầu với một ứng dụng chia mô-đun rõ ràng sẽ đơn giản hơn khi triển khai và vận hành. Khi một phần nào đó cần mở rộng riêng, mô-đun đó có thể tách thành dịch vụ độc lập.

NestJS dùng cơ sở dữ liệu nào?

NestJS làm việc được với hầu hết cơ sở dữ liệu phổ biến. ALODEV mặc định dùng PostgreSQL, kết hợp Redis cho bộ nhớ đệm và hàng đợi tác vụ. Lựa chọn cụ thể tuỳ vào dữ liệu và hệ thống sẵn có của doanh nghiệp.

Backend có kết nối được với phần mềm doanh nghiệp đang dùng không?

Được, nếu phần mềm đó có API hoặc cho phép xuất nhập dữ liệu. Các tích hợp thường gặp gồm phần mềm kế toán, hoá đơn điện tử, cổng thanh toán và Zalo OA. ALODEV khảo sát tài liệu API của bên thứ ba trước khi cam kết phạm vi.

Sau bàn giao, doanh nghiệp tự bảo trì được không?

Được, nếu có người biết TypeScript và Node.js. ALODEV bàn giao mã nguồn, tài liệu API, hướng dẫn triển khai và bộ kiểm thử tự động. Doanh nghiệp cũng có thể giao ALODEV bảo trì tiếp theo thoả thuận.

Ước tính chi phí dự án

Cần tư vấn?