Java 21 + Spring Boot
Receives requests, applies payment rules, schedules reconciliation.
Inspect source ↗Explain the reason for every tool, the path of a request, and what changes when a component fails.
PayGuard handles provider timeouts after a simulated charge. The API persists an UNKNOWN payment keyed for idempotency. A worker later queries the provider and reconciles it to SUCCESS. I tested the request flow in Java integration tests and on a GitHub runner, then deployed locally with Compose and Minikube and instrumented it with metrics and logs.
Receives requests, applies payment rules, schedules reconciliation.
Inspect source ↗Stores payment state and retries across restarts; migrations version the schema.
Inspect source ↗Associates retry with the same payment ID; prevents duplicate payment creation.
Inspect source ↗Reproduces timeout after charge without any external gateway or money.
Inspect source ↗Runs the local API and observability dependencies.
Inspect source ↗Probes, restart, scaling, storage, rollout, and rollback.
Inspect source ↗Scrapes measurements and renders dashboards; evaluates SLO rules.
Inspect source ↗Ships PayGuard container logs into a searchable store.
Inspect source ↗Declares isolated cluster resources and checks the live result.
Inspect source ↗Hosted tests and live demo; separate self-managed pipeline definition.
Inspect source ↗The provider could process the charge before losing the response. UNKNOWN preserves uncertainty until a status check settles it.
A repeated request with the same key maps to the existing payment record and returns the same ID.
Kubernetes starts a replacement. Payment state remains in PostgreSQL, whose persistent volume survives the application pod restart.
Terraform describes isolated Kubernetes resources. Ansible reads the live cluster and verifies expected operational state.
No. Pages serves these static explanations; GitHub Actions runs a temporary API for repeatable proof. The local workstation can run the complete stack; GitHub Pages shows dated Grafana and Prometheus captures produced by temporary GitHub runners.