The Component Orchestrator is responsible for a fair resource distribution.
In a multi-tenant environment it must be guaranteed that a user or tenant (intentionally or unintentionally) may not get an unfair usage of shared resources such as CPU, Memory, Network, etc. It must be guaranteed that every integration flow gets a chance to be executed, close to the intervals defined by its Cron expression.
The Component Orchestrator is a micro-service defining the fairness policy and controlling that each user/flow/tenant is complying with that policy. The Component Orchestrator is responsible for:
- Protection from over-scheduling: if an execution of a flow takes longer than its scheduling interval, the following executions must be skipped.
- Making sure that a flow or its steps are not deployed multiple times
- If scaling is configured for a flow, the specified number of instances must be deployed
- Detection of policy violations and punishment of “bad citizens”
- Interacts with IAM to introspect provided IAM token.
- Gets events for starting a flow form the Flow Repository.
- Deploys containers to the Kubernetes cluster.
- Sends events into the event bus when the deployment is complete.
- Creates IAM tokens in IAM service.
- Gets Component information from the Component Repository.
- Gets Snapshots from the Snapshots Service.