METABYTE
Back to articles

3 Years of Spring Boot in Production: What Docs Won't Tell You

Three years running Spring Boot in production on Lakaut — here's the stuff that never makes it into the official guides.

10 mai 20262 min read
3 Years of Spring Boot in Production: What Docs Won't Tell You

Three years of wrestling with Spring Boot in production on Lakaut — not your average "Hello World". We've collected enough logs, incidents, and metrics to write a book titled "How Not To". Official documentation, as usual, paints a rosy picture where all defaults work perfectly. Spoiler: they don't.

First thing we learned: default JVM settings on Railway are a disaster for real load. Memory leaks, GC panics, and you're watching your app crash with OutOfMemoryError. We had to manually tune -Xmx, -Xms, and pick a garbage collector. G1GC saved us, but not before we tried everything, including Serial GC, which seems designed for torture.

Second: logging. Docs say log everything, but in production with limited storage, that's a fast track to bankruptcy. We configured log levels to be verbose in dev and only critical in prod. And yes, we added log rotation — otherwise disk fills up in a week.

Third: metrics. Micrometer and Prometheus are cool, but without custom alerts they're useless. We spent weeks figuring out which metrics actually matter: p99 latency, active DB connections, GC pause frequency. Without them, you're flying blind into a cliff.

Comment from METABYTE studio: We've been there too, so in our projects we always budget time for infrastructure tuning. And yes, we once forgot to turn off debug logs in production — it happens, but better not.

NEXT STEP

Liked the approach?

We apply the same principles to client projects: AI, automation, products that don't die after launch.