Vermillion is a high performance, scalable and secure IoT middleware platform developed using Vertx. It is a middleware stack which focuses primarily on the compute layer in a smart city IoT deployment. One of the chief goals of Vermillion is to enable seamless data exchange between data producers and consumers in a smart city.
The HTTPS APIs are written using vertx. The datastore used is elasticsearch, and the authentication and authorisation mechanism is using the datasetu auth server. A detailed architecture diagram for developers is in the works.
Performance has been the key consideration while developing Vermillion. Initial results show that the middleware was able to handle at least 130,000
HTTPS requests/sec across 18
compute nodes. Computing Vermillion's performance under various conditions is still ongoing.
A detailed white paper on this project published in Arxiv can be found here. The code for this setup and tests can be found in release 0.2.0. The following is a graph depicting results from the 18-node test:
Install the following dependencies:
- docker
- docker-compose
- maven
To run tests
- python3
- behave
Package the API server into a fat jar:
cd vermillion/api-server mvn clean package
Similarly package the authenticator
cd authenticator mvn clean package
Once the jar files are ready
cd setup ./install
To run tests
cd tests behave
Work on API documentation, developer docs and a stable release is ongoing