Fun story : i had to develop the same system for two different companies, one a startup with 3 employees (the founders) , the other a billion dollar business. Just a backend api & web interface, together with an iOS app displaying the content. I could use shiny new tech for the startup (which at the time was python on app engine and its nosql datastore, with a backbone.js framework), whereas the other one forced me t…
IT Runs on Java 8
511–520 of 556 posts
Re: IT Runs on Java 8
#512Earlier quoted context omitted.
Unlike the others, I'm going to disagree with what you've said. If you have a mono-repo set up you can develop like it's a monolith but with the added benefit that you don't have deploy the whole macro-service at once. I think people are just spinning up a bunch of unorganized services and calling them micro and then complaining about it. If you're on a small team that can build a clean monolith, the work to make the…
I have never seen a microservices architecture where transactions spanning services were trivial.
Re: IT Runs on Java 8
#513Earlier quoted context omitted.
> microservices definitely make a host of issues harder ... I agree with all the issues you've stated, but I'd like to add one more. Microservices arguably make it much easier to build systems with circulate dependencies leading to weird race conditions and deadlocks. Consider two units of code A and B. If implemented as classes, modules, or libraries, it's relatively easy to spot and prevent A calling into B which i…
There are few options, but what do you need beside a graph data structure? We had a pipeline consisting of microservices and Kafka topics. Simple if/then logic quickly became problematic so I implemented our flow control as a directed acyclic graph, and it helped tremendously. It's also easy to render your graph out with any number of visualization tools to quickly understand/validate work flows.
I don't see how graph data structure solves this problem. Suppose you've created a photo sharing app. One microservice, A, has the graph database and stores the photos. One service, B, uploads and downloads photos. And a third service, C, applies filters to photos.
It's pretty easy to architect these services such that the download service B uses the filter service C in some situations, and the filter service C uses the download service B in others. This is obviously a bad design, but with microservices it's easier to make these bad design choices because the folks who wrote one service have little information about the other.
Re: IT Runs on Java 8
#514Re: IT Runs on Java 8
#515Earlier quoted context omitted.
$30,000 for a Civic? You better be getting gold-plated cup holders at that price.
1x $1900 Civic 1x $100 eBay turbocharger 1x $1000 misc expenses 27x $1000 JDM long-block There's probably less fun ways to spend $30k on a Civic too
Example A - Honda Civic 1.6 i-VTEC
Registration Fees - S$220
OMV - S$19,370
Excise Duty (20 percent of OMV) - S$3,874
COE (as of 23rd March 2018) - S$38,000
ARF - S$19,370
VES - $0
Basic Cost of Car - S$82,460 (~ 60k USD)Re: IT Runs on Java 8
#516Meanwhile there are still young Java programmers who think that since 8 is the newest and sexiest thing, everything has to be written using lambdas and streams.
Re: IT Runs on Java 8
#517Earlier quoted context omitted.
> provides little concrete value to the business The concrete value doing such things add to our business is happy staff (which you mentioned), which means the best people don't leave, and stat excited and productive for the long term. Also, when hiring, because it helps us get the best people to join us in the first place. It's not just about "bleeding edge", it's about giving dev teams the freedom to do that if the…
The costs of doing such things include... 1. Half-done projects started by some happy staff who then went on to start the next project in the next shiny new thing and either more-or-less completed by someone who was just about capable of cut-n-pasting without understanding or who decided that some new shiny thing needed to be added to make the rest wonderful. 2. A monstrous stack of projects in 637 different programm…
Of course, letting someone write whatever and then move on and leave it to someone else is a problem, but that's a problem regardless of whether they used bleeding edge tech or not.
For example, I've personally seen more tech-debt sins in more traditional monolithic Java + rdbms applications than I have an any of the Go based micro-services + nosql/etc I've seen over the years. I'm not trying to prove that "bleeding edge" is therefore better because it's not. I'm saying it's irrelevant.
The problem of leaving behind unmaintainable crap isn't about the tech, it's about the management, the team processes, the prioritisation process etc.
Re: IT Runs on Java 8
#518Earlier quoted context omitted.
> Java has a big selection of GCs, and each has their bunch of knobs for tuning. And you have to pay attention to that stuff. You never have to touch them in the Java world either, unless you like making performance worse that is. I've never ever seen a case where fiddling with garbage collection parameters didn't make things slower. I worked with a guy who worked on a popular java compiler, and he says the same thin…
What sort of scale are you working at? At our scale, it is normal to look into these sorts of things. Reading and understanding and applying articles like the following is absolutely necessary. http://clojure-goes-fast.com/blog/shenandoah-in-production/
If the load gets too high, I just add another instance.
It's way more economical than wasting developer time fiddling with GC params.
Re: IT Runs on Java 8
#519Earlier quoted context omitted.
Jython seems to be much, much slower than CPython, actually: https://pybenchmarks.org/u64q/jython.php The only benchmark where it's faster is the one involving threads, which makes sense. CPython definitely has multi-threading support, but it also has the Global Interpreter Lock preventing threads from actually executing bytecode at the same time. Jython doesn't. People have written patches that successfully remove t…
I consider that as basically no multithreading support. CPython multithreading is useless in comparison. Those benchmarks indicate that the Jython compiler is far from optimal. The equivalent code rewritten in Java would be an order of magnitude faster. https://julialang.org/benchmarks/ (note the single Python outlier there is the result of calling a C library for matrix calculation). Anyway, the JVM and CPython are…
Re: IT Runs on Java 8
#520Earlier quoted context omitted.
We’re both making points based off anecdotal experience, so who knows. I have been a reader for the last 7 or 8 years, but my experience is just one subjective data-point. Having said that, the most apparent change to me is in the tone and substance of the comments rather than the front page. And it isn’t a huge change. Just noticeable for me.
You don’t have to use anecdotal experience. You can use the same link format for any day that Hacker News existed and see the same thing.