Containers
Module Overview

The Sphere Engine Containers module allows executing complex, multi-component programming projects. It supports a vast scope of modern technologies and will bring the source code execution and skill-assessment features to your system effectively, securely and with large-scaling, future-proofing and customizability.

The Containers module consists of:

  • Integration methods:
    • Workspace - a full-fledged development environment that can be embedded in your website,
    • RESTful API - programming interface for running your end-users' source code and receiving the execution results,
  • Content Management System - an environment for managing and building programming projects.

Workspaces

The workspace is a full-fledged environment that allows software engineers to work on multi-stack projects. It is the most accessible and effective integration method. The whole set of coding tools is delivered out of the box, that includes:

  • code editor with syntax highlighting,
  • integrated Linux terminal,
  • directory tree with convenient access to project files,
  • one-click shortcuts for running and testing the project.

Projects

The programming project serves as the foundation for all activities within the Containers module. It establishes a context for end-user operations, such as executing application code. This context must be thoughtfully designed and prepared by the content manager.

The objective is to create an environment that facilitates the execution of applications using a specified technological stack. A project consists of a set of files, which may include code, data, and other resources, used to configure this environment. Additionally, the project serves as the context for end-user submissions, which may contain application code, unit test code, and more. These submissions are later executed within this environment.

RESTful API

The RESTful API offers a simple method for feeding a pre-configured project with a package of files (code, data, and more). In a typical scenario, the end-user creates and modifies some project files prepared beforehand by the Content Manager. Once ready, they can send it for execution. Before execution, the pre-configured project is updated with files submitted by the end-user. Finally, such a wholly composed project is executed appropriately to a given technology and project configuration.

The results produced during the execution (e.g., output data, errors, and more) are gathered and saved by the Sphere Engine service. You can fetch them later using a dedicated API method.

The diagram below illustrates how the system processes a submission from the moment it is created until the results are obtained.

The submission's lifecycle in the Sphere Engine Containers module
Fig. 1. The submission's lifecycle in the Sphere Engine Containers module

Content Management System

The Content Management System is an extended workspace used to build and configure content for end-users. Content Managers use it to develop and pre-configure projects. A project in the Sphere Engine Containers module is a context in which the end-user submissions (containing application code, unit test code, and more) are later executed.

What can I use it for?

The Sphere Engine Containers module is an excellent tool for creating:

  • recruitment platforms with the ability to run or evaluate code written by candidates,
  • e-learning programming courses, offering automated code assessment or providing executable code examples,
  • systems for sharing executable source code,
  • interactive massive open online courses (MOOCs),
  • online Integrated Development Environments (IDE),
  • skill assessment platforms.

Learn more about what sets the Containers module apart from other Sphere Engine modules using our comparison table.

What types of technologies can I run?

The high customizability of the Containers module makes it easy to run a variety of technologies ranging from the most straightforward single file scripts up to multi-component complex applications. What you can integrate includes:

  • web applications (front-end only, back-end only, or full stack),
  • desktop applications and mobile apps,
  • console applications,
  • unit-testing verification and I/O verification,
  • artificial intelligence, machine learning, and data science.

You can use RESTful API to execute projects in a non-interactive mode (i.e., batch mode) or integrate your application with our workspace to get an interactive mode as well. In the workspace, your end-users can interact with their apps, for example, via a web browser or the command line.

Regardless of the integration method, the Sphere Engine Containers module can execute all these types of applications safely, reliably, and on a large scale.

What are the methods of integration?

The following methods of integration are available for the Containers module:

  • RESTful API - for executing projects in a batch mode and synchronously obtaining execution results,
  • Workspaces - for embedding a full-fledged development environment as a part of your web application,
  • Webhooks - for receiving information asynchronously about submissions and workspaces.

How to create your base content?

Sphere Engine Containers offers a rich gallery of samples presenting a number of technologies. You can use them right away to see how they work. You can also take them to inspire your Content Managers while creating your own projects and run-time environments.

To quickly learn how to create worthwhile content for your end-users, feel free to use our Handbook. To quickly grasp the terminology please refer to the glossary.

How to manage workspaces?

Sphere Engine Containers offer versatile options for managing workspaces. You can start, stop, or remove a workspace using either the RESTful API or the client panel.

How to start a workspace?

To initiate a workspace, you have two options:

  1. RESTful API: Utilize the Create workspace API method. For API details, refer to API Documentation,
  2. Client Panel: Go to the Projects list section in the client panel. For navigation, click here.

How to remove a workspace?

To remove a workspace, you also have two methods:

  1. RESTful API: Employ the Remove workspace API method. Check out the API documentation here,
  2. Client Panel: Navigate to the workspaces tab in the client panel. Direct link available here.

How to manage a workspace further?

If you wish to temporarily stop a workspace, the stop/resume workspace feature may be useful. For more information, consult the Stop and resume workspace documentation.