Requirements

This document describes functional and non-functional requirements to core services

Functional requirements

  • The services must receive user-defined Experiment (consisting of mapping of DAGs to hosts) and process it

    • The services must create an appropriate environment to each of such mappings, that must containt executor and everything that executor needs

    • The services must distribute created environments to corresponding nodes

    • The services must allow to start experiment execution - spin up all environments on corresponding nodes and provide dynamic information (if needed)

  • The services must support different deployment systems and use them as information source about infrastructure

  • The services must support experiment execution by checking if nodes are still alive, and receiving results of the execution

  • The services must provide all needed information about user’s objects (experiments, statuses, infrastructure info) to the user via Frontend

    • The services must store information about running Experiments

    • The services must dynamically retranslate infrastructure information from deployment systema

  • The services must allow executors exchange with events

  • The services must allow administrators of the system to add Experiment preprocessors

  • The services must maintain user’s authentication and authorization

  • The services must allow user to dynamically add target infrastructure using pre-defined connectors

Non-functional requirements

  • Services, responsible for supporting running experiments, should be fast and stable

  • The system should be easy to deploy

  • Services, working with users, should be stable and correctly retranslate all problems and errors of users’ requests

  • Services for environment preparation should be horizontally scalable