Kraken suggests the flow-based programming approach for organising the interaction between the parts of the system (specific services).
It means that every interaction with the system is presented as an “input event” — the data structure that contains all the necessary information about the interaction. The event then goes through a predefined chain of “components” (“pipeline”), the components call underlying services and modify the event. The final state of the event represents the result of the interaction.
Kraken provides a simple declarative JSON DSL for the pipeline definitions as well as for the definitions of the “services” — clients to underlying services in the system. The interaction with the Kraken-based agent (orchestrator, or control panel) is also carried out via JSON API.