Containers - Handbook - Introduction

This section is a comprehensive guide for content managers eager to learn how to create multi-component programming projects for the Sphere Engine Containers module of the Sphere Engine service.

Modern programming projects are very complex. They are assembled from various technologies like relational databases, non-relational databases, object storage services, and background processes. For web applications, it is widespread to have completely different technology for the back-end and the front-end of the application. On top of that, these technologies introduce dependencies, like libraries and frameworks, required for an application to be executable.

For example, we can consider a simple web application composed of the following components:

  • React application on the front-end.
  • Python's back-end with the Django framework.
  • MySQL database to represent entities and relations between them.
  • MongoDB database for document storage.
  • A background process for asynchronous workers.

The two remaining fundamental Sphere Engine modules (i.e. Compilers and Problems modules), are designed to run single-process server-side applications and aren't capable of executing multi-component projects like the one discussed above. The typical scenario for these modules is a single file source code written in a single programming language. With an additional effort, we can execute a multi-file project (see. multi-file submissions). Yet, we are limited to a single technology, and this is not always possible to attach all required dependencies.

The Containers module allows for handling complex scenarios like the one discussed above. It makes it easy to execute such applications and verify the skills needed to create them.. In this guide, we will thoroughly explain how to do it effectively.

The Handbook consists of the following chapters: