Live data from Hacker News

How Netflix uses Java

infoq.com

191–200 of 205 posts

Re: How Netflix uses Java

#191

Earlier quoted context omitted.

To be honest, over the almost 5 years we're into using it, I spent more time debugging funky stuff due to that design that it would've cost me to just do it by hand. By a big margin.

As a Spring power user, you sound like you're ranting against something you don't/didn't understand.

It's weird that some people including you directly attack my competence. As a power user you should have plenty of experience getting something to work that is not properly document, does not work how the documentation promised it to, or has weird problems on top of it. Look at idiotic things like this:

https://github.com/spring-projects/spring-boot/issues/33044

Take any similar issue and you'll see a bunch of people who try to find a solution for them because they just aren't repeatable at all. The underlying issue is the auto configuration doing things you can't follow quite properly. It's like it wasn't mean to be understood. Issues like the one I linked above also show me that the spring dev crowd also doesn't understand the ecosystem anymore. The problem is complexity and automagic.

/e: this is what I mean in a nutshell https://news.ycombinator.com/item?id=37839306 and that will happen regardless of how much you "learnt" about spring boot ...

Re: How Netflix uses Java

#192
post #180

Earlier quoted context omitted.

I'm not sure what "no compile time safety in this stack" even means in the context of a strongly-typed compiled language. If you are referring to the dependency injection container making use of reflection, then Spring Native graduated from experimental add-on to part of the core framework some years ago. You can now opt for Quarkus/Micronaut-style static build-time dependency injection, and even AOT compilation to G…

My experience, from memory; a few of the details might be wrong (e.g. it probably wasn't Redis, but it was some kind of datastore) but the basic experience is what happened: Q: Why does my webapp run on most of our tomcats but not this one? A: That tomcat server has the redis client libraries on the classpath, so Spring Boot automatically started up a connection pool connecting to localhost on the default port, and a…

Thanks for the example, I feel you. That's the essence of what I'm criticising. People go on about me being incompetent and not having read the documentation never seemed to have had this issues. I sometimes feel like even the spring devs don't understand what they're doing anymore.

Re: How Netflix uses Java

#193
post #112
post #78

Earlier quoted context omitted.

"This person" makes rather relevant comment on Spring boot's severe shortcomings. Whereas your comment from throwaway account is blabbering nonsense.

Their comments on the shortcomings boil down to, "I didn't spend any time learning how this works."

Things like these (https://news.ycombinator.com/item?id=37839306) are not solved by "learning how it works". Nice try to attack my competency tho

Re: How Netflix uses Java

#194
post #188
post #115

Early on (15+ years ago) I spent a few weeks there on contract and I noticed they used Java EVERYWHERE, and not always well. They had a CS app named after a key Star Wars character that was in all likelihood a breach of the Geneva Convention. A code atrocity with the performance of a sloth on its 8th bong rip with a UX from hell.

Netflix should make a documentary about this.

Ha..Ha.Ha

Re: How Netflix uses Java

#195

Ah, the way they break out artwork calls explains the weird behaviour I see with my U.K. Netflix account in Portugal - English titles, Portuguese posters, regardless of language preferences.

Yes because you’re being served the Portugal catalog. English is simply a localization setting that can be applied to any region.

Yet you tend to lose english subtitles when travelling in certain regions.

Re: How Netflix uses Java

#196
It seems that this article should be titled "How Netflix uses JVM" (not "Java").

The article is superficial, mentions Java but seems that Groovy had a more important role there. But in the end, it really talks about JVM.

It reads like a PR piece from a Oracle and Netflix partnership to promote Java. Oracle have done that before.

Re: How Netflix uses Java

#197

Earlier quoted context omitted.

As a Spring power user, you sound like you're ranting against something you don't/didn't understand.

It's weird that some people including you directly attack my competence. As a power user you should have plenty of experience getting something to work that is not properly document, does not work how the documentation promised it to, or has weird problems on top of it. Look at idiotic things like this: https://github.com/spring-projects/spring-boot/issues/33044 Take any similar issue and you'll see a bunch of people…

I can definitely relate to these sorts of problems and I have faced them many times.

Honestly I have gotten so use to reading the decompiled source of code in IntelliJ to determine how to enable / disable items it is second nature.

Given the expressiveness and power behind the system that is a trade off I am willing to take. To a certain extent I think it is a trade off of using a tool that has so many permutations.

What you are saying is certainly justified.

Re: How Netflix uses Java

#199
post #106

Earlier quoted context omitted.

This is just... ignorance; your argument is basically, "I don't understand/want to learn how X works; therefore, X must be garbage"

If you read more of my responses you'll see that I've been a Spring user for quite some time and know how it works. I just dislike how it works. Do you have any argumentation or did you just want to call me ignorant?

Yes, and now I'm even more convinced that you have no idea what you're doing or talking about in regards to the framework and it's ecosystem.

Re: How Netflix uses Java

#200
post #62

Earlier quoted context omitted.

I've never used any other webstack (and I've used several, in several languages) where it was so hard to figure out why different tests pollute each other, causing subtle failures depending on the order of test execution. Sure, you could say that it's all a matter of learning the right way, but there are just a terrible amount of footguns. Debugging why something doesn't work in Spring can also be a nightmare. And th…

> "...failures depending on the order of test execution." Every time I've seen issues where the order of test execution matters, it's either been: (1) someone one writing integration tests and calling them unit tests, or (2) transaction management issues with H2 or some other embedded test database. For #1, you're going to have a bad time with any stack. For #2, transaction management with Spring Data JPA is admitted…

> Every time I've seen issues where the order of test execution matters, it's either been [...]

Well, I've seen other cases - mostly regarded to mock pollution. And you may say that those are poorly written tests, and maybe you're right, but the problem - again - is that there are too many footguns. Even if you don't make mistakes, your coworkers probably will.

> I don't know what could make Spring more challenging to troubleshoot than any other Java framework

Here are some examples:

- Understanding what config and which beans are applied and why (especially in tests)

- Understanding and debugging @Transactional

- Understanding and debugging Spring Security

- Debugging why a request doesn't hit the controller method you think it should (this mostly relates to the former)

> I'm simply saying that in any "X Stack Considered Harmful" discussion, eventually you have to put your cards on the table and disclose which stack you are comparing X to.

Any framework that doesn't rely on reflection and prefers explicit config over implicit magic (that doesn't mean that there can't be any default values or behaviour). For the JVM stack, that could be something like Ktor, but there's others (even in pure Java). Even in dynamically typed languages, you have options like Sinatra and Flask. They can't give you type-safety, but at least they're more easily debuggable. Even Spring itself has tried to provide an alternative with Spring Fu, but unfortunately, there seems to be little momentum and it's still experimental: https://github.com/spring-projects-experimental/spring-fu

Post reply on HN