Post

Orca un Editor Gráfico Nocode para la Orquestación de Contenedores

2024.06.20

Sevilla, España

metadev logo

Orca un Editor Gráfico Nocode para la Orquestación de Contenedores

Articulo publicado en biblioteca.sistedes.es

Orca

Pedro J. Molina y Javier Centeno-Vega
Metadev S.L., Sevilla, España

Abstract:

Traditional Container Orchestration tools like Docker Compose and Kubernetes are command-line based and require experience with command line interfaces, and dealing with many configuration files written in YAML. The work presented: Orca is a graphical editor embracing the Nocode approach to provide a very simple and intuitive user interface experience to non-developers to be able to design, document, explore, and deploy non-trivial configurations.

Keywords:

MDE · DSL · nocode · containers · graphical editors · Docker · Artificial Intelligence

1 Motivation

Containers are isolated environments where software runs independent of the rest of the system. This provides consistency and portability across deployments and avoids unexpected changes in behavior when running the software on different environments.

Docker [1] is the widespread entry tool for building containers. Docker Compose [2] and Docker-swarm are the natural extensions in the Docker ecosystem to aggregate different containers to run them as complex services. These container ensembles use YAML[9] based configuration files. Going beyond the trivial examples, the configuration grows fast and the size of the YAML files are against its maintainability.

While Docker Compose is a powerful tool, it may be harder to use for users that are not accustomed to writing configuration files in text editors and running commands on the console.

The initial hypothesis is that better tools, using a graphical approach, can be built to increase the number of users able to define and operate containers without being lost in accidental complexities introduced by command-line tools and abuse of YAML configuration files.

2 State of the Art

To our knowledge, there are not many applications that provide visual user interfaces for editing Docker Compose files. The best one ready to be used for that purpose is Nuxx [6], which provides a visual editor where the user can place components, volumes, and networks, draw connections between them, and see the changes to the diagram reflected in a resulting Docker Compose file. However, Nuxx does not seem to support all of the features of Docker Compose files (for instance, no configs or secrets top-level elements) and has not been updated since 2022. It also lacks some other desirable features such as basic validation and error checking (for example, it is possible to create a cyclic dependency in the components and Nuxx will generate an invalid Docker Compose file without warning).

Orca Editor Fig. 1. Orca Editor

3 Solution

Orca [5] provides a Nocode Graphical Editor where users can drag and drop services, volumes, networks, and other components configured by Docker Compose from templates into a canvas. Then, the user can draw connections between these components and set their properties. Most of the properties of a modern Docker Compose file are supported.

3.1 Main Features

Orca allows to import Docker Compose files directly and to render a graphical representation of the container configuration with dependencies and relation (see fig. 1). The design is validated in real-time. The lower part of the editor displays the errors found in the configuration (see fig. 2).

Orca Validator Fig. 2. Orca Validator

After editing, the design can be exported back to a Docker Compose file in YAML format (see fig. 3). The tool allows storing the designs on the cloud per user, so they are available anywhere. Only a modern browser is needed to use the tool. Lastly, Orca provides an IA Assistant. Integrated with ChatGTP[7], it allows natural language input to describe a container configuration and will create a sample as a starting point.

The following features are currently supported by Orca:

  • Starting a new diagram as a blank diagram or from a collection of predefined templates.
  • Dragging and dropping services, volumes, networks, configurations, secrets, or any other type of component from a palette.
  • Drawing connections between these components.
  • Setting the properties of these components or the connections between them, as given by the Docker Compose file specification.
  • Importing a Docker Compose file into a diagram.
  • Exporting a diagram to a Docker Compose file.
  • Saving diagrams to local storage or into the cloud.
  • Using an Artificial Intelligence based agent to generate a diagram directly from natural language.
  • Validating the diagram and displaying a list of errors so that they can be addressed by the user in time.

Orca Export to Docker Compose format Fig. 3. Orca Export to Docker Compose format.

