Skip to content
This repository has been archived by the owner on Jul 24, 2024. It is now read-only.

doc: backend architecture document #129

Merged
merged 1 commit into from
Sep 16, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions content/docs/backend_architecture.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
draft: false
title: "Syndesis backend architecture"
sidebar: "sidenav"
menu:
sidenav:
name: Backend architecture
weight: 2
parent: Developer Docs
toc: true
weight: 20
---

This document want to illustrates at high level some of the components that makes up Syndesis and how they are communicating together to finally serves the creation of an integration. We are using [Apache Camel](https://camel.apache.org/) as a runtime target, though it would be possible to extend the project and makes it suitable to any other integration platform.

**Disclaimer:** the content illustrated here is related to version 1.8, it can change in future versions.

### Diagram
Before deep dive in the diagram illustration, let's recap the list of main components involved in Syndesis:

* **UI**: component dedicated to serve the user interface
* **Server**: mainly used for storing information persistently and retrieving its content from UI
* **JSonDB**: a database where we store json formatted documents
* **Meta**: used to report specific information of each connector
* **Connector**: acts as a proxy between Syndesis and integration platform
* **Integration**: generate an integration project based on the integration platform template
* **S2I**: used to create a runtime where the integration will run

Here is a bottom up view (from integration platform to UI) of Syndesis. As the aim of the document is to highlight the backend components we feel it more natural to start the dissertation from the target integration runtime.

![diagram](/static/images/syndesis_be_architecture.png)

When you want to create an integration, you generally starts with the definition of how this integration will interact with the integration platform runtime. In Syndesis this is mediated by the _ComponentProxy_ whose goal is to decouple the Syndesis specific model from the integration platform. Through the development of a _Connector_ you will therefore be able to bring your integration platform functionality in Syndesis: in the case depicted you will be able to port any Camel component into Syndesis by developing a _Connector_. The whole list of connectors will be finally your list of available sources/destination that you will be able to use in your Syndesis installation.

A _ProjectGenerator_ is using the list of connectors and is built by the _S2I_ whose result is a *Dockerized* _IntegrationRuntime_. The runtime contains all the dependencies that any integration running upon it will be needing. For this reason the idea is to bundle together at this stage a docker image that will be used as extension point by the real integration that you will define later on: in our case the integration generated is a _Spring Boot_ application that will be kicked off in a container: everything completely transparent to the final user!

The user will finally interact to the system through a UI that will use a RESTful API (_Server_) to expose properly the feature. All is read/stored to a document based database (_JsonDB_) and any possible special feature needed by some connector is bridged by the _Meta_ component that is queried by the _Server_, again, through a RESTful API.
### Consideration
The discussion provided in this document is leaving other details (such as deployment, logging, authorization, ...) on purpose as it wants to be a first and quick approach to the architecture behind Syndesis.
2 changes: 1 addition & 1 deletion content/docs/cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ sidebar: "sidenav"
menu:
sidenav:
name: CLI
weight: 1
weight: 3
parent: Developer Docs
toc: true
weight: 10
Expand Down
2 changes: 1 addition & 1 deletion content/docs/connectors.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ sidebar: "sidenav"
menu:
sidenav:
name: Connectors development
weight: 3
weight: 4
parent: Developer Docs
toc: true
weight: 20
Expand Down
2 changes: 1 addition & 1 deletion content/docs/development.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ sidebar: "sidenav"
menu:
sidenav:
name: Development
weight: 2
weight: 1
parent: Developer Docs
toc: true
weight: 20
Expand Down
1 change: 1 addition & 0 deletions static/images/orig/syndesis.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<mxfile modified="2019-09-16T08:36:28.831Z" host="www.draw.io" agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0" etag="8TtRYvbg-hwbDx3wgScK" version="11.2.8" type="device" pages="1"><diagram id="51zQ_57XNLdiDDOW-gwH" name="Page-1">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</diagram></mxfile>
Binary file added static/images/syndesis_be_architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.