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.
