9. Project components

This page intends to describe the different software projects and components used for ArmoniK internals. To learn how to install or use ArmoniK, please refer to these repositories:

9.1. Common Library

  • ArmoniK.Core.Common provides the components required by all the other components of ArmoniK.

  • ArmoniK.Core.Base provides the classes and interfaces to create plugins that can be dynamically loaded at ArmoniK startup. It allows to remplace the plugins provided by default by more adapted solutions. For more information, see Plugins.

  • ArmoniK.Core.Utils provides some simplifiaction methods that are commonly used in ArmoniK.Core projects.

9.2. Control

Different projects are available in the control plan:

  • ArmoniK.Control.Submitter is a web server providing the gRPC services to interact with ArmoniK. It provides the following gRPC services defined in ArmoniK.Api:

    • Tasks Service: Provides APIs to perform actions on tasks like submission, monitoring and cancellation.

    • Results Service: Provides APIs to perform actions on results like creation, data upload and download, monitoring, deletion, etc…

    • Partitions Service: Provides APIs to perform actions on partitions like creation and monitoring.

    • Sessions Service: Provides APIs to perform actions on sessions like creation, monitoring, cancellation, closing, deletion of data, etc…

    • Authentication Service: Manages users and their permissions when submitting tasks and accessing data in ArmoniK.

    • Applications Service: List applications defined by ArmoniK.Extensions.Csharp.

    • Events Service: Provides streaming APIs to listen to Tasks and Results related real time events.

    • Versions Service: Provides the current version of ArmoniK internal components.

    • Health Checks Service: Provides health status for ArmoniK dependant services.

  • ArmoniK.Control.Metrics is a web server that exposes Prometheus metrics related to the number of tasks per status in each partition. These information can be used to determine the number of compute plane instances required on the grid. In addition, these metrics can be used by Kubernetes to start/stop compute PODs and nodes (on elastic configurations such as managed Kubernetes services on cloud).

9.3. Compute Plane Components

From a software enginnering point of view, the compute plan relies on three components:

  • ArmoniK.Compute.PollingAgent implements a ArmoniK.DevelopmentKit.Gridlib.GRPC client. It acts as a proxy between the gridlib agent container and the rest of the ArmoniK system. Using such a proxy agent allows all the ArmoniK logic to be implemented independantly of the Gridlib agent. Hence handling an new agent to handle new languages will be easier.

  • Other companion containers for the gridlib agent container Such cantainers could provide the following services:

    • setting up secrets for the POD

    • forward the logs to a log cypher (ex: ELK or a cloud equivalent)

    • host a cache on each node used (required a deamon set to be really efficient)