Skip to content

Commit 65c974c

Browse files
committed
feat(Deployments): Added the docker-compose project
fix(Docs): Started rewrite of the Readme.md file (WIP) Signed-off-by: Charles d'Avernas <charles.davernas@neuroglia.io>
1 parent 9012627 commit 65c974c

File tree

14 files changed

+108
-257
lines changed

14 files changed

+108
-257
lines changed

README.md

Lines changed: 25 additions & 186 deletions
Original file line numberDiff line numberDiff line change
@@ -13,183 +13,37 @@
1313

1414
## About
1515

16-
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).
1717

18-
## Requirements
18+
It enables developers and organizations to define and execute workflows effortlessly using a high-level, intuitive Domain Specific Language (DSL).
1919

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.
2121

22-
*Optionally, and depending on which flavor of the Synapse Server you chose to run, you might require:*
22+
### Features
2323

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.
2635

27-
## Quick start
36+
### Microservices
2837

29-
**1. Download and extract synctl:**
38+
Synapse is composed of several specialized applications, allowing for atomic scalability, resilience, and ease of maintenance:
3039

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.
3245

33-
```
34-
wget https://github.com/serverlessworkflow/synapse/releases/latest/download/synctl-win-x64.zip
35-
tar -xf synctl-win-x64.zip
36-
```
37-
38-
*On Linux*:
39-
40-
```
41-
wget https://github.com/serverlessworkflow/synapse/releases/latest/download/synctl-linux-x64.tar.gz
42-
tar -xf synctl-linux-x64.tar.gz
43-
```
44-
45-
*On Mac OSX*:
46-
47-
```
48-
wget https://github.com/serverlessworkflow/synapse/releases/latest/download/synctl-osx-x64.tar.gz
49-
tar -xf synctl-osx-x64.tar.gz
50-
```
51-
52-
**2. Install Synapse:**
53-
54-
*Natively*:
55-
56-
```
57-
synctl system install native
58-
```
59-
60-
*On Docker*:
61-
62-
```
63-
synctl system install docker
64-
```
65-
66-
*On Kubernetes*:
67-
68-
```
69-
synctl system install kubernetes
70-
```
71-
72-
**3. Have fun!**
73-
74-
## Server
75-
76-
### Installing
77-
78-
#### Native
79-
80-
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:
95-
96-
```shell
97-
docker run --name synapse -v /var/run/docker.sock:/var/run/docker.sock -p 42286:42286 -p 41387:41387 ghcr.io/serverlessworkflow/synapse:latest
98-
```
99-
100-
*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:
125-
126-
```shell
127-
kubectl apply -f deployment/kubernetes/stand-alone.yaml
128-
```
129-
130-
Alternatively, you can use the file using EventStore and MongoDB powered persistence:
131-
132-
```shell
133-
kubectl apply -f deployment/kubernetes/eventstore+mongo.yaml
134-
```
135-
136-
## User Interfaces
137-
138-
Synapse provides 2 different UIs for interacting with the server:
139-
140-
### GUI
141-
<p align="center">
142-
<img src="assets/images/synapse_demo.gif" alt="Dashboard demo"/>
143-
</p>
144-
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.
169-
170-
Implementations:
171-
172-
- [x] HTTP REST
173-
- [x] [GRPC](https://github.com/grpc/grpc-dotnet)
174-
- [ ] WebSockets ([SignalR](https://github.com/dotnet/aspnetcore/tree/main/src/SignalR))
175-
176-
### Monitoring API
177-
178-
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.
179-
180-
Implementations:
181-
182-
- [ ] [GRPC](https://github.com/grpc/grpc-dotnet)
183-
- [x] WebSockets ([SignalR](https://github.com/dotnet/aspnetcore/tree/main/src/SignalR))
184-
185-
### Runtime API
186-
187-
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.
188-
189-
Implementations:
190-
191-
- [x] [GRPC](https://github.com/grpc/grpc-dotnet)
192-
- [ ] WebSockets ([SignalR](https://github.com/dotnet/aspnetcore/tree/main/src/SignalR))
46+
## Getting Started
19347

19448
## Community
19549

@@ -198,7 +52,7 @@ workflow ecosystem. Community contributions are welcome and much needed to foste
19852

19953
See [here](community/contributors.md) for the list of community members that have contributed to the specification.
20054

201-
To learn how to contribute to the specification reference the ['how to contribute'](CONTRIBUTING.md) doc.
55+
To learn how to contribute to the specification reference the ['how to contribute'](contributing.md) doc.
20256

20357
If you have any copyright questions when contributing to a CNCF project like this one,
20458
reference the [Ownership of Copyrights in CNCF Project Contributions](https://github.com/cncf/foundation/blob/master/copyright-notices.md) doc.
@@ -215,19 +69,4 @@ everyone, regardless of level of experience, gender, gender identity and express
21569
sexual orientation, disability, personal appearance, body size, race, ethnicity, age,
21670
religion, or nationality.
21771

218-
See our full project Code of Conduct information [here](CODE-OF-CONDUCT.md).
219-
220-
## Repository Structure
221-
222-
Here is the outline of the repository to help navigate the specification
223-
documents:
224-
225-
| File/Directory | Description |
226-
| --- | --- |
227-
| [LICENSE](LICENSE) | Specification License doc |
228-
| [OWNERS](OWNERS.md) | Defines the current maintainers and approvers |
229-
| [MAINTAINERS](MAINTAINERS.md) | Project Maintainers Info |
230-
| [GOVERNANCE](GOVERNANCE.md) | Project Governance Info |
231-
| [CONTRIBUTING](CONTRIBUTING.md) | Documentation on how to contribute to the project |
232-
| [CODE-OF-CONDUCT](code-of-conduct.md) | Defines the project's Code of Conduct |
233-
| [ROADMAP](https://github.com/serverlessworkflow/synapse/milestones) | Project Roadmap |
72+
See our full project Code of Conduct information [here](code-of-conduct.md).

Synapse.sln

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,16 @@ EndProject
3030
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Synapse.Api.Application", "src\api\Synapse.Api.Application\Synapse.Api.Application.csproj", "{F8D7F756-16A1-420B-AED4-8EF9A65B640E}"
3131
EndProject
3232
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{C31B1410-C7AF-4D11-8DA5-6877756A9907}"
33+
ProjectSection(SolutionItems) = preProject
34+
code-of-conduct.md = code-of-conduct.md
35+
contributing.md = contributing.md
36+
governance.md = governance.md
37+
LICENSE = LICENSE
38+
maintainer-guidelines.md = maintainer-guidelines.md
39+
maintainers.md = maintainers.md
40+
owners.md = owners.md
41+
README.md = README.md
42+
EndProjectSection
3343
EndProject
3444
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{F041A1CB-45FA-4432-BAD2-DE2EE174C6FC}"
3545
EndProject
@@ -61,7 +71,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Synapse.Cli", "src\cli\Syna
6171
EndProject
6272
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "correlator", "correlator", "{F6CA60F0-3A4A-4B27-9805-6FA96F64D94D}"
6373
EndProject
64-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Synapse.Correlator", "src\correlator\Synapse.Correlator\Synapse.Correlator.csproj", "{1EA900CD-6CDE-4358-8412-060BF2AC3B21}"
74+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Synapse.Correlator", "src\correlator\Synapse.Correlator\Synapse.Correlator.csproj", "{1EA900CD-6CDE-4358-8412-060BF2AC3B21}"
75+
EndProject
76+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "deployments", "deployments", "{562C91A3-6E91-4489-9D9D-064E7436D900}"
77+
EndProject
78+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docker-compose", "docker-compose", "{8DC6DDDC-0676-4FCB-9F82-570B84D1A5C2}"
79+
EndProject
80+
Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "deployments\docker-compose\docker-compose.dcproj", "{A2D3AFB0-C7E0-4778-9D0A-DFCE0E24AF17}"
6581
EndProject
6682
Global
6783
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -145,6 +161,10 @@ Global
145161
{1EA900CD-6CDE-4358-8412-060BF2AC3B21}.Debug|Any CPU.Build.0 = Debug|Any CPU
146162
{1EA900CD-6CDE-4358-8412-060BF2AC3B21}.Release|Any CPU.ActiveCfg = Release|Any CPU
147163
{1EA900CD-6CDE-4358-8412-060BF2AC3B21}.Release|Any CPU.Build.0 = Release|Any CPU
164+
{A2D3AFB0-C7E0-4778-9D0A-DFCE0E24AF17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
165+
{A2D3AFB0-C7E0-4778-9D0A-DFCE0E24AF17}.Debug|Any CPU.Build.0 = Debug|Any CPU
166+
{A2D3AFB0-C7E0-4778-9D0A-DFCE0E24AF17}.Release|Any CPU.ActiveCfg = Release|Any CPU
167+
{A2D3AFB0-C7E0-4778-9D0A-DFCE0E24AF17}.Release|Any CPU.Build.0 = Release|Any CPU
148168
EndGlobalSection
149169
GlobalSection(SolutionProperties) = preSolution
150170
HideSolutionNode = FALSE
@@ -177,6 +197,8 @@ Global
177197
{C86F6C8B-5946-433D-9E09-2C0269CE6372} = {D3B3B95D-B598-4B13-B754-4A7E530405A6}
178198
{F6CA60F0-3A4A-4B27-9805-6FA96F64D94D} = {4B9AF05C-9D6D-48C0-994D-D4A5C28FA24D}
179199
{1EA900CD-6CDE-4358-8412-060BF2AC3B21} = {F6CA60F0-3A4A-4B27-9805-6FA96F64D94D}
200+
{8DC6DDDC-0676-4FCB-9F82-570B84D1A5C2} = {562C91A3-6E91-4489-9D9D-064E7436D900}
201+
{A2D3AFB0-C7E0-4778-9D0A-DFCE0E24AF17} = {8DC6DDDC-0676-4FCB-9F82-570B84D1A5C2}
180202
EndGlobalSection
181203
GlobalSection(ExtensibilityGlobals) = postSolution
182204
SolutionGuid = {2A6C03D6-355A-4B39-9F2B-D0FDE429C0E2}

deployment/docker-compose/docker-compose.yml

Lines changed: 0 additions & 61 deletions
This file was deleted.

deployments/docker-compose/.env

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
GARNET_URI=garnet:6379

deployment/docker-compose/docker-compose.dcproj renamed to deployments/docker-compose/docker-compose.dcproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<DockerServiceName>synapse</DockerServiceName>
1010
</PropertyGroup>
1111
<ItemGroup>
12-
<None Include="eventstore+mongo.yml" />
12+
<None Include=".env" />
1313
<None Include="docker-compose.yml" />
1414
</ItemGroup>
1515
</Project>

0 commit comments

Comments
 (0)