Live data from Hacker News

Spring Boot Done Right: Lessons from a 400-Module Codebase

medium.com

51–60 of 100 posts

Re: Spring Boot Done Right: Lessons from a 400-Module Codebase

#51

Earlier quoted context omitted.

Funny how that works - I started with Spring both before and after Boot as well as some Scala. I wouldn’t trade Java / Spring for the world. It forces a coherence, perhaps not perfectly, but it provides guidelines to follow. I’ve been stuck in Node / TypeScript / Microservice hell for most of the last 15 years and I couldn’t hate it more. The open-source ecosystem is extremely lacking, even now, on something like a g…

I’ve Been stuck with Spring for many years too and I think it’s just awful choice for micro services that need to scale, simply due to startup time. Not to defend Nodejs ecosystem - your points are 100% valid. With that in mind, I think Go is much better option.

Spring may be a bad choice for microservices (context required, because it is not true in general), but it is strange to compare it (DI framework/mvc/orm abstraction etc) with Go (programming language). Java exists in many flavors, you do not have to use Spring to build a performant microservice.

Re: Spring Boot Done Right: Lessons from a 400-Module Codebase

#52
post #26

Earlier quoted context omitted.

it doesn't mean that usage of something being very high is a clever idea. lots of people take meth - so are you gonna take meth too. ```@EnableConfigurationProperties(CasConfigurationProperties.class) @EnableScheduling @ConditionalOnFeatureEnabled(feature = CasFeatureModule.FeatureCatalog.SimpleMFA) @AutoConfiguration @Import({ CasSimpleMultifactorAuthenticationComponentSerializationConfiguration.class, CasSimpleMult…

That's a ridiculously extreme example, IME. Having been working with Java for 25+ years, I've never seen anything like that in code written by a shop I worked at, FWIW. And as a corollary I'm about 100% certain that you could find some equivalent extreme case to use as an example to dunk on any language/platform. this is what we mean by "JavaCulture" - java | JVM really wonderful things but the culture is what sets t…

You have worked at some outstanding java shops then! In my experience the article is precisely representative of Java culture even today

Re: Spring Boot Done Right: Lessons from a 400-Module Codebase

#53

Ops person here who has supported Java/SpringBoot applications. I think most of dislike of Java apps comes not from language or framework BUT from fact that most Java using workspaces are filled with mediocracy. They tend to be businesses with products that have extreme moats and thus quality of software barely matters. I imagine most people who would even read this medium article are dreaming of better than that.

Alternatively, I think of Java and Spring Boots as being incredibly valuable by letting companies that don't really have software as a core competency to make reasonably performant and structured applications. Mediocrity will never not exist, and you unlock a lot of value by optimising for it.

Exactly. It allows to build boring stuff at a fraction of what a SV startup would burn using some fancier tech. And most problems in the world are boring stuff.

Re: Spring Boot Done Right: Lessons from a 400-Module Codebase

#54

Earlier quoted context omitted.

Funny how that works - I started with Spring both before and after Boot as well as some Scala. I wouldn’t trade Java / Spring for the world. It forces a coherence, perhaps not perfectly, but it provides guidelines to follow. I’ve been stuck in Node / TypeScript / Microservice hell for most of the last 15 years and I couldn’t hate it more. The open-source ecosystem is extremely lacking, even now, on something like a g…

I hear this a lot from a lot of my coworkers who like Java Spring - they trust Spring to do things right, more than themselves. On the other hand, I hate Java Spring because I feel like I don't trust it - it doesn't let me look into and understand the internals easily, making me feel like I'm afloat on a pile of abstracts I'm not allowed to look down into. Looking at some other projects enterprise js/ts codebases tho…

> it doesn't let me look into and understand the internals easily

what does this mean? you can single step into framework code

Re: Spring Boot Done Right: Lessons from a 400-Module Codebase

#55
post #26
post #2

Hacker news likes to dunk on Spring Boot, but its usage in enterprises is very very high.

