Documentation to understand the Shuffle architecture and thoughts behind choices. Important to understand if you want to contribute.
With a long-term vision of having an Open(API) ecosystem that's that's a hybrid model between cloud and on-prem, this document will be a guide to understand some underlying aspects of Shuffle and how things fit together.
Shuffle uses existing, well established frameworks to help the Security community move forward, rather than just increase complexity. Here's a
The fundamental building blocks of Shuffle are all designed to be modular Docker images, meaning they can run separately in different environments. The list below contains all the necessary parts execute a workflow. In case you want to contribute, I've added the programming languages as well.
The reason behind the usage of Golang is simple: Stability. Bash scripts and Python are prone to crashing, while Golang is fun, stable and easy to understand.
|Frontend||ReactJS||Cytoscape graphs & Material design|
|Backend||Golang||Rest API that connects all the different parts|
|Database||Google Datastore||Has all non-volatile information. Will probably move to elastic or similar.|
|Orborus||Golang||Runs workers in a specific environment to connect locations|
|Worker||Golang||Deploys Apps to run Actions defined in a workflow|
|app sdk||Python||Used by Apps to talk to the backend|