Still Active
Container orchestrators and load balancers need a programmatic way to determine if an instance is healthy. A dedicated endpoint allows automated recovery — unhealthy instances are restarted or removed from rotation.
Health check endpoints became standard practice with the rise of container orchestration. Kubernetes formalized two probe types: liveness (is the process alive?) and readiness (can it serve traffic?). AWS ELB, GCP Load Balancer, and Azure Application Gateway all use similar mechanisms.
Why it became standard: Before health checks, failed instances stayed in rotation until a human noticed. In a microservices architecture with dozens of instances, manual monitoring was impossible. Health checks automated the detection-and-recovery loop.
The hidden cost: Health checks are not free. Each probe is an HTTP request that consumes a connection, a thread, and potentially downstream resources. Under normal load, this overhead is negligible. Under stress — exactly when health checks matter most — the overhead compounds. This is the Ouroboros pattern: the observer participates in what it observes.
Best practice evolution: Modern health check guidance distinguishes between shallow checks (process alive, port open) and deep checks (database reachable, dependencies healthy). Deep checks are more informative but more dangerous — they couple health check availability to dependency availability, creating cascading failure vectors.