[erlang-questions] How to think and reason when designing process- and message-centric systems?
Thu Dec 15 13:04:45 CET 2016
Dear Erlang community,
This is my first email to the mailing list. I apologize in advance if this
is odd or off-topic.
Coming from an object-oriented and data-centric background, I have
cognitive difficulties when it comes to conceptualizing, thinking about and
designing systems consisting of modules, processes and key-value data
My brain reverts to thinking about classes, objects, inheritance trees,
encapsulation and SQL-style relational data models. I'm afraid this could
lead to unidiomatic Erlang system architectures and implementations, which
would be undesirable.
Here are some of the essential complexities I have difficulties grasping:
A) Identifying discrete modules and processes and finding good names for
B) Appointing supervisor and worker modules; defining process hierarchies.
C) Deciding which processes should communicate with each other and how.
D) Designing a sensible persistent data model with Mnesia or other NoSQL
data models (e.g. using CouchDB).
E) Deciding which processes should read and write persistent data records.
F) Incorporating global modules/"shared facilities" like event handlers,
G) Visualizing the system architecture, processes and communication lines;
what kind of graphics to use.
H) Organizing source code files into separate projects and directory
1) How do you unlearn "bad habits" from object-oriented way of thinking?
2) How do you think and reason about process-centric systems designs?
3) When designing a new system, how do you approach the above activities?
I would appreciate any practical tips, examples, "mind hacks" and resources
that might help.
Leif Eric Fredheim
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the erlang-questions