Middle+
¿Puede explicar qué es un apagado ordenado y dónde se aplica?
sobes.tech AI
Respuesta de la IA
El apagado ordenado (graceful shutdown) es un proceso de cierre correcto de la aplicación, que permite finalizar las operaciones en curso, liberar recursos y guardar el estado antes de detenerse.
Aplicaciones del apagado ordenado:
- Despliegue de nuevas versiones de la aplicación: Permite reemplazar suavemente la versión antigua por la nueva sin pérdida de datos ni interrupciones en las sesiones de los usuarios.
- Reinicios programados o mantenimiento técnico: Garantiza que todas las conexiones abiertas se cierren y las tareas se completen antes de detener el servicio.
- Respuesta a fallos o escalabilidad: En caso de reducción de carga o problemas, los servicios pueden detenerse correctamente.
Ejemplo de implementación en Node.js:
// process.js
const http = require('http');
const server = http.createServer((req, res) => {
setTimeout(() => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello, World!\n');
}, 2000); // Simulación de operación prolongada
});
server.listen(3000, () => {
console.log('Servidor escuchando en el puerto 3000');
});
// Manejador de señal SIGTERM para apagado ordenado
process.on('SIGTERM', () => {
console.log('Señal SIGTERM recibida. Cerrando servidor...');
server.close(() => {
console.log('Servidor cerrado. Saliendo del proceso.');
process.exit(0);
});
// Forzar cierre después de un tiempo si el cierre se retrasa
setTimeout(() => {
console.error('Cierre forzado...');
process.exit(1);
}, 5000); // 5 segundos para cerrar
});
En el ejemplo, al recibir la señal SIGTERM, el servidor deja de aceptar nuevas conexiones, pero permite que las ya establecidas finalicen. Después de un tiempo determinado, se realiza un cierre forzado en caso de que el cierre se retrase.