[erlang-questions] How to think and reason when designing process- and message-centric systems?

IRLeif <>
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,
loggers, etc.
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.

Kind regards,

Leif Eric Fredheim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20161215/69306e26/attachment.html>

More information about the erlang-questions mailing list