Salto’s Technology

The core of Salto's technology is developed and maintained as part of Salto's Source Available project, and also delivered as a SaaS offering. Here you can find the main technological concepts and components that enable Salto to enhance the understanding, planning, changing and tracking of business application configuration.

Under the Hood

Workspace

A Workspace is a folder containing Salto configuration files, including the State and NaCl files representing configurations across all relevant business applications.
The Workspace is instrumental to Salto's unique multi-environment approach, enabling management of all environments - from personal developer accounts to staging and production - in one place. This approach greatly helps with keeping environments similar to each other, as well as with easily understanding differences, and more.  Moreover, a Workspace is usually connected to a Git repository (similar to a single clone of that repo), and thus is fully versioned.

NaCL

NaCl is an hcl-based declarative configuration language, with semantics purpose built to describe the configuration of business applications. The language was designed with a strong and extensible type system, in order to support modern business applications that feature "Custom Objects" while maintaining type safety and enabling tooling. On top of that, each configuration Element in NaCl has a unique identifier (Element ID), enabling cross element references which are crucial in order to capture the semantics of a certain business application configuration. Other features such as variables, annotations, static-file support and validations complete the picture, making NaCl "Not Another Configuration Language

State

Salto maintains a notion of the last known State of the various business application environments a certain Salto Workspace is connected to. This State, encoded into files and part of the Workspace, represents the most recent knowledge Salto has on the configuration of the business applications. It also contains additional mapping data which uniquely ties Salto configuration elements (from NaCl files) to these configuration elements' respective objects (on the business application side).

Graph View

The representation of all configuration elements as Graphs is at the core of the Salto engine. These graphs (usually in the form of Directed Acyclic Graphs can represent the latest known State of the business applications, the current configuration (as described in the Workspace's NaCl files), or elements that were just read from the business applications, including all intrinsic dependencies between elements. Moreover, operations performed on these Graphs enable Salto to accurately and efficiently implement broader operations. For example, calculating the diff between the NaCl Graph and the State graph yields another graph — the execution Plan for Deploy.

Adapters

The service adapters are detachable software components that connect Salto to the various business applications. These pluggable adapters are costumed to their respective apps, and designed to work with app-specific configuration representations. They support reading the existing configuration of the business apps (see Fetch), adding semantic knowledge to this configuration (such as References), and deploying (see Deploy) changes back to the business applications. A typical adapter would use a set of APIs from the business application in order to deal with app-specific CRUD (Create, Read, Update, Delete) operations of data and metadata, as well as authentication.

Fetch

The Fetch operation imports your business applications' configuration to Salto. It connects to all the applications in your environment, extracts their latest configuration and builds a corresponding Graph. This Graph is then compared to the current Workspace State (our most recent knowledge about the configuration in the application - before this Fetch operation) and NaCl files, and updates the State and NaCl files accordingly in-place. Thus, Fetch allows you to develop changes in the business applications' UI, while using Salto for everything else, like versioning and deploying. Moreover, Fetch will do the most minimal update possible to the Workspace - pinpointing changes in the UI that have not been previously Fetched to Salto. This precision in Fetch ensures that any manual edits done to the NaCl files will survive this operation.

Deploy

Deploy allows you to take changes planned and performed in your Salto Workspace and apply them to the configuration of your business applications. Deploy automatically calculates the differences between your own NaCl files and your business apps' configuration, and from those differences deduces an execution plan. Dependencies are added to the calculation, to generate a plan that maximizes parallel executions without breaking anything in the process. Deploy can run on an entire environment - including all its business apps - and can also run on selected business apps only.

The Salto Glossary

NaCL

NaCl is an hcl-based declarative configuration language, with semantics purpose built to describe the configuration of business applications. The language was designed with a strong and extensible type system, in order to support modern business applications that feature "Custom Objects" while maintaining type safety and enabling tooling. On top of that, each configuration Element in NaCl has a unique identifier (Element ID), enabling cross element references which are crucial in order to capture the semantics of a certain business application configuration. Other features such as variables, annotations, static-file support and validations complete the picture, making NaCl "Not Another Configuration Language".

Workspace

A Workspace is a folder containing Salto configuration files, including the State and NaCl files representing configurations across all relevant business applications.
The Workspace is instrumental to Salto's unique multi-environment approach, enabling management of all environments - from personal developer accounts to staging and production - in one place. This approach greatly helps with keeping environments similar to each other, as well as with easily understanding differences, and more.  Moreover, a Workspace is usually connected to a Git repository (similar to a single clone of that repo), and thus is fully versioned.

State

Salto maintains a notion of the last known State of the various business application environments a certain Salto Workspace is connected to. This State, encoded into files and part of the Workspace, represents the most recent knowledge Salto has on the configuration of those business applications. It also contains additional mapping data, which uniquely ties Salto configuration elements (from NaCl files) to these configuration elements' respective objects (on the business application side).

Graph View

The representation of all configuration elements as Graphs is at the core of the Salto engine. These Graphs (usually in the form of Directed Acyclic Graphs) can represent the latest known State of the business applications, the current configuration (as described in the Workspace's NaCl files), or elements that were just read from the business applications, including all intrinsic dependencies between elements. Moreover, operations performed on these Graphs enable Salto to accurately and efficiently implement broader operations. For example, calculating the diff between the NaCl Graph and the State Graph yields another Graph — the execution Plan for Deploy.

Adapters

The service adapters are detachable software components that connect Salto to the various business applications. These pluggable adapters are costumed to their respective applications, and designed to work with app-specific configuration representations. They support reading the existing configuration of the applications (see Fetch), adding semantic knowledge to this configuration (such as References), and deploying (see Deploy) changes back to the applications. A typical adapter would use a set of APIs from the business application in order to deal with app-specific CRUD (Create, Read, Update, Delete) operations of data and metadata, as well as authentication.

Fetch

The Fetch operation imports your business applications' configuration to Salto. It connects to all the applications in your environment, extracts their latest configuration and builds a corresponding Graph. This Graph is then compared to the current Workspace State (our most recent knowledge about the configuration in the application - before this Fetch operation) and NaCl files, and updates the State and NaCl files accordingly in-place. Thus, Fetch allows you to develop changes in the applications' UI, while using Salto for everything else, like versioning and deploying. Moreover, Fetch will do the most minimal update possible to the Workspace - pinpointing changes in the UI that have not been previously Fetched to Salto. This precision in Fetch ensures that any manual edits done to the NaCl files will survive this operation.

Deploy

Deploy allows you to take changes planned and performed in your Salto Workspace and apply them to the configuration of your business applications. Deploy automatically calculates the differences between your own NaCl files and your business applications' configuration, and then deduces an execution plan based on those differences . Dependencies are added to the calculation, to generate a plan that maximizes parallel executions without breaking anything in the process. Deploy can run on an entire environment - including all its business applications - and can also run only on selected applications.

Ready to get started?

Request a Demo