tags:

views:

381

answers:

5

I think Erlang is very well suited for server systems developed in my workplace (currently developed in Java). I am a bit skeptical how this would be accepted both by developers (who have no idea about functional or Erlang) and by managers.

Any ideas on how to approach the issue? I am thinking about some hybrid system, where the hardcore highly reliable infra uses Elrang, and app specific stuff developed in Java (as nodes?)

A: 

Erlang has the interfacting techniques (like ports and linked-in drivers) to interface Erlang to a program written in C, Python or Ruby.

demas
Interfacting techniques? You mean interfacing techniques?
tuinstoel
Yes, of course.
demas
+8  A: 

There are a few approaches, and neither have any guarantees to actually work

  • Implement something substantial in a short time frame, perhaps using your own time. Don't tell anyone until you have something to display that works. Unless you have a colleague in on it.
  • Pull up lots of Erlang projects that are good demonstrations of the features you want. Present it to your managers and try to frame them about the risk in keeping using Java with this kind of technology available.

If the company you work for actually have a working code base in Java already, they're not likely to take you seriously when you suggest to rewrite it in another language.

The true test that you believe in Erlang being a much better choice: Quit and start up a competing company and bring the technology insight you have in your current industry. Your managers are really comparing a similar risk-scenario as you would do if you were to quit your job, and they are looking for the same assuring facts for success as you would do, to consider leaving a "safe" paycheck.


As for how to integrate, check out the jinterface application in Erlang. It allows Java code to send messages to Erlang nodes, and it allows Java to expose mailboxes to the Erlang nodes as if there were Erlang processes.

Christian
Any experience with Jinterface ? Can a Java app that use Jinterface monitored/restarted too by the Erlang runtime ?
bugspy.net
No, it is just participating. You need to explicitly start and monitor the jvm process from Erlang if you want the JVM to be supervised.
Christian
+6  A: 

It's all about ROI (Return On Investment) to a manager: a manager will be concerned about performance (of the company). In order to appeal to his business nature, you'll have to make a case for it using dollar$ (or whatever appropriate currency).

Beware that undertaking a "skunkwork" project on the side to "prove" your solution based on Erlang might backfire: "so you had time to play with Erlang, why didn't you spend the time on the project then?" (Of course, not all managers/companies would think this way).

You have to take into account the whole proposal e.g. impact on the team, skills to be developed etc. It's all about money.

If I have an advice for you: start small, plant a seed, nurture it and watch it grow.


A wise man once said to me:

"It's not about technology, it's about the product & market".

jldupont
Disclaimer: I am a big Erlang fan **but** when it comes to business, I have to think about $ first, technology second.
jldupont
As a big Erlang fan, can you comment on the feasibility of a Erlang-Java hibrid ?
bugspy.net
hmmm... how much "hybrid" are we talking about here? From the context you set forth above, I would probably a "Supervision" layer based on Erlang i.e. have Erlang Supervisors watch over Java nodes. Also, a good step might to introduce a "messaging layer" (such as AMQP/RabbitMQ based on Erlang). Although there are Java bindings for AMQP, it could be a way to "sneaking-in" Erlang whilst still making business sense. Just some thoughts of course.
jldupont
+3  A: 

Start by not targetting a rewrite but using erlang for a new feature/project. Rewrites can be expensive and taking a chance on erlang for something that is already a time consuming and costly undertaking is a hard sell. But if there is a new piece that could be done in erlang and java, you stand a better chance. The project will be small enough hopefully that you can discover early if erlang is a good fit and adapt accordingly. And when erlang proves itself in that project you will have better data to make your case with.

Jeremy Wall
+2  A: 

We're introducing RabbitMQ into our infrastructure, which currently runs a combination of C++, Java and Python applications. I'm not specifically intending to move the team towards Erlang, but if I were, introducing a well-written third-party tool that just happens to use Erlang is a very good way to get the foot in the door.

One major caveat is that while Erlang is a wonderful language to learn, the surrounding technology (OTP in particular) has a huge learning curve and is extremely primitive in many ways (debugging, IDE's, etc.). It is getting better all the time, but reluctant converts will crucify you if you don't warn them about the pain of learning to program in a radically different environment. Even simple things like the lack of code-sense technology (E.g., type 'foo.' and the IDE tells you what methods you can call on foo) can leave a really bad taste in the mouth.

Marcelo Cantos