finds.dev← search

// the find

sqshq/piggymetrics

★ 13,934 · Java · MIT · updated May 2024

Microservice Architecture with Spring Boot, Spring Cloud and Docker

PiggyMetrics is a tutorial-grade Spring Boot microservices demo built around a simple personal finance app. It shows the full Netflix OSS stack (Eureka, Ribbon, Hystrix, Zuul, Feign) wired together with Spring Cloud, including OAuth2 auth, centralized config, and Docker Compose deployment. It's for developers learning microservice patterns, not for production use.

The scope is well-calibrated for a tutorial — complex enough to show real service-to-service auth, circuit breaking, and distributed tracing without being so large it's unnavigable. Each service genuinely owns its own MongoDB instance, so the database-per-service principle isn't just claimed but actually implemented. The Hystrix circuit breaker demo with staged latency simulation (0/500/800/1100ms) is a concrete, runnable teaching moment rather than a contrived example. Travis CI pipeline producing tagged Docker Hub images per commit is a useful detail most demos skip.

The Netflix OSS stack (Eureka, Ribbon, Hystrix, Zuul) is effectively end-of-life — Netflix stopped maintaining these years ago and Spring Cloud deprecated them in favor of Spring Cloud Gateway, Micrometer, and Resilience4j. Someone learning from this will learn patterns that are correct but using APIs they can't use in a new project. The repo hasn't had a meaningful commit since 2018 (last push 2024 was likely a minor bump) and still references Travis CI, which most projects have left. The OAuth2 setup uses the Password grant type for the UI, which was deprecated in OAuth 2.1 for good reason. Also no Kubernetes manifests — the Docker Compose approach works locally but leaves a gap if you're learning this to deploy anywhere real.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →