You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Synapse is a vendor-neutral, free, open-source, and community-driven Workflow Management System (WFMS) implementing the [Serverless Workflow specification](https://github.com/serverlessworkflow/specification).
16
+
Synapse is a vendor-neutral, open-source, and community-driven Workflow Management System (WFMS) designed to implement the [Serverless Workflow specification](https://github.com/serverlessworkflow/specification).
17
17
18
-
## Requirements
18
+
It enables developers and organizations to define and execute workflows effortlessly using a high-level, intuitive Domain Specific Language (DSL).
19
19
20
-
-[.NET 6](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) or later
20
+
With Synapse, you can create powerful workflows that are cloud vendor-agnostic, easily scalable, and highly customizable.
21
21
22
-
*Optionally, and depending on which flavor of the Synapse Server you chose to run, you might require:*
22
+
### Features
23
23
24
-
-[Docker](https://www.docker.com/)
25
-
-[Kubernetes](https://kubernetes.io/)
24
+
-**Easy to Use**: The Serverless Workflow DSL is designed for universal understanding, enabling users to quickly grasp workflow concepts and create complex workflows effortlessly.
25
+
-**Event Driven**: Seamlessly integrate events into workflows with support for various formats, including CloudEvents, allowing for event-driven workflow architectures.
26
+
-**Service Oriented**: Integrate seamlessly with service-oriented architectures, allowing workflows to interact with various services over standard application protocols like HTTP, gRPC, OpenAPI, AsyncAPI, and more.
27
+
-**FaaS Centric**: Invoke functions hosted on various platforms within workflows, promoting a function-as-a-service (FaaS) paradigm and enabling microservices architectures.
28
+
-**Timely**: Define timeouts for workflows and tasks to manage execution duration effectively.
29
+
-**Fault Tolerant**: Easily define error handling strategies to manage and recover from errors that may occur during workflow execution, ensuring robustness and reliability.
30
+
-**Schedulable**: Schedule workflows using CRON expressions or trigger them based on events, providing control over workflow execution timing.
31
+
-**Interoperable**: Integrates seamlessly with different services and resources.
32
+
-**Robust**: Offers features such as conditional branching, event handling, and looping constructs.
33
+
-**Scalable**: Promotes code reusability, maintainability, and scalability across different environments.
34
+
-**Cross-Platform**: Runs on various operating systems, providing flexibility and ease of integration.
26
35
27
-
##Quick start
36
+
### Microservices
28
37
29
-
**1. Download and extract synctl:**
38
+
Synapse is composed of several specialized applications, allowing for atomic scalability, resilience, and ease of maintenance:
30
39
31
-
*On Windows*:
40
+
-**API Server**: Serves an HTTP API to manage Synapse resources, and optionally serves the **Dashboard**, which is Synapse's Graphical User Interface.
41
+
-**Operator**: Controls workflows and workflow instances, and starts workflow runners.
42
+
-**Runner**: Executes a single instance of a workflow.
43
+
-**Correlator**: Performs Complex Event Processing (CEP) and correlates ingested events.
44
+
-**CLI**: Allows interaction with the Synapse API via the command line interface.
The Synapse Server can run natively on Windows, Mac and Linux, without any dependencies aside from .NET. Even though it is the easier way to get started, it should only be used for tests purposes. For production, you should prefer the Docker or Kubernetes based setups.
81
-
82
-
To get started, just download the appropriate [release](https://github.com/serverlessworkflow/synapse/releases/latest) for your system, then start it using the following command:
83
-
84
-
```shell
85
-
dotnet run ./Synapse.Server.dll
86
-
```
87
-
88
-
For more information on how to configure a Native Synapse Server, please read the [docs](https://github.com/serverlessworkflow/synapse/wiki).
89
-
90
-
#### Docker
91
-
92
-
Docker is the recommended way to run the Synapse Server for those who do not want to host it on a Kubernetes cluster.
93
-
94
-
To run the server on Docker, simply execute the following command in your system's shell:
*Notes: you need to mount the `docker.sock` and/or run the container with the `--network host` option for Synapse to be able to spawn its own containers*
101
-
102
-
For more information on how to configure Synapse for Docker, please read the [docs]().
103
-
104
-
#### Docker-Compose
105
-
106
-
Docker-Compose helps you to get started easier and faster than with Docker, as it allows to declare and configure multiple container at once, which will likely be needed if using persistence, for instance.
107
-
108
-
To run the server on Docker-Compose, simply execute the following command in your system's shell:
109
-
110
-
```shell
111
-
docker-compose -f deployment/docker-compose/docker-compose.yml up -d
112
-
```
113
-
114
-
Alternatively, you can use the file using EventStore and MongoDB powered persistence:
115
-
116
-
```shell
117
-
docker-compose -f deployment/docker-compose/eventstore+mongo.yml up -d
118
-
```
119
-
120
-
#### Kubernetes
121
-
122
-
Kubernetes is the preferred way to run the Synapse Server, as it offers a wide range of tools to configure, run and manage multiple containers at once, which will likely be needed if using persistence, for instance.
123
-
124
-
To run the server on Kubernetes, simply execute the following command in your system's shell:
The `Dashboard` is a Blazor Web Assembly (WASM) Graphical User Interface (GUI) that comes bundled with the Synapse Server.
145
-
146
-
To get started, simply open a web browser and navigate to the Synapse Server's base url.
147
-
148
-
For more information on how to use the `Dashboard`, please read the [docs](https://github.com/serverlessworkflow/synapse/wiki).
149
-
150
-
### CLI
151
-
152
-
`synctl` is a Command Line Interface (CLI) used to interact with the Synapse Server.
153
-
154
-
To get started, just download the appropriate [release](https://github.com/serverlessworkflow/synapse/releases/latest) for your system, then type the following command:
155
-
156
-
```shell
157
-
synctl --help
158
-
```
159
-
160
-
For more information on how to use `synctl`, please read the [docs](https://github.com/serverlessworkflow/synapse/wiki).
161
-
162
-
## Application Programing Interfaces
163
-
164
-
The Synapse Server is shipped with 3 different APIs, each addressing a different use-case. All the implementations of those APIs are supplied with their respective client library.
165
-
166
-
### Management API
167
-
168
-
The Synapse Management API is used to manage workflows and their instances.
The Synapse Monitoring API is used for real-time observability of workflows and their instances. It is used by the Dashboard to enable real-time updates.
The Synapse Runtime API is used by workers to run workflows and maintain their state. It preferably should not be used by anything else than runtime executors.
0 commit comments