Giter Club home page Giter Club logo

maestro's Introduction

Maestro

Organize geographically distributed data stored in Song and Score, with a single, configurable index.

Under Development

Documentation Status Slack

Documentation:

Documentation is hosted on :

Introduction

Meastro was created to enable genomic researchers to enhance their Overture SONGs by building indexes, elastic search by default, that makes searching Analyses and Studies much more powerful and easier.

TLDR;

Skip down to the How to section it has the steps to get started.

Features:

  • Supports indexing from multiple metadata repositories (SONG).
  • Multiple indexing requests: analysis, study, full repository.
  • Event driven indexing.
    • Integration with SONG to index published analysis and delete suppressed / unpublished analyses
  • Ability to Exclude analysis based on different Ids: Study, Analysis, Donor, Sample Or file.
  • Slack web hook integration

Design Goals:

  • Reactive
    • Event driven
    • Elastic
    • Resiliency & Fault tolerance
  • Failure audit
    • Dead letters queue for faulty messages to be retried later and reviewed.
    • Human readable Error log
  • Runtime configurability
  • Extendable: separate domain from infrastructure & configuration

Technologies & libraries:

  • Java 11 - OpenJDK 11
  • Maven 3 (YOU NEED MAVEN 3.5+, if you don't want to use the wrapper or your IDE points to older version)
  • lombok
  • Spring boot 2
    • Spring webflux & project reactor
    • Spring retry
    • Spring Cloud
      • Streams (for Kafak integration)
      • config client
    • Spring boot admin + client
  • Elasticsearch 7+
  • Apache Kafka
  • resilience4j:
    • retry module
  • vavr
  • Testing libraries:
    • Junit 5
    • Mockito 2
    • testcontainers
    • Spring cloud contract wiremock

Structure

The project is following the ports/adapters architecture, where the domain is completely isolated from external infrastructure and frameworks.

  • Two maven modules:
    • maestro domain

      • the core features and framework independent logic that is portable and contains the main indexing, rules, notifications logic as specified by the business features. Has packages like:
        • entities : contains POJOs and entities
        • api: the logic that fulfills the business features
        • ports: contains the interfaces needed by the api to communicate with anything outside the indexing context.
    • maestro app:

      • The main runnable (spring boot app)
      • Contains the infrastructure and adapters (ports implementations) that is needed to connect the domain with the outside world like elastic search, song web clients, configuration files etc. It also has the Spring framework configurations here to keep technologies outside of the domain.

Dependencies:

To Successfully run Maestro (as is) you need the following services to be deployed and configure it to use them:

you can check the sample docker compose files under ./run/docker-compose for containerized versions of elastic & kafka. for SONG please check the SONG github repo here on how to run it with docker. Or you can run it as jar.

How to:

  • Swagger API access:
    • localhost:11235/api-docs

Note: if you don't/can't use the Makefile, look inside it for the shell commands and replicate them.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.