Execution Node Cluster

Project Title: Secure, concurrent evaluation of code in execution node.

Description: The execution node component is responsible for evaluation of user code submissions. The execution node receives evaluation request from the load balancer component, forks a separate process to execute the all the user testcases in sequential order. We can speed up the execution by performing concurrent execution of the tests.

Another area of improvement is the specification of configuration for evaluation. The configuration is ad-hoc, text-file based one. We need to move to an industry standard yaml-based configuration format.

Another area of improvement is in terms of secure execution. We need hard, provable guarantees on the execution environment. Even if malicious code comes in for evaluation, we need to make sure that the code does not corrupt the execution node.

Difficulty Level: Medium

Mentor(s): Prasad Talasila (prasad DOT talasila AT gmail DOT com)

Main Goals:

  • Concurrent execution of tests
  • YAML configuration for execution nodes
  • Secure execution in containers in even hostile environment
  • Caching of instructor solution for evaluation
  • Secure upload of evaluation results

Deliverables: A completely new execution node component with the following features:

  • Has all the functions of the existing execution node.
  • Dynamic loading of configuration information
  • Support for YAML configuration of execution nodes
  • Secure execution of code in containers in even hostile environment
  • Concurrent execution of all the tests in an evaluation
  • Caching of instructor solution for evaluation
  • Secure upload of evaluation results

Relevant Issues: GSoC-EN

Skills Required: ES6 Programming on Node.js 8.x, JS Testing, Cluster programming in Node.js, Winston logger, Microservices in Node.js, Docker containers

Getting Started:

  1. Install AutolabJS and run a sample lab.
  2. Improve some aspect of the existing execution node by taking care of problems listed in issues with GSoC-EN label. This demonstrates your understanding of the existing code base.
  3. Write functional / unit / integration tests for execution node component.
  4. Create a skeleton code structure for concurrent, secure evaluation of code submissions.

Administrator: Prasad Talasila (prasad DOT talasila AT gmail DOT com)