Hacker News new | ask | show | jobs
by alrs 4304 days ago
Wishful thinking: I hope this prefaces an Elasticsearch rewrite in Go. I'm happy to be rid of the JVM wherever I find it.

No hard feelings, but we just spent 20 years crowbaring Microsoft into irrelevance. It's time to get started on Larry.

5 comments

Why on earth would you rewrite ElasticSearch in Go ?

You would have woeful monitoring support compared to the huge array of tooling for JVM, an average GC implementation and almost zero integration with most enterprise applications e.g. Hadoop. All so what, you can go from one multinational (Oracle) to another (Google).

I could totally imagine wanting to rewrite ElasticSearch, and go seems like a reasonable language to do it in. ES seems to handle downtime extremely poorly, and is very difficult to make "safe" for people to write arbitrary queries against it. And by difficult I mean there is circuit breaker and nought else.
>All so what, you can go from one multinational (Oracle) to another (Google).

Or from one Larry to another.

Valid, though I never have to click through any kind of EULA crap to use Go.

So long as Go is supported in gcc, I'm not particularly worried.

Presumably you just want to replace the _Oracle_ JVM? Does OpenJDK meet your needs? How about Dalvik / ART or RoboVM?

I'd love to hear what you're trying to achieve here ... I have often bemoaned the JVM, but have also found that it's often better than many alternatives.

Whenever you get in trouble with Elasticsearch, the first question a consultant will ask is, "why aren't you running the Oracle JVM?"

Technically it supports OpenJDK. In practice, circumstance usually drags you to Oracle.

The problem with Elasticsearch is not the JVM.

A sample of the problems I have:

a) Broken, hand-rolled consensus/consistency model [1]

b) Designing cluster layout is a bit of a "black art" due to missing/incomplete documentation and complexity of cluster options.

c) Promiscuous network activity with default settings: spin up a new node and it will cluster with any existing ES nodes automatically.

That's just the beginning. ES is a bit of an operations nightmare to deal with--it's an example of enormous complexity just for a fairly simple service (text search).

1. http://aphyr.com/posts/317-call-me-maybe-elasticsearch

If only Go offered the same abstraction capabilities of any JVM language.
Aren't we going to fight Google as well?