Essential session storage is required to sign in. Optional analytics remain off unless you allow them.
Build a Spring Boot 3 microservice ready for production. Expose Actuator with health (liveness/readiness groups) + metrics via Micrometer (Prometheus endpoint). Call a second service with RestClient (or WebClient) wrapped in resilience — timeouts, retries, a circuit breaker (Resilience4j). Decouple a side effect with an application event (@EventListener) and/or @Async. Externalize config with @ConfigurationProperties + profiles, containerize it (Dockerfile or buildpacks), and cover it with a test pyramid (@WebMvcTest, @DataJpaTest, @SpringBootTest). Document the readiness/liveness and metrics endpoints.
Actuator health with liveness/readiness groups + Micrometer metrics exposed and explained; sane endpoint exposure.
Outbound calls via RestClient/WebClient with timeouts/retries/circuit breaker; events or @Async used to decouple.
@ConfigurationProperties + profiles; a working container image (Dockerfile/buildpacks); runnable fat JAR.
Slice tests (@WebMvcTest/@DataJpaTest) plus integration (@SpringBootTest) that actually pass.
Use this README structure to make the work reviewable.
DevPath fetches a read-only, size-capped snapshot. Submitted code is never executed.
# A production-ready microservice ## Goal Build a Spring Boot 3 microservice ready for production. Expose Actuator with health (liveness/readiness groups) + metrics via Micrometer (Prometheus endpoint). Call a second service with RestClient (or WebClient) wrapped in resilience — timeouts, retries, a circuit breaker (Resilience4j). Decouple a side effect with an application event (@EventListener) and/or @Async. Externalize config with @ConfigurationProperties + profiles, containerize it (Dockerfile or buildpacks), and cover it with a test pyramid (@WebMvcTest, @DataJpaTest, @SpringBootTest). Document the readiness/liveness and metrics endpoints. ## Acceptance criteria - [ ] Observability: Actuator health with liveness/readiness groups + Micrometer metrics exposed and explained; sane endpoint exposure. - [ ] Resilient integration: Outbound calls via RestClient/WebClient with timeouts/retries/circuit breaker; events or @Async used to decouple. - [ ] Config & packaging: @ConfigurationProperties + profiles; a working container image (Dockerfile/buildpacks); runnable fat JAR. - [ ] Test pyramid: Slice tests (@WebMvcTest/@DataJpaTest) plus integration (@SpringBootTest) that actually pass. ## Verification - [ ] Document installation and run commands. - [ ] Record automated checks and their exact commands. - [ ] Add representative output, screenshots, or a short demo where useful. - [ ] Confirm failure paths and known constraints. ## Decision log ### Decision title - Context: - Choice: - Alternatives considered: - Tradeoffs: ## Evidence - Link each rubric criterion to the file, test, or artifact that demonstrates it. ## Known limitations - List what is intentionally out of scope and what should be improved next.