it doesn't mean that usage of something being very high is a clever idea. lots of people take meth - so are you gonna take meth too. ```@EnableConfigurationProperties(CasConfigurationProperties.class) @EnableScheduling @ConditionalOnFeatureEnabled(feature = CasFeatureModule.FeatureCatalog.SimpleMFA) @AutoConfiguration @Import({ CasSimpleMultifactorAuthenticationComponentSerializationConfiguration.class, CasSimpleMult…

This is still relatively tame! I've seen stuff where there are layers of annotations some of which will spawn docker containers effectively bringing docker compose into java application as part of the set up. Some containers would need to come up, do a quick file change, then die and the the rest of configuration proceeded (this was for an automated test tool). Entirely stupid, could have been written with just couple classes of Java and a docker compose. But it is a culture. It is a culture that I think ultimately will destroy Java.

Re: Spring Boot Done Right: Lessons from a 400-Module Codebase

#56

Does this app take 5 minutes to start? That's so much dynamic Spring magic. Also, how do you keep track of control flow when anything at anytime could have been overridden by something else? It seems like tracing and debugging this thing would be like exploring someone else's codebase every time.

> It seems like tracing and debugging this thing would be like exploring someone else's codebase every time.

Oh man, just wait till you start sprinkling some AOP in there. My debugger is damn near useless sometimes as I try to follow bizarre paths between parts of my code.

Re: Spring Boot Done Right: Lessons from a 400-Module Codebase

#57
post #13
post #2

Hacker news likes to dunk on Spring Boot, but its usage in enterprises is very very high.

I'm not that deep into Java, but I was under the impression that things like Quarkus were starting to replace Spring in enterprise use...

It will take some time for Quarkus to become a significant enough presence in the market share. In my experience, for the majority of Java shops Spring Boot does just fine because it worked before and it will probably work in the future.

Re: Spring Boot Done Right: Lessons from a 400-Module Codebase

#58
post #47

Does this app take 5 minutes to start? That's so much dynamic Spring magic. Also, how do you keep track of control flow when anything at anytime could have been overridden by something else? It seems like tracing and debugging this thing would be like exploring someone else's codebase every time.

Who cares about startup times if apps is started only when new version is deployed? And 5 minutes is a bit long, maybe someone is doing some database operations during start?

I care because every second of that startup time is lost productivity and focus. For me and any developer on my team. Hot reload only works if no class or method has changed so that's not a solution. I've worked on codebases of similar size and complexity in many languages, and the developer experience of a compile and restart that takes less than five seconds is game changing.

Re: Spring Boot Done Right: Lessons from a 400-Module Codebase

#59
post #56

Does this app take 5 minutes to start? That's so much dynamic Spring magic. Also, how do you keep track of control flow when anything at anytime could have been overridden by something else? It seems like tracing and debugging this thing would be like exploring someone else's codebase every time.

> It seems like tracing and debugging this thing would be like exploring someone else's codebase every time. Oh man, just wait till you start sprinkling some AOP in there. My debugger is damn near useless sometimes as I try to follow bizarre paths between parts of my code.

Totally! But it doesn't have to be this way.

Re: Spring Boot Done Right: Lessons from a 400-Module Codebase

#60

Earlier quoted context omitted.

I’ve Been stuck with Spring for many years too and I think it’s just awful choice for micro services that need to scale, simply due to startup time. Not to defend Nodejs ecosystem - your points are 100% valid. With that in mind, I think Go is much better option.

Spring may be a bad choice for microservices (context required, because it is not true in general), but it is strange to compare it (DI framework/mvc/orm abstraction etc) with Go (programming language). Java exists in many flavors, you do not have to use Spring to build a performant microservice.

Fair enough! Indeed, there are ways to build performant microservices on Java, e.g. Qwarkus + GraalVM, but I've never seen anyone in enterprise world is doing it - 99% of services are still being build on Spring Boot, so in my mind Java in SB are inseparable.
Post reply on HN