Skip to content

Homework 1

Shubham Thakur edited this page Feb 8, 2022 · 4 revisions

Introduction

Dexlab is a tool that helps researchers study reflectivity patterns for a given date. Researchers can interact with the tool with a web app. The researcher has to input a date and a radar ID (from the available radars on the day). The researcher sees a plot of reflectivity patterns if everything goes right.

Sample plot

Napkin Diagram

Napkin Diagram

Architecture

Architecture

Dexlab is composed of three microservices, viz., gateway, ingestor, ORM. It uses MYSQL for storing data and MYSQL is run in a separate container. Each microservice is responsible for specific functionalities.

Gateway

This is a Node.js app that serves the static content for the webapp and relays requests to other microservices.

Ingestor

This is a Flask app that interacts with NEXRAD's AWS S3 bucket. It provides data about radar availability and generates reflectivity plots for the given day.

ORM

This is a Spring boot application that is responsible for interacting with the database. This is the only service that interacts with Database.

Deployment

The services can be started by docker-compose. This is the recommended way to start the services:

Start the services:

$ docker-compose up

Documentation:

Documentation about the respective services can be found in their respective branches.

OpenAPI compliant API docs are served on the following URL.

Gateway: http://localhost:3001/apidocs

ORM: http://localhost:8000/swagger-ui.html

Ingestor: http://localhost:5000/apidocs

Automated Builds

Automated builds have been configured for each service using Github Actions.

Release Branches

Ingestor: https://github.com/airavata-courses/dexlab/tree/release_ingestor

Gateway: https://github.com/airavata-courses/dexlab/tree/release_gateway_services

ORM: https://github.com/airavata-courses/dexlab/tree/release_ORM