I’ve just jumped into a new project that combines many components written in different languages (Python, Ruby, Java & Perl). The project is kind of a pipeline that process documents and can be run as a command line shell script. The pipeline/shell script passes contents from tool to the other then finally print an output into a file. During the process some tools do print files then these files are used as an input into other tools.
My job in this project is to bring it to the web. So my question is what is the proper/best practices way/architecture that should be followed in such a project where you have many components writing in different languages?
And is Node.js the best tool/language that can combine components as LinkedIn says: “If you look at Node, the thing it’s best at doing is talking to other services.”
I think the proper answer could fill books…
That said, I would suggest to avoid the unholy mess of tiny modules talking to who knows who, by implementing some kind of service bus. If you can get that right, all the languages/subprojects will have to be compatible with the bus only, not with each and every one of the others. That way the complexity will drop from N factorial to 2xN.