A Serverless Platform to interface with Virtines. In this platform, users can register Javascript and C functions, which produces requests to Virtines endpoint. These requests are handled by a concurrent server which runs each serverless function in a distinct virtine (rather than a container) by leveraging the Wasp runtime API.
The system is inspired from open-source FaaS platform OpenWhisk. The system components are as follows:
There is also a standalone tool available to test out Vespid which starts up a UI (taken from openwhisk). Steps to install and use are mentioned in the section Installation-steps
- create
- get
- delete
- invoke
- list
- update
- CPU usage
- Memory usage
- Execution time
- Active instances
- Hits and misses
- Cold start Latency
- workload generator using locust
- invocations
- cache hits and misses
- working on
- RESTFUL calls using noth GUI and CLI
The following packages are necessary to get Wasp running:
- Install Wasp
- Checkout to js branch and follow the required steps
- Also, run the command:
make js
- clone vespid and install requirements
git clone [email protected]:sblayush/vespid.git pip3 install -r requirements.txt
- copy and update config/appConfig.ex.dat to config/appConfig.dat with the required values, example number of workers, db_urls. For example:
{ "port": 8989, "host": "0.0.0.0", "platform": "PROD", "reload": false, "n_workers": 2, "mongo_url": "mongodb://<ip>:<port>/" }
- copy and update config/paths.ex.py to config/paths.py with the required values. For example:
wasp_shared_ob_path = "/home/<user>/wasp/build/libwasp.so" wasp_js_shared_ob_path = "/home/<user>/wasp/build/libwasp_js_x.so" js_exec_path = "/home/<user>/wasp/build/test/js" db_type = "" db_file_path = ""
- expose port (8989 by default)
sudo ufw allow <port>/tcp
Steps to start the Server:
cd vespid
python3 core/standalone/api/app.py
To view webpage:
<host_ip>:8989/
To view swagger documentation:
<host_ip>:8989/docs
- Kafka Queue
- Redis in-memory database
- Authentication + session
- CLI executible
- Testing
- Monitoring + Dashboard
- Error Handling
- Better Logging
- Deployment using Docker
- Better steps to deploy standalone
- Trigger using events other than HTTP
- By default running on port 8989
- Still under development