Distributed data storage, querying and coordination system, based on OpenFaaS and MongoDB.
This is a project by students of the Technical University of Berlin, completed as part of the Distributed Systems course. Syncmesh tackles the topics of Distributed Storage, Function-as-a-Service, and Edge Computing. The goal was to evaluate the performance of a custom solution against traditional centralized and distributed storage use cases. Read more about it in our Syncmesh Wiki or have a look at our Paper. You can find more information from our analysis in the Benchmark Data Repository or in the Github Actions.
General/Recommended:
For local deployment:
For remote deployment:
This README only provides a short overview of the project and some tools/scripts. For an extensive documentation on Syncmesh, read the wiki: Syncmesh Wiki or have a look into the README of the folders.
To just run a Benchmark follow this short guide:
- Fork this Repository
- Provide
GCE_CREDENTIALSwith the base64 ofcredentials.jsonas seen here (also change the project-id). - Run any of the actions labeled "Benchmark".
functionscontains the syncmesh function with all relevant functionality and deployment .yml filesinfrastructurecontains all terraform cloud infrastructure setup and test scripts, as well as configurations for the different scenariosmongo_event_listenercontains the event listener that accompanies the MongoDB for event-driven infrastructure. It can be either launched as a standalone script or inside a docker containerevaluationincludes evaluation jupyter notebooks with relevant graphs and performance comparisonslocal_setup_scriptscontains scripts for local setup and deploymentminikube_node_setup.sh: sets up an openfaas instance in the minikube cluster and also mongodb in the same namespaceget_openfaas_password.sh: fetches saves, and outputs the openfaas gateway passwordfunctions_deployer.sh: deploys functions
# Find out the password or login
sudo cat /var/lib/faasd/secrets/basic-auth-password
sudo cat /var/lib/faasd/secrets/basic-auth-password | faas-cli login -s
# get logs
sudo journalctl -f | grep mongoInfrastructure:
- Docker
- faasd
- Terraform
- Kubernetes
- Google Cloud
https://willschenk.com/articles/2021/setting_up_services_with_faasd/
