Erlang BEAM VM is an excellent choice for organizing communication between different services in distributed systems. With proper formalism, it is possible to express the logic of communication in a simple declarative way.
Kraken suggests the flow-based programming approach for organizing the interaction between services in a software system. It means that every interaction with the system is presented as an event. It goes through a predefined chain of components (pipeline), which call underlying services and modify the event. The final state of the event represents the result of the interaction.
Kraken provides JSON DSL for the definitions of pipelines and clients to underlying services. The interaction with the Kraken-based orchestrator is also carried out via JSON API.
One may think about Kraken as a Kubernetes for the orchestration layer of a system, but instead of defining infrastructure, one defines high-level application logic.