The goal is to create a pluggable component for health check feature in aah.
Goals:
Design:
- Create a go library
- Spec:
- Provide an
interface for implementing health check reporter
- interface method
func Check() error
- Provide a method to create new health check component
- Provide methods to add one or more health check reporter into health check registry with or without interval duration to call
- e.g.:
hc.AddReporter(healthcheck.Config{/* report name, implementation based on above interface, duration, skip on error, etc... */})
- Provide a method to register controller and route for the aah application (by domain name if multiple domains application)
- For non-Kubernetes - accept URL relative path for the route - returns the response payload with status code
- For Kubernetes - to add liveness and readiness endpoints (accept URL relative path for the route for both endpoints) - return only status code with empty body since Kubernetes only cares about status code
- Status Codes for response
200 OK if every registered health checker/reporter returns nil
503 Service Unavailable if any registered checker/reporter return non-nil except skip on error
Sample response payload (a conceptual idea, yet to be finalized)
{
"status": "OK", // OK or Service Unavailable
"timestamp": "RFC3339 or ISO 8061", // yet to be decided
"reportname": bool, // true or false, this line will be repeated for all registered health checker/reporter
}
The goal is to create a pluggable component for health check feature in aah.
Goals:
Design:
aahframe.work/ec/healthcheck- yet to be doneinterfacefor implementing health check reporterfunc Check() errorhc.AddReporter(healthcheck.Config{/* report name, implementation based on above interface, duration, skip on error, etc... */})200 OKif every registered health checker/reporter returnsnil503 Service Unavailableif any registered checker/reporter returnnon-nilexcept skip on errorSample response payload (a conceptual idea, yet to be finalized)