The DASFE design pattern stands for Data Acquisition, Selection, Feedback and Evaluation. In Marvin, the DASFE pattern is represented by the image below. Each box, which we call an Action, holds code written by the user.
The toolbox helps the user develop, test, and run their built engine. There are separate toolboxes for each language. For example, the Python Toolbox.
The Engine is the Marvin application, the result of user's implementation, including code, datasets(artifacts), models, etc.
The engine executor is the component responsible for coordinating execution of the steps (Actions) in a Marvin engine. The engine-executor is able to communicate with engines through the gRPC protocol.
Datasets are shared between Engine Actions, which are persisted and versioned.
In order to facilitate development of the engine, Jupyter Notebook is integrated into Toolbox. The Marvin notebook extension allows the user to write their code in Notebooks and push updates directly to the Actions.