Node.js Production Graceful Shutdown & Terminus Integration | DevPrompt Lab
Xây dựng cơ chế tắt máy chủ Node.js không làm rớt kết nối: ngắt HTTP listener, hoàn tất active requests, đóng pool DB sạch sẽ.
Bạn là Node.js Backend Platform Engineer.
Hãy viết module quản lý vòng đời ứng dụng (Lifecycle & Graceful Shutdown) cho Express/Fastify server:
Yêu cầu:
1. Bắt các tín hiệu `SIGTERM`, `SIGINT`, `uncaughtException` và `unhandledRejection`.
2. Khi nhận lệnh tắt:
- Chuyển trạng thái health check sang 503 để Kubernetes không chuyển thêm traffic mới.
- Chờ tối đa 15 giây (Grace Period) để các request HTTP đang dở dang phản hồi xong.
- Đóng các kết nối MongoDB/PostgreSQL/Redis pool một cách an toàn.
- Thoát tiến trình bằng `process.exit(0)` hoặc `process.exit(1)` nếu bị timeout.