4 Use Cases

Orca can be used to:

  • Visually describe a docker-compose configuration.
  • Design container configurations.
  • Check for validation errors in the configuration.
  • Import and export to Docker-compose file format.
  • Verify the security of a given configuration.

Moreover, the approach can be extended for other scenarios like:

  • Autodiscovery of running containers.
  • Container observability, real-time monitoring of running containers.
  • Visualizing live traffic and incidents.
  • Connectors for Kubernetes clusters.
  • Displaying maps of containers and dependencies in runtime.
  • Visualizing alerts in SCADA systems.
  • Real-time representation of Digital Twins.
  • Large models exploration.

5 Technical Overview

Orca is built using Typescript and Angular for the frontend and .NET and MongoDB for the backend. The diagramming engine used (called Daga [4]) has been developed and is maintained by Metadev to enable a rich experience with Graphical Editors for DSLs on the Web. Daga provides an extensible and highly configurable way of configuring the palette of components, diagramming constraints, and properties pane. It also provides zoom in/out, undo/redo, and autolayout capabilities. Orca has been built as a graphical DSL[3] following the principles of MDE[8] (Model Driven Engineering). Import and export capabilities were built following MDE well-known practices like parsing, model-to-model and model-to-text transformations.

5.1 Auto-layouts in Daga

The Daga engine includes several auto-layout algorithms used to arrange the nodes of the diagrams automatically with the capacity to add custom algorithms. This feature is key when importing big models to arrange on screen in a way that is interpretable by humans. Out of the box algorithms already implemented include:

  • Breadth: Traverses the nodes using breadth-first search and arranges them into columns of equal distance to the first node.
  • Adjacency: Every time a node is placed, its neighbors are recursively placed as close as possible.
  • Force: Employs a force-directed graph drawing algorithm which iteratively repels all nodes while attracting nodes to connected nodes.
  • Priority: Similar to Breadth, placing nodes with a higher priority property first.
  • Breadth Adjacency: Similar to Adjacency, with the placement of nodes following an order determined by breadth-first search.
  • Horizontal: Arranges all nodes along a horizontal line.
  • Vertical: Arranges all nodes along a vertical line.

This enables Orca to use whichever algorithm works best for displaying the elements of a Docker Compose file.

6 Conclusions

There are not many tools to provide user-friendly ways for configuring containerized deployments for non-technical users. Orca explores the Nocode approach and seeks to fill that gap and enable users without knowledge of Docker Compose or without familiarity with the command-line and YAML to configure deployments. Moreover, the usability provided by Orca and Daga as reported by users are a clear sign that there is space to build better and simpler tools with the Nocode approach in mind.

Many DSLs are used in diverse domains like aerospace, automation, banking, insurance, etc. The approach presented can benefit many of these use cases. We plan to keep exploring the hypothesis building specific tooling for such domains.

References

  1. Docker Inc. Docker. Online: https://docs.docker.com/develop/ (2013)
  2. Docker Inc. Docker Compose. Online: https://docs.docker.com/compose/ (2014)
  3. Fowler, M.; Parsons, R. Domain Specific Languages. ISBN: 978-0-321-71294-3 (2010)
  4. Metadev. Daga: Diagramming library for the Web. Online: https://metadev.pro/products/daga (2024)
  5. Metadev. Orca. Online: https://orca-tool.com (2023)
  6. Nuxx. Online: https://nuxx.io/ (2022)
  7. OpenAI. ChatGPT Large language model. https://chat.openai.com/chat (2013)
  8. Vallecillo, A. On the Industrial Adoption of Model Driven Engineering. Is your company ready for MDE? International Journal of Information Systems and Software Engineering for Big Companies (IJISEBC) volume 1, pages 52-68 (2014)
  9. YAML Specification https://yaml.org/spec/ (2001-2009)

Si todavía tienes preguntas

Envíanos un correo y conversamos.

¿Hablamos?