|
1 |
| -<h1 align="center">Maestro</h1> |
2 |
| -<p align="center">Organize geographically distributed data stored in Song and Score, with a single, configurable index.</p> |
3 |
| -<p align="center"> |
4 |
| - <a href="https://github.com/overture-stack/maestro"> |
5 |
| - <img alt="Under Development" |
6 |
| - title="Under Development" |
7 |
| - src="http://www.overture.bio/img/progress-horizontal-RC.svg" width="320" /> |
8 |
| - </a> |
9 |
| -</p> |
10 |
| - |
11 |
| -[](https://maestro-overture.readthedocs.io/en/latest/?badge=latest) |
12 |
| -[](http://slack.overture.bio) |
13 |
| - |
14 |
| -## Documentation: |
15 |
| -Documentation is hosted on : |
16 |
| -- github pages: https://overture-stack.github.io/maestro/ |
17 |
| -- read the docs: https://maestro-overture.readthedocs.io/en/latest/ (using mkdocs https://docs.readthedocs.io/en/stable/intro/getting-started-with-mkdocs.html) |
18 |
| - |
19 |
| -## Introduction |
20 |
| -Meastro was created to enable genomic researchers to enhance their Overture SONGs by building indexes, elastic search |
21 |
| -by default, that makes searching Analyses and Studies much more powerful and easier. |
22 |
| - |
23 |
| -## TLDR; |
24 |
| -Skip down to the How to section it has the steps to get started. |
25 |
| - |
26 |
| -### Features: |
27 |
| -- Supports indexing from multiple metadata repositories (SONG). |
28 |
| -- Multiple indexing requests: analysis, study, full repository. |
29 |
| -- Event driven indexing. |
30 |
| - - Integration with SONG to index published analysis and delete suppressed / unpublished analyses |
31 |
| -- Ability to Exclude analysis based on different Ids: Study, Analysis, Donor, Sample Or file. |
32 |
| -- Slack web hook integration |
33 |
| - |
34 |
| -### Design Goals: |
35 |
| -- Reactive |
36 |
| - - Event driven |
37 |
| - - Elastic |
38 |
| - - Resiliency & Fault tolerance |
39 |
| -- Failure audit |
40 |
| - - Dead letters queue for faulty messages to be retried later and reviewed. |
41 |
| - - Human readable Error log |
42 |
| -- Runtime configurability |
43 |
| -- Extendable: separate domain from infrastructure & configuration |
44 |
| - |
45 |
| -## Technologies & libraries: |
46 |
| -- Java 11 - OpenJDK 11 |
47 |
| -- Maven 3 (YOU NEED MAVEN 3.5+, if you don't want to use the wrapper or your IDE points to older version) |
48 |
| -- lombok |
49 |
| -- Spring boot 2 |
50 |
| - - Spring webflux & project reactor |
51 |
| - - Spring retry |
52 |
| - - Spring Cloud |
53 |
| - - Streams (for Kafak integration) |
54 |
| - - config client |
55 |
| - - Spring boot admin + client |
56 |
| -- Elasticsearch 7+ |
57 |
| -- Apache Kafka |
58 |
| -- resilience4j: |
59 |
| - - retry module |
60 |
| -- vavr |
61 |
| -- Testing libraries: |
62 |
| - - Junit 5 |
63 |
| - - Mockito 2 |
64 |
| - - testcontainers |
65 |
| - - Spring cloud contract wiremock |
66 |
| - |
67 |
| -## Structure |
68 |
| -The project is following the ports/adapters architecture, where the domain is completely isolated from external infrastructure |
69 |
| -and frameworks. |
70 |
| -- Two maven modules: |
71 |
| - - maestro domain |
72 |
| - - the core features and framework independent logic that is portable and contains the main indexing, rules, notifications |
73 |
| - logic as specified by the business features. Has packages like: |
74 |
| - - entities : contains POJOs and entities |
75 |
| - - api: the logic that fulfills the business features |
76 |
| - - ports: contains the interfaces needed by the api to communicate with anything outside the indexing context. |
77 |
| - |
78 |
| - - maestro app: |
79 |
| - - The main runnable (spring boot app) |
80 |
| - - Contains the infrastructure and adapters (ports implementations) that is needed to connect the domain |
81 |
| - with the outside world like elastic search, song web clients, configuration files etc. |
82 |
| - It also has the Spring framework configurations here to keep technologies outside of the domain. |
83 |
| - |
84 |
| -# Dependencies: |
85 |
| -To Successfully run Maestro (as is) you need the following services to be deployed and configure it to use them: |
86 |
| -- [Elasticsearch](https://www.elastic.co/products/elasticsearch) |
87 |
| -- [Apache Kafka](https://kafka.apache.org/) |
88 |
| -- [SONG](https://github.com/overture-stack/SONG) |
89 |
| - |
90 |
| -you can check the sample docker compose files under `./run/docker-compose` for containerized versions of elastic & kafka. |
91 |
| -for SONG please check the SONG github repo [here](https://github.com/overture-stack/SONG/tree/develop/dev) |
92 |
| -on how to run it with docker. Or you can run it as jar. |
93 |
| - |
94 |
| -## How to: |
95 |
| -- Swagger API access: |
96 |
| - - localhost:11235/api-docs |
97 |
| - |
98 |
| -Note: if you don't/can't use the Makefile, look inside it for the shell commands and replicate them. |
99 |
| -- Compile: `make` |
100 |
| -- Test: `make test` |
101 |
| -- Package: `make package` |
102 |
| -- Run: |
103 |
| - - Source: |
104 |
| - - Development: |
105 |
| - 1. `make docker-start-dev` starts the infrastructure containers |
106 |
| - - kafka |
107 |
| - - elastic search |
108 |
| - - other helper tools if you want like kafka rest proxy |
109 |
| - 2. `make run` OR start maestro (Maestro.java) from the IDE/cmd as a java application |
110 |
| - - Docker: |
111 |
| - - Repository: https://hub.docker.com/r/overture/maestro |
112 |
| - - `make docker-start` starts maestro from a docker image along with all needed infrastructure |
113 |
| - - helm: |
114 |
| - - Repository: https://overture-stack.github.io/charts-server/ |
115 |
| - - see : https://github.com/overture-stack/helm-charts for instructions and the maestro folder for examples |
116 |
| - |
| 1 | +# Maestro |
| 2 | + |
| 3 | +Maestro enables researchers to enhance their Overture SONG deployments by building powerful search indexes for Analyses and Studies. It organizes geographically distributed data stored in Song and Score into a single, configurable index. |
| 4 | + |
| 5 | +</br> |
| 6 | + |
| 7 | +> |
| 8 | +> <div> |
| 9 | +> <img align="left" src="ov-logo.png" height="60"/> |
| 10 | +> </div> |
| 11 | +> |
| 12 | +> *Maestro is part of [Overture](https://www.overture.bio/), a collection of open-source software microservices used to create platforms for researchers to organize and share genomics data.* |
| 13 | +> |
| 14 | +> |
| 15 | +
|
| 16 | +## Documentation |
| 17 | + |
| 18 | +Technical resources for those working with or contributing to the project are available from our official documentation site, the following content can also be read and updated within the `/docs` folder of this repository. |
| 19 | + |
| 20 | +- **[Maestro Overview](https://docs.overture.bio/docs/core-software/Maestro/overview)** |
| 21 | +- [**Setting up the Development Enviornment**](https://docs.overture.bio/docs/core-software/Maestro/setup) |
| 22 | +- [**Common Usage Docs**](https://docs.overture.bio/docs/core-software/Maestro/setup) |
| 23 | + |
| 24 | +## Development Environment |
| 25 | + |
| 26 | +- [Java 11 (OpenJDK)](https://openjdk.java.net/projects/jdk/11/) |
| 27 | +- [Maven 3.5+](https://maven.apache.org/) (or use provided wrapper) |
| 28 | +- [VS Code](https://code.visualstudio.com/) or preferred Java IDE |
| 29 | +- [Docker](https://www.docker.com/) Container platform |
| 30 | + |
| 31 | +## Support & Contributions |
| 32 | + |
| 33 | +- For support, feature requests, and bug reports, please see our [Support Guide](https://docs.overture.bio/community/support). |
| 34 | +- For detailed information on how to contribute to this project, please see our [Contributing Guide](https://docs.overture.bio/docs/contribution). |
| 35 | + |
| 36 | +## Related Software |
| 37 | + |
| 38 | +The Overture Platform includes the following Overture Components: |
| 39 | + |
| 40 | +</br> |
| 41 | + |
| 42 | +|Software|Description| |
| 43 | +|---|---| |
| 44 | +|[Score](https://github.com/overture-stack/score/)| Transfer data to and from any cloud-based storage system | |
| 45 | +|[Song](https://github.com/overture-stack/song/)| Catalog and manage metadata associated to file data spread across cloud storage systems | |
| 46 | +|[Maestro](https://github.com/overture-stack/maestro/)| Organizing your distributed data into a centralized Elasticsearch index | |
| 47 | +|[Arranger](https://github.com/overture-stack/arranger/)| A search API with reusable search UI components | |
| 48 | +|[Stage](https://github.com/overture-stack/stage)| A React-based web portal scaffolding | |
| 49 | +|[Lyric](https://github.com/overture-stack/lyric)| A model-agnostic, tabular data submission system | |
| 50 | +|[Lectern](https://github.com/overture-stack/lectern)| Schema Manager, designed to validate, store, and manage collections of data dictionaries. | |
| 51 | + |
| 52 | +If you'd like to get started using our platform [check out our quickstart guides](https://docs.overture.bio/guides/getting-started) |
| 53 | + |
| 54 | +## Funding Acknowledgement |
| 55 | + |
| 56 | +Overture is supported by grant #U24CA253529 from the National Cancer Institute at the US National Institutes of Health, and additional funding from Genome Canada, the Canada Foundation for Innovation, the Canadian Institutes of Health Research, Canarie, and the Ontario Institute for Cancer Research. |
0 commit comments