¿Qué es un Healthcheck y por qué lo necesitas?

Un healthcheck es una herramienta que verifica el estado de salud de tu aplicación o servicio. Su objetivo es asegurarse de que todo funciona bien y detectar problemas rápidamente.

Imagina que tienes una aplicación web que depende de varios componentes clave: un servidor web, una base de datos PostgreSQL, APIs externas y un sistema de almacenamiento. Si alguno de estos componentes falla, tu aplicación podría dejar de funcionar correctamente, afectando a tus usuarios y tu negocio.

Paso 1: Identificar Componentes Críticos

Para implementar un healthcheck efectivo, primero identifica los componentes críticos de tu aplicación:

  • Servidor Web
  • Base de Datos PostgreSQL
  • APIs Externas
  • Sistema de Almacenamiento

Paso 2: Configurar Healthchecks

Los healthchecks suelen funcionar mediante peticiones GET. La aplicación expone una URL específica que, al ser consultada, devuelve un estado que indica si todo está funcionando bien o si hay problemas.

Aquí se muestra cómo se podría configurar el endpoint /health en una aplicación .NET para verificar el estado de varios componentes:

app.MapGet("/health", async () => {
    var components = new {
        webServer = CheckWebServer(),
        database = await CheckDatabase(),
        externalAPI = CheckExternalAPI(),
        storage = await CheckStorage()
    };

    var isHealthy = components.webServer && 
                    components.database && 
                    components.externalAPI && 
                    components.storage;

    var status = isHealthy ? "Healthy" : "Unhealthy";
    var statusCode = isHealthy ? StatusCodes.Status200OK : StatusCodes.Status503ServiceUnavailable;

    return TypedResults.Json(new { status, components }, statusCode: statusCode);
});

bool CheckWebServer() {
    // Lógica para verificar el servidor web
    return true;
}

async Task<bool> CheckDatabase() {
    // Lógica para verificar la base de datos PostgreSQL
    return await Task.FromResult(true);
}

bool CheckExternalAPI() {
    // Lógica para verificar las APIs externas
    return true;
}

async Task<bool> CheckStorage() {
    // Lógica para verificar el sistema de almacenamiento
    return await Task.FromResult(true);
}

Paso 3: Monitorización Continua

Para asegurar una monitorización continua, puedes usar herramientas como Uptime Kuma y UptimeRobot. Estas herramientas pueden realizar las peticiones GET a tu endpoint /health y alertarte si detectan algún problema.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ir al contenido