Endpoint de Health Check en Node.js: Liveness vs Readiness

Evita incidentes en producción diseñando correctamente los health checks en Node.js. Diferencia entre liveness, readiness y startup probes para Kubernetes y

29 jun 2026 • 6 min read • Q2BSTUDIO Team

Evita reinicios innecesarios con health checks correctos

El endpoint de health check es mucho más que un simple ping a una ruta HTTP. En entornos modernos basados en contenedores y orquestación, se convierte en la interfaz crítica entre la aplicación y la infraestructura que decide si un contenedor recibe tráfico, se reinicia o se reemplaza. Un mal diseño puede provocar incidentes en cadena: bases de datos que caen y desencadenan reinicios innecesarios, pods que se sustituyen por falsos positivos en sondas, o servicios que se degradan sin que el equipo lo advierta a tiempo. Por el contrario, una implementación cuidadosa, que distinga entre liveness, readiness y startup, permite que el sistema tolere fallos transitorios sin entrar en bucles de reinicio y que los equipos de operaciones tengan visibilidad inmediata del estado real de cada componente.

En Kubernetes, la sonda de liveness responde a la pregunta '¿sigue vivo el proceso?' y solo debe verificar que el bucle de eventos del lenguaje (por ejemplo, Node.js) responde; no debe comprobar dependencias externas como bases de datos o Redis. Si falla, el orquestador reinicia el contenedor, lo cual es adecuado para procesos zombies, pero no para una caída de PostgreSQL. La sonda de readiness, en cambio, indica si la instancia está preparada para recibir peticiones. Aquí sí tiene sentido verificar la conectividad con la base de datos, la cola de trabajos o la caché, porque si falla, el pod se retira del balanceador de carga sin ser reiniciado. La sonda de startup da un margen inicial para migraciones, warm-up de pools de conexiones o carga de datos en memoria, evitando que las sondas de liveness y readiness actúen prematuramente durante el arranque.

En entornos Docker Compose o Swarm, la directiva HEALTHCHECK es única y sus semánticas son más simples: saludable o no saludable. Tras un número de fallos consecutivos, Docker reinicia el contenedor. No existe un equivalente a 'retirar del balanceador sin reiniciar'. Por tanto, incluir dependencias externas en el healthcheck de Docker puede provocar reinicios en cadena ante una interrupción de Redis o la base de datos. La recomendación práctica es usar un endpoint minimalista como /health/live que solo compruebe la capacidad de respuesta del proceso, configurar reintentos altos (3-5) e intervalos largos (30 segundos o más), y delegar las comprobaciones de dependencias a un sistema de monitoreo externo o al propio balanceador de carga, como Caddy o HAProxy, que pueden hacer peticiones a un endpoint /health/ready más completo.

Al diseñar el endpoint de health check, conviene decidir qué incluir y qué dejar fuera. Es sensato verificar la conectividad a la base de datos a través del pool de conexiones (no un simple SELECT 1 directo, sino usando el ORM o driver para detectar agotamiento del pool), la disponibilidad de Redis mediante un PING, y opcionalmente el estado de la cola de trabajos si el servicio depende de ella para responder peticiones. No deben incluirse APIs externas de terceros (Stripe, Mailgun, etc.) porque sus fallos transitorios no deben desactivar el servicio; se gestionan con circuit breakers en el punto de llamada. Tampoco deben incluirse comprobaciones de lógica de negocio que tarden más de un segundo, ni aserciones de consistencia de datos que no sean relevantes para la decisión de enrutamiento.

La respuesta del endpoint debe ser informativa pero segura. Un JSON con estado global (ok, degraded, unhealthy), versión del despliegue, tiempo de actividad y un objeto con el estado individual de cada componente, incluyendo latencia y, en caso de fallo, un mensaje de error. Para el balanceador de carga, el código HTTP 200 indica 'puedes enviar tráfico aquí', incluso si el estado es degraded, siempre que la aplicación pueda seguir sirviendo peticiones de forma degradada. El 503 se reserva para situaciones realmente críticas (base de datos inaccesible, por ejemplo). El monitoreo, por su parte, examina el cuerpo de la respuesta para disparar alertas cuando algún componente se degrada. Esta separación evita que una caída parcial tire abajo todo el servicio.

Es fundamental establecer timeouts estrictos en cada comprobación. Un pool de conexiones agotado puede hacer que una consulta SELECT 1 se quede esperando indefinidamente. Sin un timeout, el health check se cuelga, el balanceador lo marca como fallido, y se genera un falso positivo. Se recomienda usar Promise.race con temporizadores de 1-2 segundos para base de datos, 1 segundo para Redis, y 1.5 segundos para colas. Además, si el driver lo permite, es mejor usar timeouts a nivel de driver para cancelar la consulta en el servidor y no acumular consultas huérfanas en el pool. La duración total del health check no debería superar los 3 segundos, y el timeout del orquestador debe configurarse entre 5 y 10 segundos para dar margen.

Para reducir la carga sobre las dependencias, es aconsejable cachear el resultado del health check durante unos segundos (por ejemplo, 5 segundos para estado ok, 2 para degraded, 0 para unhealthy). Esto evita que cada ciclo de verificación del balanceador o del monitor dispare consultas a la base de datos y Redis, generando ruido de fondo que puede competir con el tráfico real. La pérdida de granularidad de unos pocos segundos es aceptable para la mayoría de los sistemas, dado que los orquestadores ya tienen sus propios umbrales de reintentos.

La seguridad también debe considerarse. Un health check que devuelva direcciones IP internas, nombres de host o mensajes de error detallados (como 'conexión rechazada a 10.0.0.5:6379') expone información sensible a un posible atacante. Lo recomendable es tener dos rutas: una pública que solo devuelva el estado global (ok o unhealthy) sin detalles, y otra interna o autenticada que proporcione el diagnóstico completo. Otra opción es servir el health check en un puerto interno (por ejemplo, 9090) accesible solo desde la red interna del clúster, mientras que el puerto público maneja el tráfico de usuario.

En Q2BSTUDIO, empresa especializada en aplicaciones a medida, integramos estos patrones en cada proyecto que abordamos, ya sea una API SaaS, un backend de comercio electrónico o una plataforma de integración con múltiples workers. Sabemos que un health check bien diseñado es la primera línea de defensa contra incidentes nocturnos. Además, combinamos estas prácticas con servicios cloud AWS y Azure para garantizar una infraestructura escalable y resiliente. Nuestro enfoque incluye también la implementación de agentes IA y soluciones de inteligencia artificial para empresas que necesitan automatizar el monitoreo y la respuesta ante fallos, así como dashboards de inteligencia de negocio con Power BI que visualizan en tiempo real el estado de cada componente. La ciberseguridad es otro pilar: protegemos los endpoints de health check para que no filtren información interna, y aplicamos buenas prácticas de hardening en todo el ciclo de despliegue.

Al final, un health check no es un mero trámite técnico; es una decisión arquitectónica que separa un sistema frágil de uno resiliente. Invertir una tarde en diseñarlo correctamente evita horas de troubleshooting y restauración de servicios. Si estás desarrollando software a medida para tu negocio y necesitas que la fiabilidad sea un requisito de primer orden, contar con un equipo que entienda estas sutilezas marca la diferencia. En Q2BSTUDIO ofrecemos servicios de desarrollo, cloud, inteligencia artificial y business intelligence para que tu aplicación no solo funcione, sino que se mantenga operativa incluso cuando todo lo demás falla.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat