Skip to content
Anthony Lapenna edited this page Jul 30, 2015 · 7 revisions

CPU

1. central-core

1.1 Goals

This component is polling data from the metrics component. It must be able to trigger scaling actions when user defined conditions ("rules") are met.

Must expose an UI for the user to create the rules.

1.2 Scaling rules

A scaling rule is a set of one or more metrics conditions, such as:

  • http requests / sec > 30000 on the frontend service
  • http session rate on the frontend service

1.3 Services

It should retrieves service definitions from the service registry.

1.4 Triggering actions & notifications

When a rule condition is met, the component must either send a notification or trigger a scaling action or both.

1.5 Adapters

It uses adapters to communicate with others services.

For now, only the following adapters exists for each components:

  • metrics: Prometheus adapter

A Consul adapter to communicate with the service registry should be added.

1.6 Genisys resources

It must be able to register genisys components either at startup or at runtime. If no genisys components are available, the central-core component will not be able to send any action (read-only mode).

The component could expose a HTTP API to manage genisys resources.

2. Genisys

2.1 Goals

This component is in charge of managing the compute resources.

2.2 Services

It should retrieves service definitions from the service registry.

2.3 Scaling compute resources

This component should receive scaling requests with a specified number of resources required for the service.

This request can optionally specify a compute resource where the service should be scaled. If the compute resource is not specified, the component must be able to determine where the service will be scaled (either in one or multiple compute resources).

2.4 Adapters

It uses adapters to communicate with the compute resources component (providers such as Docker, AWS, VMWare Vsphere...).

For now, only the following adapters exists:

  • genisys connector for Docker

Each connector is in charge of defining a service compute resource associated to the provider, such as container image for Docker, VM template for VMWare...

The component exposes a HTTP API to manage the adapters.