I would like to build an Erlang/OTP-based system which solves an 'embarassingly parrallel' problem.
I have already read/skimmed through:
- Learn You Some Erlang;
- Programming Erlang (Armstrong);
- Erlang Programming (Cesarini);
- Erlang/OTP in Action.
I have got the gist of Processes, Messaging, Supervisors, gen_servers, Logging, etc.
I do understand that certain architecture choices depend on the application in concern, but still I would like know some general principles of ERlang/OTP system design.
Should I just start with a few gen_servers with a supervisor and incrementally build on that?
How many supervisors should I have? How do I decide which parts of the system should be process-based? How should I avoid bottlenecks?
Should I add logging later?
What is the general approach to Erlang/OTP distributed fault-tolerant multiprocessors systems architecture?