Diyotta provides a scalable architecture by using single Controller to manage all the components and multiple Agents to perform the tasks. The Controller reads the details of the logic implemented by the user from the metadata and converts them into instructions that can be consumed by the Agent. Based on the instruction the Agent can either extract the data, load the data or transform the data. The instructions generated by the Controller depends on the system where it needs to be executed. Below are the details of how the components communicate with one another.

The Controller accepts the inputs from the user through User Interface and takes necessary actions. The inputs can be in form of business logic implemented in the developer modules, administrative actions like adding users or setting permissions and roles or operational actions performed through monitoring modules. Based on the user input the Controller creates instructions which is communicated to different components to execute.

The Controller is tightly integrated with the metadata where all the application metadata, business logic, administrative metadata and operational statistics is stored. It saves new and modifications to the logical code, admin level changes and operational state changes in metadata repository. The Controller manages the role-based login to Diyotta and permissions to various user interface components and actions using the details saved in the metadata. To execute any code, the Controller reads the information from the metadata repository and orchestrates the steps to be performed. It creates instructions for each step as defined in the metadata and communicates it to the Agents.

When executing any process flow the Controller is responsible for only orchestrating the flow based on the order and conditions defined for each step. The operations to be performed on the data are executed by the Agents. The Controller creates instructions for the Agent based on the system where it needs to be executed. There can be one or multiple Agents registered with the controller depending on Diyotta installation. The Agent assignment is done by user during code development. The Controller reads this information from the metadata and assigns the instruction to that Agent. The Agent performs the task assigned to it and provides a feedback to the Controller indicating the status and any statistics captured.

The instructions created by the Controller could be to extract the data from source system, load the data into target system or transform the data in the processing platform. Single Agent can perform all these tasks as instructed by the Controller. When using two different Agents – one to extract the data and other to load, the Controller creates instruction for the Agent at source system to extract and transfer the data to the Agent at target system. The Agent at target system will then receive another instruction to load the data to the target system. The Data pulled from the source will only be transferred from Agent to Agent and will not go through the Controller.