# 🔍 **Healthchecks - DEJO Node**

## 📌 **Visão Geral**
Os healthchecks do **DEJO Node** garantem que a aplicação está rodando corretamente e que seus componentes essenciais estão operacionais. Eles são divididos em três categorias principais:

1️⃣ **Liveness Probe** → Verifica se o processo ainda está ativo.
2️⃣ **Readiness Probe** → Indica se o serviço pode receber tráfego.
3️⃣ **Startup Probe** → Confirma se a aplicação inicializou corretamente.

---

## **1️⃣ Endpoints de Healthcheck**

### **1.1 - Liveness Probe**
📌 **Endpoint:** `GET /health/liveness`
- Retorna se o processo do nó está ativo e não travou.
- Se falhar, o Kubernetes pode reiniciar o pod.

📌 **Exemplo de resposta:**
```json
{
  "status": "ok",
  "message": "Node is alive",
  "timestamp": 1712456789
}
```

---

### **1.2 - Readiness Probe**
📌 **Endpoint:** `GET /health/readiness`
- Verifica se o nó está pronto para receber tráfego.
- Avalia conexões com banco de dados, consenso e rede P2P.

📌 **Exemplo de resposta (sucesso):**
```json
{
  "status": "ready",
  "dependencies": {
    "database": "ok",
    "consensus": "ok",
    "p2p": "ok"
  },
  "timestamp": 1712456789
}
```

📌 **Exemplo de resposta (falha):**
```json
{
  "status": "not_ready",
  "dependencies": {
    "database": "error",
    "consensus": "ok",
    "p2p": "ok"
  },
  "timestamp": 1712456789
}
```

---

### **1.3 - Startup Probe**
📌 **Endpoint:** `GET /health/startup`
- Indica se o nó foi iniciado corretamente.
- Útil para evitar que o Kubernetes mate o pod prematuramente.

📌 **Exemplo de resposta:**
```json
{
  "status": "initialized",
  "message": "Node startup completed",
  "timestamp": 1712456789
}
```

---

## **2️⃣ Configuração no Kubernetes**
📌 **Exemplo de configuração no `deployment.yaml`**:
```yaml
livenessProbe:
  httpGet:
    path: /health/liveness
    port: 8080
  initialDelaySeconds: 3
  periodSeconds: 5

readinessProbe:
  httpGet:
    path: /health/readiness
    port: 8080
  initialDelaySeconds: 10
  periodSeconds: 10

startupProbe:
  httpGet:
    path: /health/startup
    port: 8080
  failureThreshold: 30
  periodSeconds: 10
```

---

📌 **Este documento será atualizado conforme a evolução do serviço.**

🚀 **DEJO Node: Garantindo disponibilidade com healthchecks inteligentes!** 🔥