Project

Spring Boot Starters

Reusable Spring Boot auto-configuration libraries for transactional outbox pattern, observability, and distributed tracing in microservices.

The problem

Building microservices requires solving the same problems repeatedly: atomic event publishing, context propagation across async boundaries, cardinality control in observability pipelines, and idempotent message consumption. Each team implements these differently, leading to fragmented traces, inconsistent retry logic, and high-cardinality metrics explosions.

Approach

Created a suite of focused Spring Boot starters that encode opinions about how to solve these problems consistently across a microservice mesh. Each starter is independently deployable and composable, allowing teams to adopt one, several, or all without vendor lock-in.

Key starters:

  • spring-boot-starter-outbox: Transactional outbox pattern for reliable event publishing with automatic relay and retry logic
  • spring-boot-starter-observability: Enforced context propagation, cardinality controls, and extension points for custom instrumentation
  • spring-boot-starter-idempotency: Consumer-side deduplication with pluggable backends (in-memory, Redis, database)

Trade-offs

  • Auto-configuration over manual setup: Faster onboarding but requires trust in the starter’s opinions. Overrideable via @ConditionalOnMissingBean.
  • Outbox relay over broker transactions: Avoids distributed transaction complexity but introduces a scheduled component that must be monitored.
  • Platform-level observability over per-team instrumentation: Ensures consistency but loses flexibility for teams with unique requirements.

Outcome

A production-proven library reducing time-to-reliability for event-driven systems. Eliminates boilerplate around event publishing, context propagation, and idempotent processing. Used across fintech and telecom microservice architectures handling millions of events per day.