Comment by jimbokun
Sometimes.
Sometimes it is one or more programs writing to a queue or topic, and other programs reading from that topic.
Or programs writing to and others reading from a Unix pipe.
Or programs talking to each other using HTTP.
Or Erlang processes communicating concurrently on one machine or across a network.
Or different programs sharing one database.
Or many objects communicating by passing messages in a small talk program.
There are many ways to encapsulate programs and have them interact.
Or to put it another way…clean architecture is how you arrange the code so that you don’t need to keep ALL of it in your head at once, just the big picture and this bit here.