Bạn có biết?
Ứng dụng Node.js chạy ngon trên máy dev, nhưng lên production lại "dở chứng": config khác nhau giữa các môi trường, log nằm lung tung, scale lên 3 instance thì session không chia sẻ được. Không phải code sai — mà là kiến trúc ứng dụng không được thiết kế cho production. Bài này là nền tảng: 12-Factor App — bộ quy tắc vàng để viết ứng dụng deploy được ở bất kỳ đâu, scale được, vận hành được.
Tại sao 12-Factor lại quan trọng với Node.js?
Node.js sinh ra để xây dịch vụ phân tán: nhiều instance, nhiều môi trường (dev/staging/prod), deploy liên tục. 12-Factor (từ Heroku, áp dụng cho mọi ngôn ngữ) giải quyết đúng những vấn đề này. Với Node.js, có 5 yếu tố bạn bắt buộc phải làm đúng:
- Config qua biến môi trường — không hardcode, không file config riêng theo môi trường
- Ứng dụng stateless — dữ liệu phiên nằm ngoài tiến trình (Redis, DB)
- Log ra stdout — ứng dụng không tự quản lý file log
- Dev/prod parity — môi trường giống nhau hết mức có thể
- Quản lý dependencies rõ ràng — lockfile, phiên bản chính xác
1. Config qua biến môi trường
Mọi thứ thay đổi giữa các môi trường (DB host, Redis URL, API key, port…) phải nằm trong environment variables:
// ❌ Sai: hardcode config
const db = mysql.createConnection({
host: "localhost", user: "root", password: "secret123", database: "myapp",
});
// ✅ Đúng: đọc từ môi trường, có giá trị mặc định cho dev
import "dotenv/config"; // chỉ dev mới cần file .env
const config = {
port: Number(process.env.PORT ?? 3000),
dbHost: process.. ?? ,
: process..,
: process..,
};
(!config.) ();
0 bình luận
Đang tải bình luận...
Để lại bình luận