What is Synapse?
Synapse is an open-source, lightweight execution engine designed to take data from disparate, federated sources and connect it to a process. Synapse is built to run as a local or remote process.
Contributing Author: Steve Shortt
- Synapse is a way to leverage the knowledge of technical SMEs in providing automation solutions. Synapse allows experts to present varying technologies as enterprise-class REST services, without having to learn to be an enterprise developer.
- Synapse is built with the express purpose of enabling collaboration in technical solutions.
- Synapse treats automation data and automation technology as peers — data is a first-class citizen in Synapse.
- Synapse provides a simple, extensible abstraction layer, behind which any technology, including scripting languages, compiled code, and tools, can be hosted.
- Synapse is a REST-enabled service designed to execute tasks in local or remote processing scenarios. Synapse’s capability is extended through new scripts, custom Handlers, and custom Controllers.
- Synapse works on both Windows and *nix.
Synapse is divided into 3 services:
- Enterprise — for editing the RBAC and publishing Synapse Plans
- Controller — for launching Synapse Plans
- Node — for executing Synapse Plans, either in local (agent-based) or remote (agentless) mode
General Usage for Technology Presentation
Synapse is generally technology-agnostic. In keeping with enabling SMEs to be highly productive, look to use Synapse as an abstraction layer over existing solutions, for the purpose of exposing them as REST services, participating in a service-oriented architecture (SOA).
Integration and Extensibility Patterns
If you want to use Synapse’s automation and workflow capability for distributed task execution, but you want to expose your REST services under URIs and data formats that align with your business purpose, consider extending Synapse with a custom ApiController.
Another available option, coming soon, will allow embedding Synapse within existing applications, thus completely hiding Synapse’s external presence. This would be a useful pattern for extending the capability of existing an code-base without needing to change any architectural elements of the application design.
Summary and Use-Cases
Synapse is designed to be a general purpose, workflow-based, distributed-processing automation engine. Synapse differs from other, similar solutions in that it treats automation data as a first-class citizen, specifically to support quality data management practices in the enterprise.
- Originate a Synapse-based solution for a script archive.
Example: SMEs, both senior and junior, often have a suite of “admin scripts” that solve common problems. Use Synapse to expose these scripts for delegation under a self-service model. Encourage contributions from all parts of the team to enable a functional DevOps dynamic.
- Use the Controller as a shim over an existing non-service solution to provide a REST interface.
- Abstract disparate tools under a single interface to insulate integrators.
Example: Application developers and Operations people, whether in a DevOps model or not, often use third-party tooling to administer “external” functions. Use Synapse to expose tooling interfaces under an SOA.