The idea of a code (or function) execution service is not new. Here we describe key differences to existing products and software with similar purposes.
- What is the difference to AWS Lambda?
- On-the-fly execution of code snippets: AWS Lambda mandates its users to package their own programs with libraries as a series of zip files and explicitly deploy them to run. Meanwhile, Sorna provides a variety of pre-configured sandbox containers and its users pass the code snippets on-the-fly at runtime as individual API requests.
- Result evaluation API: Sorna offers additional APIs to evaluate the code execution results with a given set of answers for educators.
- On-premise deployability: AWS Lambda is a strictly cloud-only service which requires Internet connections always, while Sorna can be deployed on your on-premise machines and portable PCs such as Intel NUC devices for use in off-line lecture rooms.
- What is the difference to Jupyter/IPython Notebook?
- Horizontal scalability: Jupyter Notebook is designed for a single-user PC. JupyterHub supports multi-user scenarios but for only modest-sized, semi-trusted user groups. Sorna is designed for multiple arbitrary users and multiple servers to scale out from the very beginning.
- Additional security: Sorna adds a sandbox layer using Docker containers and a custom system call filter to safely execute malicious, unpredictable user inputs without breaking the system and other users.