/vermillion

A high-performance, scalable middleware for time-series and static-file data exchange.

Primary LanguageHTMLOtherNOASSERTION

vermillion_logo

github-workflow Codacy Badge coverage license dependabot docker-build-status docker-build-automation gitter

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.

Architecture

images/vermillion-arch.png

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

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:

images/12-nodes.png

Quickstart

  1. Install the following dependencies:

    • docker
    • docker-compose
    • maven

    To run tests

    • python3
    • behave
  2. Package the API server into a fat jar:

    cd vermillion/api-server
    mvn clean package
  3. Similarly package the authenticator

    cd authenticator
    mvn clean package
  4. Once the jar files are ready

    cd setup
    ./install
  5. To run tests

    cd tests
    behave

Work on API documentation, developer docs and a stable release is ongoing